我们的Tomcat 6.0.29在达到其最大线程数后会下降。我真的很感激任何帮助,因为它是一个生产服务器。
以下是catalina.log文件的一部分:
INFO: Maximum number of threads (600) created for connector with address null and port 80
Mar 8, 2011 11:19:37 AM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-80
Mar 8, 2011 11:19:38 AM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Mar 8, 2011 11:19:38 AM org.apache.catalina.core.StandardWrapper unload
INFO: Waiting for 8 instance(s) to be deallocated
答案 0 :(得分:4)
进行线程转储以查看所有线程的内容。每个线程的堆栈跟踪将表明您的问题多于catalina.out错误。
<强>窗强>
控制台窗口上的按ctrl + break
<强>的Unix 强>
命令行上的输入:kill -3 <pid>
可以在正在运行的生产实例上安全地使用它们。
答案 1 :(得分:1)
看起来您的Executor设置为500或600个主题。如果每个线程通常访问数据库连接,您是否将dbcp池设置为相同数量或更多?
您也可以查看dbcp pool configuration
答案 2 :(得分:0)
查看交换内存和其他资源。我有一种经验,每个线程的内存使用率太高(应用程序设计不好),导致服务器无响应。如果是这种情况(或只是为了测试)减少线程数量并查看它是否仍然发生。
答案 3 :(得分:0)
你可以给BTrace一个。
在org.apache.catalina.startup.Catalina
类,stopServer
方法上附加探针。如果这没有帮助,请尝试找到任何其他关闭挂钩并将BTrace探查器附加到它们。
您应该能够获得指向请求关闭的任何人的完整堆栈跟踪。