JMeter: как найти причину исключения java.net.SocketTimeoutException?

#java #testing #jmeter #load-testing #socket-timeout-exception

#java #тестирование #jmeter #нагрузочное тестирование #исключение тайм-аута сокета

Вопрос:

Я провожу нагрузочный тест для своего веб-приложения и устанавливаю время ожидания подключения и ответа равным 20 секундам, и иногда я получаю исключения типа:

Код ответа, отличающийся от HTTP: java.net.SocketTimeoutException: сообщение об ответе, отличающееся от HTTP: время чтения истекло

Я получаю вышеупомянутое исключение в результате теста JMeter, и в моем приложении нет ошибок, и нет stacktrace, доступного для отслеживания исключения.

Я хочу выяснить причину сообщения: приложение ожидает какой-либо обработки, или медленный SQL, или зависший поток, или приложение отказывается от подключений из-за превышения лимита?

Как я могу найти причину возникновения этого исключения и как я могу это исправить?

Комментарии:

1. @Raedwald, в результатах теста JMeter отсутствует трассировка стека, доступная для отслеживания приложения, а также мое приложение также не выдает исключение для трассировки, поэтому, пожалуйста, проголосуйте за закрытие.

2. @Raedwald если у вас есть опыт работы с JMeter, вы поймете, о чем я говорю, пожалуйста, не стоит меня так сильно недооценивать, этот ответ унижает мой опыт : ( : (

3. Происходит ли это с 1 потоком? Если это происходит при увеличении числа пользователей — это может быть проблема вашего приложения. если нет, достаточно ли у вас кучи, установленной для JMeter?

4. В чем загадка? Причина только одна. Время чтения истекло. Сервер ничего не отправил в течение периода ожидания.

Ответ №1:

Я бы рекомендовал вам улучшить операции отладки (в JMeter) следующим образом:

  • попробуйте добавить постпроцессор отладки в ваш http-сэмплер

debugPostProcessor

  • запустите средство просмотра журналов (JMeter log viewer) перед выполнением любого http-сэмплера (-ов) / скрипта (-ов)

просмотр журнала

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

Комментарии:

1. я использую blazemeter для запуска своих тестовых сценариев, есть идеи по отладке?

2. Как насчет идеи экспортировать ваш скрипт blazemeter в JMeter с помощью этой кнопки: gyazo.com/249f1a3de843aef963981ae068327385 и попробуйте выполнить свой скрипт в JMeter, принимая во внимание то, что я упомянул вам выше?

3. кстати, я заметил, что ответ выглядит как «Код ответа, отличный от HTTP:» . Вы уверены, что используете надлежащие конечные точки (WebAPI endpoint) вашего приложения для выполнения HTTP-запросов?