#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-сэмплер
- запустите средство просмотра журналов (JMeter log viewer) перед выполнением любого http-сэмплера (-ов) / скрипта (-ов)
вероятно, это могло бы помочь вам выяснить, почему вы столкнулись с таймаутом сокета. Надеюсь, это вам поможет.
Комментарии:
1. я использую blazemeter для запуска своих тестовых сценариев, есть идеи по отладке?
2. Как насчет идеи экспортировать ваш скрипт blazemeter в JMeter с помощью этой кнопки: gyazo.com/249f1a3de843aef963981ae068327385 и попробуйте выполнить свой скрипт в JMeter, принимая во внимание то, что я упомянул вам выше?
3. кстати, я заметил, что ответ выглядит как «Код ответа, отличный от HTTP:» . Вы уверены, что используете надлежащие конечные точки (WebAPI endpoint) вашего приложения для выполнения HTTP-запросов?