Потоки Jmeter застряли во время нагрузочного теста - PullRequest
0 голосов
/ 18 июня 2020

Я запускаю нагрузочный тест с помощью jmeter с 200 пользователями примерно в течение 1 часа. Итак, наблюдение состоит в том, что несколько потоков зависают даже после завершения продолжительности. Как будто 60 из 200 застряли. Когда я беру дамп потока и замечаю, что эти потоки находятся в состоянии Runnable. Есть предложения по решению этой проблемы? И я не вижу ничего значимого в файле журнала jmeter.

Спасибо, J

Ответы [ 3 ]

0 голосов
/ 18 июня 2020

Это ненормальное поведение для теста JMeter, скорее всего, это указывает на то, что либо механизм JMeter перегружен (неправильно настроен для высоких нагрузок), либо машина, на которой запущен JMeter, перегружена (т. Е. Отсутствует ОЗУ и начинается интенсивная подкачка)

  1. Обязательно следуйте JMeter Best Practices (запустите тест в режиме, отличном от GUI, удалите все слушатели и тестовые элементы, которые вам не нужны, увеличьте размер кучи JMeter , et c.)
  2. Обязательно отслеживайте основные показатели работоспособности машины, на которой работает JMeter (ЦП, ОЗУ, сеть и дисковый ввод-вывод, использование файла подкачки). Вы можете использовать JMeter PerfMon Plugin для этого, если у вас нет лучшего программного обеспечения
  3. Возможно, вам придется переключиться на Distributed Testing , 200 виртуальных пользователей не кажутся мне «большой» нагрузкой, но это зависит от того, что именно эти пользователи делают, если они загружают / скачивают большие файлы, этого может быть достаточно, чтобы вызвать проблемы.

Забегая вперед, подумайте о том, чтобы добавить к вашему вопросу дамп потока и содержимое файла журнала jmeter, так как он не содержит никаких подсказок, поэтому мы можем придумать только ответы «слепым выстрелом»

0 голосов
/ 18 июня 2020

Вы можете проверить время ожидания HTTP.

Обычно я устанавливаю время ожидания подключения на 5000 миллисекунд, а время ожидания ответа на 30000. Ваши значения могут отличаться в зависимости от конкретной c среды / приложения. Таким образом, если на тестируемом сервере что-то go плохо, все запросы завершаются в течение тайм-аута (с ошибками).

Вы также должны учитывать это, если вы получаете страницу HTML с все его встроенные объекты, а веб-сервер зависает, вам нужно дождаться истечения нескольких тайм-аутов, прежде чем операция завершится.

0 голосов
/ 18 июня 2020

По истечении этого времени вы обнаружите неожиданное увеличение времени ответа.

Это из-за недостаточного времени замедления потока. Некоторые из ваших потоков были активны и отправляли запросы на сервер и не получали ответа, но потоки были принудительно закрыты. Если ваш тест JMeter принудительно остановлен, все активные потоки будут немедленно закрыты. Таким образом, запросы, сгенерированные этими потоками, получат более высокое время отклика.

Вы можете использовать Ultimate Thread Group для плавного shutdown time (время замедления) потоков точно так же, как нарастание время.

Вот пример настройки:

enter image description here

...