Сервер Rest (платформа Play) получает исключение «Время ожидания чтения» во время нагрузочного теста

#rest #playframework #jmeter #load-testing

#rest #playframework #jmeter #нагрузочное тестирование

Вопрос:

Мы выполняем тест с высокой нагрузкой (jmeter: 350 потоков, общее количество запросов 35 МЛН) на сервере rest, использующем платформу Play Framework, и через ~ 2 часа сталкиваемся со следующей ошибкой. Мы удаляем другие компоненты, чтобы request просто принимал запросы и ничего не делал. У кого-нибудь есть идеи или просто Play Framework не может справиться с такой большой нагрузкой?

 2014/07/05 11:59:38 WARN  - com.company.test.RestTest2: Run TestSQL throw error java.lang.Exception: com.sun.jersey.api.client.ClientHandlerException: java.net.SocketTimeoutException: Read timed out
        at com.company.dispatcher.RexsterRESTTaskDispatcher.dispatchTask(RexsterRESTTaskDispatcher.java:76)
        at com.company.test.RestTest2.runTest(RestTest2.java:375)
        at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:191)
        at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:429)
        at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)
        at java.lang.Thread.run(Thread.java:744)
  

Часть application.conf :
….

 db.pool.timeout=100000

play {
  akka {
    akka.loggers = ["akka.event.Logging$DefaultLogger", "akka.event.slf4j.Slf4jLogger"]
    loglevel = WARNING
    actor {
      default-dispatcher = {
        fork-join-executor {
          parallelism-factor = 64
          parallelism-max = 1000
        }
      }
    }
  }
}
  

Ответ №1:

Сегодня произошла эта ошибка. Мне потребовалось некоторое время, чтобы выяснить, что один из процессов Windows ( svchost ) занимал порт 1099, который пытался использовать сервер Jmeter.

Я получил подсказку об этом при попытке запустить Jmeter-Server.bat файл вручную. Затем следующая команда PowerShell предоставила подробную информацию об этом процессе. После закрытия этого процесса клиенты Jmeter снова начали подключаться.

 Get-Process -Id (Get-NetTCPConnection -LocalPort 1099).OwningProcess
  

Ответ №2:

Есть много вещей, которые нужно проверить:

  • Вы запускаете тест с того же компьютера? если да, то это проблема

  • Настроен ли стек TCP вашего компьютера?

  • Какова ваша конфигурация JVM в отношении Xmx, пока память вашего компьютера, процессор…

  • Как выглядит ваш тест? не могли бы вы показать скриншот со всеми развернутыми элементами?

Я думаю, что Play / AKKA может справиться с этой нагрузкой без проблем, поэтому я бы изучил проблемы с конфигурацией.