Время обработки Tomcat мало, но nginx показывает, что оно большое - PullRequest
9 голосов
/ 11 июля 2019

У меня есть пять экземпляров tomcat за nginx.

Иногда nginx upstream_response_time очень большой, более 1 секунды, в то время как журнал локального доступа tomcat показывает, что время процесса составляет всего 50 мс (я использую %D для регистрации времени процесса).

Какая возможная причина и как это исправить?Не похоже, что сеть работает медленно, поскольку другие приложения работают быстро.

Обновление:

Кажется, что nginx upstream_response_time = %D + 1 sec.

Ответы [ 2 ]

2 голосов
/ 18 июля 2019

Моя гипотеза для вашего наблюдения - потери пакетов. Мне кажется, это наиболее вероятная проблема, поскольку вы говорите, что это происходит, когда их много.Чтобы проверить это, вы можете отслеживать трафик, например, с помощью tcpdump или iftop.Если вы работаете в Ubuntu, вы можете установить и запустить последний с

sudo apt-get install iftop
sudo iftop

. В Linux существует множество других решений для мониторинга сети, удивительный Wireshark работает навсе операционные системы.

Одной из причин потери пакетов могут быть коллизии, вы можете проверить это с помощью ifconfig [interface], если вы находитесь под Linux:

me@mymahine:~$ ifconfig eth1
eth1      Link encap:Ethernet  HWaddrf f:41:8d:ef:41:8d  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 <-------------------------- check here ---
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Включены ли Tomcats и Nginxта же физическая (или виртуальная) машина?

Дополнительная литература

1 голос
/ 21 июля 2019

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

См .: Как увеличить количество потоков в пуле потоков tomcat?

Измерение количества запросов в очереди для tomcat

Проверьте, можно ли увеличитьколичество потоков или уменьшите accept_count, но имейте в виду, что число других ресурсов, таких как соединения с базой данных, также может быть необходимо увеличить.Также имейте в виду, что больше потоков может означать больше конкуренции за ресурсы.

Возможно, стоит попытаться изменить параметры для этого.Обычно журнал доступа должен также показывать время обработки сообщения в очереди и , но я не уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...