Nginx высокое upstream_connect_time

Nginx высокое upstream_connect_time

У меня настроен Docker с Nginx в качестве обратного прокси для сервисов Tomcat. При большой нагрузке (тестирование) я получаю скачки времени отклика.

Оказывается, один экземпляр сервиса Tomcat без Nginx работает лучше, чем несколько сервисов с Nginx перед ними, так что проблема между Nginx и Tomcats. При дальнейшем осмотре я определил, что время upstream_connect_time Nginx увеличивается до 3 с, иногда даже до 7 с.

Я пробовал играть с keepalive, keepalive_connections, proxy_connect_timeout, worker_processes и worker_connections на Nginx, но ничего не помогает. Далее в моем списке — попробовать более высокие значения для Tomcat max_connections.

В чем может быть причина высокого значения upstream_connect_time?

решение1

Я решил эту проблему, добавив

proxy_http_version 1.1; 
proxy_set_header Connection ""; 

Без них keepalive ничего не значит, поэтому моя настройка параметра keepalive не дала никакого эффекта.

Если я правильно понимаю, http 1.1 позволяет использовать одно и то же соединение для одновременных ответов и запросов, а добавление Connection "" в заголовок используется для того, чтобы соединение оставалось открытым.

Проще говоря, ранее я говорил Nginx, что ему разрешено использовать сообщения keepalive в восходящем направлении, но я не настроил его так, чтобы он знал, как поддерживать соединение открытым (тут есть http 1.1 и заголовок Connection), поэтому сообщения keepalive не использовались.

В конце концов, при правильной настройке этих двух параметров значение keepalive 500 оказалось достаточным для «нормальной» производительности, но значение keepalive 1000 было сохранено для учета ситуаций с высоким трафиком.

Связанный контент