Welcome! Log In Create A New Profile

Advanced

Re: upstream fastcgi keepalive. Таинственные 40мс

Panichev Oleg
September 06, 2020 05:22AM
Спасибо, Максим!


Да, тестово получилось повторить, дело действительно в delayed Ack.



On 9/4/20 6:38 PM, Maxim Dounin wrote:
> Hello!
>
> On Fri, Sep 04, 2020 at 01:33:18PM +0300, Panichev Oleg wrote:
>
>> При включении keepalive в секции upstream для fastcgi серверов
>> upstream_response_time увеличивается на 40мс при нагрузке. Это
>> достаточно четкий шаг,
>> реальный ответ бэкендову нас - единицы миллисекунд, но nginx
>> показывает на 40мс больше.  Apache benchmark tool показывает
>> тоже самое.
>>
>> С чем связана именно такая задержка? Изменения таймаутов,
>> количества реквестов на эти 40мс не влияют, в логе всегда либо
>> единицы миллисекунд (время ответа
>> для простых соединений, без включения keepalive), либо сразу
>> 40мс+время простого запроса. Есть ли способ измерять реальное
>> время ответа от бэкенда при
>> использовании keepalive?
> Смотрите tcpdump между nginx'ом и бэкендом, возможно станет
> понятнее, что происходит. Возможные направления, куда, как мне
> кажется, имеет смысл копать:
>
> 1. Keepalive в случае FastCGI означает, что nginx'у надо
> дожидаться не просто закрытия stdout-потока, но и записи
> FCGI_END_REQUEST. Если вдруг бэкенд её посылает с задержкой - это
> может быть причиной.
>
> 2. FastCGI - сложный протокол, и бэкенд может наступать на
> классическую проблему delayed ack vs. Nagle. Ну и это хорошо
> сочетается с предыдущим пунктом, скажем - если запись
> FCGI_END_REQUEST бэкенд шлёт отдельной записью в сокет, то реально
> отправится она только по получению ack'а на предыдущую запись, а
> тот в свою очередь придёт только по истечению таймаута delayed
> ack. Обычно для тестов проще всего отключить delayed ack
> глобально на машине, и посмотреть, не починится ли. Лечить
> правильно - либо грамотной работой с сокетами (не допускать
> паттерна write+write+read), либо выставлением на сокет
> TCP_NODELAY.
>
> Ну и да, гугл подсказывает, что 40ms - задержка delayed ack
> по умолчанию на линуксе, так что скорее всего оно.
>
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

upstream fastcgi keepalive. Таинственные 40мс Attachments

Panichev Oleg September 04, 2020 06:34AM

Re: upstream fastcgi keepalive. Таинственные 40мс

imsystem September 04, 2020 07:08AM

Re: upstream fastcgi keepalive. Таинственные 40мс

Panichev Oleg September 04, 2020 07:24AM

Re: upstream fastcgi keepalive. Таинственные 40мс

fox September 04, 2020 08:30AM

Re: upstream fastcgi keepalive. Таинственные 40мс

Panichev Oleg September 04, 2020 08:46AM

Re: upstream fastcgi keepalive. Таинственные 40мс

Maxim Dounin September 04, 2020 11:40AM

Re: upstream fastcgi keepalive. Таинственные 40мс

Panichev Oleg September 06, 2020 05:22AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 66
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready