Re: msec в заголовке
Hello! On Fri, Sep 16, 2022 at 06:18:53AM -0400, opan wrote: > Проксируя запросы на fastcgi-бекенд, передаем в одном из заголовков $msec. > При этом приложение, сравнивая время, полученное в заголовке, и настоящее > для него, дает аномальный дифф - до 40мс внутри локалки, а иногда и > отрицательное, до -5мс. > > Внутри локальной сети пакеты бегают быстро - от 1 до 7мс, resolver_timeout > не задан, ntp на сервере с nginx и бекенде синхронизирован (разница с > ntp-сервером на каждом из серверов в пределах 1мс). > > Пытаемся разобраться и возник вопрос, какое время в таком случае (при > прокидывании в заголовке) показывает $msec? Момент получения запроса от > клиента , момент коннекшна к бекенду, момент соединения с бекендом или еще > какое-то? Как уже ответил Сергей, время - на момент формирования заголовков запроса к бэкенду, то есть после получения клиентского запроса, но до попыток установления соединения с бэкендом (и до резолвинга, но в вашем случае его вроде как быть не должно). Но тут ещё важно учитывать, что время в nginx'е обновляется только в начале каждой итерации цикла обработки событий, в момент получения из ядра очередной порции событий. Соответственно если какой-то из обрабатываемых в той же итерации запросов пошёл, например, на диск - он может легко задержать обработку миллисекунд на десять (ибо seek time), а если таких запросов будет два - то и на все двадцать, и так далее. То же относится и к другим блокирующимся операциям. Всё это может давать достаточно большую положительную разницу с текущим временем в приложении, даже если собственно установление соединения и отправка конкретного запроса произошла быстро. Откуда в вашем случае отрицательная разница - вопрос, вероятно, к приложению. -- Maxim Dounin http://mdounin.ru/ ___ nginx-ru mailing list -- nginx-ru@nginx.org To unsubscribe send an email to nginx-ru-le...@nginx.org
Re: Отсутствует запрос в access логе
Большое пролетарское спасибо, Максим! Судя по всему, виновником ситуации был недостаточный размер значения http2_max_field_size директивы (client exceeded http2_max_field_size limit while processing HTTP/2 connection). После того, как удвоили значение (до 8к), статус 000 исчез в логе прокси. Судя по всему, это CloudFlare шлет такие заголовки, но без понижения уровня логгирования понять это было затруднительно. вт, 13 сент. 2022 г. в 23:31, Maxim Dounin : > Hello! > > On Tue, Sep 13, 2022 at 01:07:29PM +0300, Igor Savenko wrote: > > > Большое спасибо! Да, включен http/2 и на прокси, и на application > сервере. > > Но если бы имела место ситуация с закрытием соединения, то прокси должен > > был бы ругаться в логах первым, а у прокси в error.log все чисто. На > > application сервере включен rate limit, и я где-то читал, что в старых > > версиях nginx мог отдавать в логе нули если запросы попали под > > rate-лимитирование. Воспроизвести, однако, пока не удалось -- ожидаемо > > отдавался код 503. > > Судя по пустому значению $request - заголовки запроса ещё не > получены от клиента, соответственно до application-сервера такой > запрос точно ещё не дошёл. Смотреть имеет смысл только и > исключительно на proxy, с которого access-лог. > > Если в error.log на proxy-сервере при этом всё чисто, то я бы > начал с проверки установленного уровня логгирования ошибок. > Обсуждаемые сообщения должны быть на уровне info, то есть они > достаточно низкоуровневые. Вероятнее всего уровень логгирования > установлен выше, и сообщения на уровне info туда просто не > попадают. > > -- > Maxim Dounin > http://mdounin.ru/ > ___ > nginx-ru mailing list -- nginx-ru@nginx.org > To unsubscribe send an email to nginx-ru-le...@nginx.org > ___ nginx-ru mailing list -- nginx-ru@nginx.org To unsubscribe send an email to nginx-ru-le...@nginx.org
Re: msec в заголовке
> On 16 Sep 2022, at 14:18, opan wrote: > > Всем привет. > > > Проксируя запросы на fastcgi-бекенд, передаем в одном из заголовков $msec. > При этом приложение, сравнивая время, полученное в заголовке, и настоящее > для него, дает аномальный дифф - до 40мс внутри локалки, а иногда и > отрицательное, до -5мс. > > Внутри локальной сети пакеты бегают быстро - от 1 до 7мс, resolver_timeout > не задан, ntp на сервере с nginx и бекенде синхронизирован (разница с > ntp-сервером на каждом из серверов в пределах 1мс). > > Пытаемся разобраться и возник вопрос, какое время в таком случае (при > прокидывании в заголовке) показывает $msec? Момент получения запроса от > клиента , момент коннекшна к бекенду, момент соединения с бекендом или еще > какое-то? > > Ниже конфигурация локейшна с этой проблемой: > > >location = /x { >uninitialized_variable_warn off; > >set $max_chunk_size 10240; >set $max_body_size 524288; >rewrite_by_lua_file /etc/nginx/inflate_body.lua; >client_body_buffer_size 512k; > >fastcgi_pass x_all; >fastcgi_keep_conn on; >fastcgi_next_upstream off; >fastcgi_pass_request_headers off; >fastcgi_buffers 16 16k; >fastcgi_buffer_size 32k; > >fastcgi_param REQUEST_METHOD $request_method; >fastcgi_param CONTENT_TYPE $content_type; >fastcgi_param HTTPS $https if_not_empty; >fastcgi_param REMOTE_ADDR$remote_addr; >fastcgi_param REQUEST_RECEIVED_TIME$msec; [..] Переменная вычисляется при формировании заголовков запроса на бэкенд. Это происходит после вычитывания всех заголовков клиентского запроса и перед первой попыткой установки соединения с бэкендом. -- Sergey Kandaurov ___ nginx-ru mailing list -- nginx-ru@nginx.org To unsubscribe send an email to nginx-ru-le...@nginx.org
msec в заголовке
Всем привет. Проксируя запросы на fastcgi-бекенд, передаем в одном из заголовков $msec. При этом приложение, сравнивая время, полученное в заголовке, и настоящее для него, дает аномальный дифф - до 40мс внутри локалки, а иногда и отрицательное, до -5мс. Внутри локальной сети пакеты бегают быстро - от 1 до 7мс, resolver_timeout не задан, ntp на сервере с nginx и бекенде синхронизирован (разница с ntp-сервером на каждом из серверов в пределах 1мс). Пытаемся разобраться и возник вопрос, какое время в таком случае (при прокидывании в заголовке) показывает $msec? Момент получения запроса от клиента , момент коннекшна к бекенду, момент соединения с бекендом или еще какое-то? Ниже конфигурация локейшна с этой проблемой: location = /x { uninitialized_variable_warn off; set $max_chunk_size 10240; set $max_body_size 524288; rewrite_by_lua_file /etc/nginx/inflate_body.lua; client_body_buffer_size 512k; fastcgi_pass x_all; fastcgi_keep_conn on; fastcgi_next_upstream off; fastcgi_pass_request_headers off; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param HTTPS $https if_not_empty; fastcgi_param REMOTE_ADDR$remote_addr; fastcgi_param REQUEST_RECEIVED_TIME$msec; fastcgi_param REQUEST_URI$request_uri; fastcgi_param QUERY_STRING $query_string if_not_empty; fastcgi_param HTTP_REFERER $http_referer if_not_empty; fastcgi_param USER_AGENT $http_user_agent if_not_empty; fastcgi_param HTTP_COOKIE$http_cookie if_not_empty; fastcgi_connect_timeout 20ms; fastcgi_read_timeout 75ms; fastcgi_intercept_errors on; error_page 500 501 502 503 504 = $failover; error_log syslog:server=unix:/var/log/nginx_log_socket,facility=local7,tag=log_err,severity=info notice; access_log syslog:server=unix:/var/log/nginx_log_socket,facility=local7,tag=log_acc,severity=info ; } Буду рад советам, спасибо. -- Олег Posted at Nginx Forum: https://forum.nginx.org/read.php?21,295224,295224#msg-295224 ___ nginx-ru mailing list -- nginx-ru@nginx.org To unsubscribe send an email to nginx-ru-le...@nginx.org