Я использую несколько серверов fastcgi за Nginx. Я запускаю 3 рабочих Nginx и 6 серверов fastcgi в качестве восходящих бэкэндов.
Когда я запускаю нагрузочные тесты из 1 запроса в секунду, я ясно вижу, что в среднем ответ составляет 0,1 секунды, но время от времени есть ответы 3,1 секунды.
Это подозрительно детерминированное число, и время от времени оно случается даже при очень небольших нагрузках. И процессор, и память не имеют никакого значения.
Есть идеи, откуда эта задержка? Есть предложения, как это отладить?
Большое спасибо, Барри.
3 секунды - это тайм-аут tcp, если сервер не отвечает. Проверьте журналы nginx на наличие таймаутов подключения.
Вы используете параллельные запросы? Если да, см. Ниже. Если нет, я бы посоветовал заглянуть на ваши серверные серверы. Возможно, в вашей среде есть какие-то инструменты профилирования, которые вы можете использовать, чтобы видеть время от получения запроса до отправки ответа.
Если вы работаете в параллельном режиме: если все ваши 6 серверов fastcgi заняты обслуживанием запросов, следующий запрос должен ждать, пока один сервер fastcgi не будет готов его обработать. Если запросы, которые вы делаете в своих испытаниях, имеют в чем-то схожую природу и одинаковое время ответа, вы будете снова и снова видеть одни и те же шаблоны.
Какой у вас бэкэнд? Он резьбовой?
Вот что я предлагаю:
Кстати, используйте только один воркер nginx, вам не нужно больше одного, если у вас нет большого количества трафика.