Причал застревает во время тестов с высокой нагрузкой

#jetty

#причал

Вопрос:

У меня есть веб-сервис, состоящий из двух Jettys (с одинаковым контентом), нагрузка которого сбалансирована прокси-сервером HA. Во время теста, который состоит из средней скорости запросов в секунду (менее 100) и каждого запроса, имеющего большой объем (21 КБ), Jetty зависает — он не отвечает ни на один запрос.

Единственный способ запустить Jetty — это перезапустить его.

Я не нашел никакой информации в файлах журналов (2011_05_20.stderrout.log, 2011_05_20.log) — кажется, он перестает регистрироваться.

Есть какие-либо другие полезные файлы журналов, которые я должен включить в конфигурациях Jetty?

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

Могу ли я получить некоторую информацию о состоянии потока из Jetty (я не уверен, что все потоки заняты, запрос отклонен)?

Заранее спасибо!

Ответ №1:

Сколько потоков вы указали в jetty.xml ? Я думаю, что по умолчанию (по крайней мере, для встроенного Jetty) максимальное количество потоков установлено на уровне около 50. Вы можете изменить это либо программно, либо через jetty.xml . Вместо того, чтобы просто устанавливать max на большое число, вы должны определить правильное значение, в зависимости от ресурсов сервера и требований к загрузке.

 <Configure id="Server" class="org.eclipse.jetty.server.Server">
<!-- =========================================================== -->
<!-- Server Thread Pool -->
<!-- =========================================================== -->
<Set name="ThreadPool">
    <New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
    <!-- initial threads set to 50 -->
    <Set name="minThreads">50</Set>

    <!-- the thread pool will grow only up to 768 -->
    <Set name="maxThreads">768</Set>
    </New>
</Set>

</Configure>
  

Используйте что-то вроде jVisualVM или BTrace, чтобы узнать, сколько потоков находится в вашем пуле потоков. Вот ссылка на скрипт BTrace для распечатки количества потоков: https://github.com/joachimhs/EurekaJ/blob/master/EurekaJ.Scripts/btrace/1.2/btraceScripts/ThreadCounter.java