Служба Java: что вызывает скачок времени отклика? - PullRequest
0 голосов
/ 22 мая 2018

У меня очень простой сервис Java REST.При меньших объемах трафика служба отлично работает с временем отклика ~ 1 мс и нулевым отставанием сервера.

Когда трафик превышает определенный порог, время отклика резко возрастает с 1 мс до 2,0 с, активируется http-очередь сеанса и открываетсяколичество файлов увеличивается, а сервер работает недопустимо.Я опубликовал график показателей типичного шестичасового окна, в котором трафик начинается с низкого уровня и выходит за пределы порога проблемы.

Есть идеи о том, что может быть причиной этого или как проводить дальнейшую диагностику?

cpu usage jvm memory usage open files jvm memory use by pool http response time http traffic level http sessions

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Обычный подход к диагностике - создать нагрузку с помощью JMeter и исследовать результаты с помощью Java VisualVM, анализатора памяти Eclipse и так далее.Я не знаю, пробовал ли ты это.

0 голосов
/ 22 мая 2018

Ваше веб-приложение будет использовать поток (заимствованный из пула потоков) для отправки серверу одного запроса.

При стрессовой нагрузке создается много потоков, если количество запросов превышает емкость пула, они должныочередь, ожидающая, пока поток снова не станет доступным из пула.

Если ваша служба работает недостаточно быстро (особенно если вы делаете IO - открыть файл), время ожидания увеличивается, что приводит к медленному ответу.

ЦП должен переключаться между многими потоками, следовательно, ЦП будет пиковым под нагрузкой.

Именно поэтому им требуется балансировка нагрузки и большое количество веб-приложений на сервере в качестве службы.Стрессовая нагрузка распределяется по многим веб-приложениям, которые улучшают работу конечного пользователя

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