我正在 Tomcat 上测试一个应用程序,其中有来自 200 个用户的一小时疯狂流量。
测试期间一切正常。
但测试结束后(没有更多流量),线程数莫名其妙地上升。
在短暂但危险的峰值之后,它开始下降。
我计算了一个直方图来显示问题:
黄线(Tomcat 线程池中的 socketRead 线程数)一开始看起来很稳定,但在流量结束时会跳跃(黑色垂直线)。
问题:您是否已经看到过这种行为?知道是什么原因造成的吗?
有时在生产中这种现象会使 Tomcat 达到maxThreads
,从而引发各种其他问题。
5 个节点的集群,Tomcat 6.0.26 / JK / Alfresco
如果需要,有关其他类型线程的详细信息:
- 红色:线程池外部的套接字读取线程
- 蓝色:线程池中等待的线程
- 绿色的:
java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill
- 紫色:应用程序端去中心化自治组织线程(该应用程序是露天,用作 WebDAV 服务器)
附言:如果您有兴趣生成此类图表,我可以将我的工具开源,请告诉我。
答案1
这可能与线程池有关。
http://webspherehelp.blogspot.co.uk/2010/01/tomcat-thread-pool-dont-shrink-as-you.html
可能有帮助。
年龄变化率