我的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:RUNNABLETP-Processor2:WAITING
TP-Processor1:WAITING
TP-Processor3:WAITING
TP-Processor4:RUNNABLETP-Monitor:TIMED_WAITINGReference Handler:WAITINGSignal Dispatcher:RUNNABLEFinalizer:WAITINGmain:RUNNABLEContainerBackgroundProcessor[StandardEngine[Catalina]]:TIMED_WAITINGNioBlockingSelector.BlockPoller-1:RUNNABLE以下为不正常状态..
Timer-0:BLOCKEDhttp-90-exec-1:BLOCKED
http-90-exec-3:BLOCKED
http-90-exec-2:BLOCKED...(此类线程非常多) 
tomcat设置能改的都改了,还是无法解决,现在只能通过监控线程判断jvm线程数,过大就自动重启tomcat...
望高手指点,可赠送100资源分....
 

解决方案 »

  1.   

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

  2.   

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

  3.   

    //设置下 jvm的内存大小
      
      

  4.   

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

  5.   

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

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  10.   

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

  11.   

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