Почему веб-сайт SpringBoot отказывается от подключения клиентов после того, как несколько минут начинается нагрузочный тест Jmeter? - PullRequest
0 голосов
/ 02 января 2019

Это веб-сайт SpringBoot, развернутый на одном сервере Linux. Мы используем Jmeter, чтобы сделать нагрузочный тест.

Мы высмеиваем 500 пользователей, чтобы они одновременно посетили страницу индекса веб-сайта. Страница индекса очень проста в формате html, нет соединения с базой данных, поэтому это довольно короткое соединение.

Примерно через 2 минуты Jmeter начинает выдавать исключение тайм-аута как bleow

enter image description here

Я полагаю, это из-за того, что веб-сайт достигает своей емкости и не работает соединение.

У меня есть одно задание, почему веб-сайт достигает своей емкости через 2 минуты после запуска Jemter. Если его пропускная способность TCP-соединения для этого веб-сайта составляет 1000, я думаю, он достигнет 1000 очень скоро после запуска Jmeter, а не через 2 минуты.

Кроме того, я вижу, что многие соединения TCP находятся в состоянии TIME_WAIT на сервере Linux. Я думаю, это может быть связано с таймаутом соединения?

Редактировать: Кто-то думает, что работает порт. Кто-то думает, что у него кончается соединение. И кто-то думает, что у него заканчивается поток обработки (например, Что означает этот тайм-аут java.net.ConnectException / Connection timed в файле log.jtl Jmeter? ). Я не знаю, какая именно причина ...

1 Ответ

0 голосов
/ 02 января 2019

Скорее всего, это связано с базовой конфигурацией стека ядра Linux TCP / IP согласно Настройка TCP / IP в Linux для масштабируемости статья:

По умолчанию соединение должно оставаться в состоянии TIME_WAIT вдвое больше, чем msl. Его цель - убедиться, что любые потерянные пакеты, поступающие после закрытия соединения, не приводят в замешательство подсистему TCP (полная информация об этом выходит за рамки данной статьи, но спросите меня, хотите ли вы детали). Значение по умолчанию msl составляет 60 секунд, что устанавливает значение тайм-аута TIME_WAIT по умолчанию равным 2 минутам. Это означает, что у вас закончатся доступные порты, если вы будете получать более 400 запросов в секунду или если мы посмотрим, как nginx выполняет прокси, это фактически переводит до 200 запросов в секунду. Не подходит для масштабирования.

ТАК что дважды проверьте тайм-ауты вместе с максимальным количеством портов / сокетов / файлов на сервере Linux - я ожидаю, что вышеупомянутые параметры должны быть настроены для высоких нагрузок.

Рекомендуется также осуществлять мониторинг базовых показателей работоспособности ОС (ЦП, ОЗУ, сеть, диск, использование подкачки и т. Д.). Для этого вы можете использовать i.e. JMeter PerfMon Plugin или JMeter SSHMon Listener .

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