msec в заголовке

2022-09-16 Пенетрантность opan
Всем привет.


Проксируя запросы на 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


Re: Таймауты proxy pass

2020-03-27 Пенетрантность opan
Добрый день!

1. В данном случае мы видели содержимое и ответ умещался в один пакет
2. У нас есть метрики на самом бэкенде, где мы засекаем время ответа. в 90%
оно составляет меньше <1 мс, в то время как 90 персентиль по логам нжинкса
получается 45мс.

Не может нджинкс возвращать неправильный upstream_response_time?


On 3/25/20 7:09 PM, Evgeniy Berdnikov wrote:
> On Wed, Mar 25, 2020 at 09:48:10AM -0400, opan wrote:
>> Добрый день.
>>
>> В продолжение изучения проблемы обнаружили что в логе нжинкса
>> upstream_response_time - 41ms, а этот же запрос, если смотреть tcpdump,
>> время ответа бэка меньше 1ms:
>>
>>
https://www.dropbox.com/s/04falc2m073jnf5/Screenshot%202020-03-25%2016.38.15.png?dl=0
>>
>>
>> Как такое может быть?
>
>  Ответ апстрима не обязательно помещается в один пакет, даже если у него
>  установлен флаг PSH. Если бы отображалось содержимое пакетов, то можно
>  было бы проверить, передан ли ответ полностью, а при наличии в дампе
>  ответных ACKов -- утверждать, что ответ получен сервером.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,287425,287480#msg-287480

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Таймауты proxy pass

2020-03-25 Пенетрантность opan
Добрый день.

В продолжение изучения проблемы обнаружили что в логе нжинкса
upstream_response_time - 41ms, а этот же запрос, если смотреть tcpdump,
время ответа бэка меньше 1ms:

https://www.dropbox.com/s/04falc2m073jnf5/Screenshot%202020-03-25%2016.38.15.png?dl=0


Как такое может быть?


On 23.03.2020 14:35, Илья Шипицин wrote:
> пара моментов
>
> 1) у вас proxy_pass на https, по крайней мере первоначальный хендшейк
может быть долгим (например, если клиент захочет сделать OCSP проверку).
выглядит так, как будто у вас
> должен быть кипэлайв до бекенда, поэтому это соображение должно касаться
только редких запросов
>
> 2) возможно, у вас работает буферизация запросов-ответов. попробуйте
"proxy_buffering off;" и "proxy_request_buffering off;" ?
>
> пн, 23 мар. 2020 г. в 14:01, opan :
>
> У нас есть одна площадка, нжинкс принимает запросы и проксирует на
бэкенд
> через fcgi_pass. В логах нжинса мы видим upstream_response_time 40мс.
> Появилась вторая площадка, мы принимаем там трафик и отправляем все
на
> первую площадку через proxy_pass. Так же логируем здесь
> upstream_reponse_time и наблюдаем очень большие значения. Мы ожидали,
что
> добавится просто летенси между новой и старой площадкой, плюс
какие-то
> небольшие накладные расходы nginx. Но это не так, в
upstream_response_time
> мы видим 130-150мс ( в 3.5 раз больше, чем на площадке 1). При этом,
если
> замерять время запросов от клиента, то total_time курла примерно
одинаков
> для обоих площадок. Как такое может быть? Почему в логах
> upstream_reponse_time больше в 3-4 раза, а время ответа при этом
практически
> не меняется?
>
> Вот фрагмент конфигурации, в которой проксируем:
>
>  location = /ххх {
>
> proxy_cache off;
> proxy_redirect off;
> proxy_pass_request_body on;
> proxy_pass_request_headers on;
> proxy_next_upstream off;
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_pass https://second.domain/xxx;
> proxy_http_version 1.1;
> proxy_set_header Connection "";
>
> }
>
> Posted at Nginx Forum:
https://forum.nginx.org/read.php?21,287422,287422#msg-287422
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,287425,287456#msg-287456

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Таймауты proxy pass

2020-03-23 Пенетрантность opan
1. Про ssl верно, мы замеряли сколько времени занимает установка соединения.
Это 20-30мс, не больше.
2. Пробовали, не помогает 

Во всем этом самое странное, что время ответа через прокси и напрямую
примерно одинаковое, хотя если верить upstream_response_time оно должно быть
сильно больше через прокси.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,287425,287428#msg-287428

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Таймауты proxy pass

2020-03-23 Пенетрантность opan
У нас есть одна площадка, нжинкс принимает запросы и проксирует на бэкенд
через fcgi_pass. В логах нжинса мы видим upstream_response_time 40мс. 
Появилась вторая площадка, мы принимаем там трафик и отправляем все на
первую площадку через proxy_pass. Так же логируем здесь
upstream_reponse_time и наблюдаем очень большие значения. Мы ожидали, что
добавится просто летенси между новой и старой площадкой, плюс какие-то
небольшие накладные расходы nginx. Но это не так, в upstream_response_time
мы видим 130-150мс ( в 3.5 раз больше, чем на площадке 1). При этом, если
замерять время запросов от клиента, то total_time курла примерно одинаков
для обоих площадок. Как такое может быть? Почему в логах
upstream_reponse_time больше в 3-4 раза, а время ответа при этом практически
не меняется?

Вот фрагмент конфигурации, в которой проксируем:

 location = /ххх {
   
proxy_cache off;
proxy_redirect off;
proxy_pass_request_body on;
proxy_pass_request_headers on;
proxy_next_upstream off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://second.domain/xxx;
proxy_http_version 1.1;
proxy_set_header Connection "";

}

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,287422,287422#msg-287422

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

server_name_in_redirect?

2019-11-01 Пенетрантность opan
Добрый день. 

Есть следующая конфигурация сервера:

server {
listen   80; ## listen for ipv4
listen   443 default_server ssl;

server_name localhost;
server_name_in_redirect off;

location = /loc {
  if ($scheme = http) {
return 301 https://$server_name$request_uri;
  }

...
Мы ожидаем что все запросы, которые попадают в этот пустой server_name,
будут перенаправляться на https://$host/loc/$request_uri, так как есть
директива:server_name_in_redirect off; Однако запросы перенаправляются
на https://localhost/loc/$request_uri

Из документации такое поведение не удалось понять. Можете пояснить,
пожалуйста, как правильно пользоваться это директивой?

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,286073,286073#msg-286073

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru