Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Tomcat 6在达到最大线程数后停止运行_Multithreading_Tomcat - Fatal编程技术网

Multithreading Tomcat 6在达到最大线程数后停止运行

Multithreading Tomcat 6在达到最大线程数后停止运行,multithreading,tomcat,Multithreading,Tomcat,我们的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: Paus

我们的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

看看交换内存和其他资源。我曾经有过这样的经历:每个线程的内存使用率太高(应用程序设计不好),导致服务器没有响应。如果是这种情况(或者只是测试),减少线程数量,看看它是否仍然发生。

您可以试一试

org.apache.catalina.startup.catalina
类、
stopServer
方法上附加一个探测。如果这没有帮助,请尝试查找任何其他关机挂钩并将BTrace探查器连接到它们


您应该能够获得指向请求关闭的人的完整堆栈跟踪。

进行线程转储,以查看所有线程上的内容。每个线程的stacktrace将比catalina.out错误更能指示您的问题

窗口

在控制台窗口上,按ctrl+break键

Unix

在命令行上输入:
kill-3

可以在正在运行的生产实例上安全地执行这些操作。

看起来您的线程设置为500或600个。如果每个线程通常访问一个DB连接,那么是否将dbcp池设置为相同的数量或更多


您还可以检查您的

听起来更适合于调用线程死机并将其移回池时的超时时间是否更短?谢谢Colin,但我检查了交换内存使用情况,结果为0,因为我在这台机器上有足够的ram。我想知道为什么它会让服务器停机!!!因为据我所知,当线程数超过其最大值时,Tomcat将缓存新请求,直到某些线程可用为止。@mindas我看到大约500个线程的堆栈跟踪顶部有以下几行:这是否意味着Tomcat数据库连接池中有一些错误?@mindas“http-80-412”守护进程prio=10 tid=0x0000000047b54800 nid=0x991 in Object.wait()[0x00000000634ed000]java.lang.Thread.State:WAITING(在对象监视器上)at java.lang.Object.wait(本机方法)-WAITING(在java.lang.Object.wait(Object.java:485)at java.lang.org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$Latch上等待)位于org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1104)-锁定(一个org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$闩锁)at@mindasorg.apache.tomcat.dbcp.dbcp.poolgDataSource.getConnection(poolgDataSource.java:106)位于org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)