我有一个由2个Jettys组成的Web服务(运行相同的内容)由HA代理负载平衡。在包含介质请求每秒速率(小于100)并且每个请求具有大体积(21 KB)的测试期间,Jetty被卡住 - 它不响应任何请求。
带上Jetty的唯一方法就是重启它。
我在日志文件中找不到任何信息(2011_05_20.stderrout.log,2011_05_20.log) - 它似乎停止了记录。
我还应该在Jetty配置中启用任何其他有用的日志文件吗?
有没有人经历过这种奇怪的行为?
我可以从Jetty检索有关线程状态的一些信息(我不确定所有线程是否都忙,请求被拒绝)?
提前致谢!
答案 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