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

Panichev Oleg panichev на rutarget.ru
Пт Сен 4 10:33:18 UTC 2020


Добрый день.


При включении 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)

Это повторяется на разных приложениях и разных фронтендах (см. скриншот)



----------- следущая часть -----------
Вложение не в текстовом формате было извлечено…
Имя: 2020-09-04_13-28.png
Тип: image/png
Размер: 10980 байтов
Описание: отсутствует
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20200904/88c12fed/attachment-0001.png>


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