Jetty在高负载测试期间卡住了

时间:2011-05-20 19:31:10

标签: jetty

我有一个由2个Jettys组成的Web服务(运行相同的内容)由HA代理负载平衡。在包含介质请求每秒速率(小于100)并且每个请求具有大体积(21 KB)的测试期间,Jetty被卡住 - 它不响应任何请求。

带上Jetty的唯一方法就是重启它。

我在日志文件中找不到任何信息(2011_05_20.stderrout.log,2011_05_20.log) - 它似乎停止了记录。

我还应该在Jetty配置中启用任何其他有用的日志文件吗?

有没有人经历过这种奇怪的行为?

我可以从Jetty检索有关线程状态的一些信息(我不确定所有线程是否都忙,请求被拒绝)?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您在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