tomcat运行一段时间就挂掉...

时间:2022-02-01 17:09:37
我的tomcat每运行2-3天后,就会出现不再处理http请求的情况。打印出线程状态如下:

http-90-exec-40:TIMED_WAITING
http-90-exec-43:TIMED_WAITING
http-90-exec-49:TIMED_WAITING
http-90-ClientPoller:RUNNABLE
http-90-Acceptor-0:RUNNABLE

TP-Processor2:WAITING
TP-Processor1:WAITING
TP-Processor3:WAITING
TP-Processor4:RUNNABLE

TP-Monitor:TIMED_WAITING

Reference Handler:WAITING

Signal Dispatcher:RUNNABLE

Finalizer:WAITING

main:RUNNABLE

ContainerBackgroundProcessor[StandardEngine[Catalina]]:TIMED_WAITING

NioBlockingSelector.BlockPoller-1:RUNNABLE

以下为不正常状态..
Timer-0:BLOCKED

http-90-exec-1:BLOCKED
http-90-exec-3:BLOCKED
http-90-exec-2:BLOCKED...(此类线程非常多) 
tomcat设置能改的都改了,还是无法解决,现在只能通过监控线程判断jvm线程数,过大就自动重启tomcat...
望高手指点,可赠送100资源分....
 

24 个解决方案

#1


问题补充:tomcat的访问量比较大,并发在100左右。数据库连接是通过连接池,连接没有问题,涉及到异步处理的地方也使用了线程池,不会无限制起新线程。

#2


问题补充:日志没有报错

#3


建议使用监控工具查看。jconsole或者visualvm

#4


关注///

#5


会不会上次多次处理完的资源没有释放掉?检查一下程序看看

#6


一定是你的操作有问题。删了重安一个试试。

#7


可能是使用的对象较多,每次请求结束后没有释放干净

#8


//设置下 jvm的内存大小
  

#9


进去tomcat管理界面看下最大线程是多少 挂的时候线程是多少

#10


楼主好好检查一下是不是数据操作后很多资源没有关闭掉,导致溢出,我以前就遇到过,你把该关闭的连接什么的都关闭掉。

#11


应该是内存溢出  确保所有连接数据库源使用完后关闭

#12


内存溢出会报OOM错误 先看看应用的日志

#13


提示,如果session过多会造成死机!

#14


看不懂,关注下

#15


你程序中声明的对象太多了估计是,用过后没有进行及时释放

#16


补充:没有内存溢出的报错,没有任何报错。数据库连接也是关闭的。
提示,如果session过多会造成死机!(这个倒有可能)

#17


有一个线索:出问题时,tomcat线程数是稳步上升的,每秒上升10多个,一直超出限制。。。

#18


谁来回答一下啊

#19


你是不是用JDBC做的连接,如果是JDBC做的连接就要检查你的连接有没有在BIZ层关掉,如果没有关掉连接,会有可能由于连接池满而造成tomcat卡死,出错
个人意见!具体原因等待高手解答

#20


使用jconsole监控了几天,终于发现问题出在哪了,是dbcp连接池发生了死锁,具体原因还没有分析出来。望高手跟贴...
监控截图:
http://b25.photo.store.qq.com/http_imgload.cgi?/rurl4_b=fefb76436e2d9f15336be864895ddae02683f974504a4914f2b8cd0f6968bf3a54e8ac6ac11dc343f95e9c55b82cd58b5907e67b8c5f85935b34f2958e3492871efca53dbfe96d5fe306466a6a5b19b8fc74774b&a=12&b=25

#21


[img=http://b25.photo.store.qq.com/http_imgload.cgi?/rurl4_b=fefb76436e2d9f15336be864895ddae02683f974504a4914f2b8cd0f6968bf3a54e8ac6ac11dc343f95e9c55b82cd58b5907e67b8c5f85935b34f2958e3492871efca53dbfe96d5fe306466a6a5b19b8fc74774b&a=12&b=25][/img]

#22


tomcat运行一段时间就挂掉...

#23


你做数据库的时候,程序没关连接

#24


阿帕奇的dbcp pool 1.4有同步bug.
参见:
http://osdir.com/ml/users-tomcat.apache.org/2009-06/msg01152.html

#1


问题补充:tomcat的访问量比较大,并发在100左右。数据库连接是通过连接池,连接没有问题,涉及到异步处理的地方也使用了线程池,不会无限制起新线程。

#2


问题补充:日志没有报错

#3


建议使用监控工具查看。jconsole或者visualvm

#4


关注///

#5


会不会上次多次处理完的资源没有释放掉?检查一下程序看看

#6


一定是你的操作有问题。删了重安一个试试。

#7


可能是使用的对象较多,每次请求结束后没有释放干净

#8


//设置下 jvm的内存大小
  

#9


进去tomcat管理界面看下最大线程是多少 挂的时候线程是多少

#10


楼主好好检查一下是不是数据操作后很多资源没有关闭掉,导致溢出,我以前就遇到过,你把该关闭的连接什么的都关闭掉。

#11


应该是内存溢出  确保所有连接数据库源使用完后关闭

#12


内存溢出会报OOM错误 先看看应用的日志

#13


提示,如果session过多会造成死机!

#14


看不懂,关注下

#15


你程序中声明的对象太多了估计是,用过后没有进行及时释放

#16


补充:没有内存溢出的报错,没有任何报错。数据库连接也是关闭的。
提示,如果session过多会造成死机!(这个倒有可能)

#17


有一个线索:出问题时,tomcat线程数是稳步上升的,每秒上升10多个,一直超出限制。。。

#18


谁来回答一下啊

#19


你是不是用JDBC做的连接,如果是JDBC做的连接就要检查你的连接有没有在BIZ层关掉,如果没有关掉连接,会有可能由于连接池满而造成tomcat卡死,出错
个人意见!具体原因等待高手解答

#20


使用jconsole监控了几天,终于发现问题出在哪了,是dbcp连接池发生了死锁,具体原因还没有分析出来。望高手跟贴...
监控截图:
http://b25.photo.store.qq.com/http_imgload.cgi?/rurl4_b=fefb76436e2d9f15336be864895ddae02683f974504a4914f2b8cd0f6968bf3a54e8ac6ac11dc343f95e9c55b82cd58b5907e67b8c5f85935b34f2958e3492871efca53dbfe96d5fe306466a6a5b19b8fc74774b&a=12&b=25

#21


[img=http://b25.photo.store.qq.com/http_imgload.cgi?/rurl4_b=fefb76436e2d9f15336be864895ddae02683f974504a4914f2b8cd0f6968bf3a54e8ac6ac11dc343f95e9c55b82cd58b5907e67b8c5f85935b34f2958e3492871efca53dbfe96d5fe306466a6a5b19b8fc74774b&a=12&b=25][/img]

#22


tomcat运行一段时间就挂掉...

#23


你做数据库的时候,程序没关连接

#24


阿帕奇的dbcp pool 1.4有同步bug.
参见:
http://osdir.com/ml/users-tomcat.apache.org/2009-06/msg01152.html