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

Panichev Oleg panichev на rutarget.ru
Пт Сен 4 12:45:25 UTC 2020


Пинг в продакшн быстрый: rtt min/avg/max/mdev = 0.054/0.095/0.131/0.027 ms
Примеры, приведенные выше, вообще делаются на одном сервере (localhost:9000)

Протокол fastcgi.


On 9/4/20 3:29 PM, fox wrote:
> Пинг до сервера какой? Протокол http 1.1?
>
>
> 04.09.2020 18:22, Panichev Oleg пишет:
>> В данном случае, с пустым конфигом и php-fpm, зависимости либо нет, либо
>> она незаметна:
>>
>>
>> keepalive 1:
>>
>> Percentage of the requests served within a certain time (ms)
>>    50%      3
>>    66%      3
>>    75%     41
>>    80%     43
>>    90%     44
>>    95%     44
>>    98%     44
>>    99%     44
>>   100%     55 (longest request)
>>
>> keepalive 100:
>>
>>    50%      3
>>    66%      3
>>    75%      4
>>    80%     42
>>    90%     43
>>    95%     44
>>    98%     44
>>    99%     45
>>
>>   100%     47 (longest request)
>>
>>
>>
>> On 9/4/20 2:07 PM, Сергей Олегович wrote:
>>> Интересно, а есть ли зависимость между количеством keepalive и временем?
>>>
>>> пт, 4 сент. 2020 г. в 13:33, Panichev Oleg <panichev на rutarget.ru
>>> <mailto:panichev на rutarget.ru>>:
>>>
>>>      Добрый день.
>>>
>>>
>>>      При включении keepalive в секции upstream для fastcgi серверов
>>>      upstream_response_time увеличивается на 40мс при нагрузке. Это
>>>      достаточно четкий шаг, реальный ответ бэкендову нас - единицы
>>>      миллисекунд, но nginx показывает на 40мс больше.  Apache benchmark
>>>      tool
>>>      показывает тоже самое.
>>>
>>>      С чем связана именно такая задержка? Изменения таймаутов, количества
>>>      реквестов на эти 40мс не влияют, в логе всегда либо единицы
>>>      миллисекунд
>>>      (время ответа для простых соединений, без включения keepalive), либо
>>>      сразу 40мс+время простого запроса. Есть ли способ измерять реальное
>>>      время ответа от бэкенда при использовании keepalive?
>>>
>>>      Спасибо, ниже конфиги и результаты ab.
>>>
>>>
>>>      ===========================================================
>>>
>>>      Пробовал на свежем нджинксе и стартовой странице php-fpm:
>>>
>>>      Проверка с keepalive:
>>>
>>>           upstream sync {
>>>              server localhost:9000;
>>>              keepalive 8;
>>>           }
>>>
>>>      ..
>>>
>>>           location ~ \.php$ {
>>>               fastcgi_pass sync;
>>>               fastcgi_keep_conn on;
>>>      ...
>>>
>>>      Percentage of the requests served within a certain time (ms)
>>>         50%      3
>>>         66%      3
>>>         75%      4
>>>         80%     42
>>>         90%     43
>>>         95%     44
>>>         98%     44
>>>         99%     45
>>>        100%     52 (longest request)
>>>      ==========================
>>>
>>>      Без keepalive тот же апстрим:
>>>
>>>      Percentage of the requests served within a certain time (ms)
>>>         50%      1
>>>         66%      1
>>>         75%      1
>>>         80%      1
>>>         90%      1
>>>         95%      2
>>>         98%      2
>>>         99%      3
>>>        100%      7 (longest request)
>>>
>>>      Это повторяется на разных приложениях и разных фронтендах (см.
>>>      скриншот)
>>>
>>>
>>>
>>>      _______________________________________________
>>>      nginx-ru mailing list
>>>      nginx-ru на nginx.org <mailto: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
>> _______________________________________________
>> 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


Подробная информация о списке рассылки nginx-ru