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

dzw1218 2009-10-14 12:24:02
我的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资源分....
...全文
1355 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzw1218 2009-10-22
  • 打赏
  • 举报
回复
阿帕奇的dbcp pool 1.4有同步bug.
参见:
http://osdir.com/ml/users-tomcat.apache.org/2009-06/msg01152.html
  • 打赏
  • 举报
回复
你做数据库的时候,程序没关连接
dzw1218 2009-10-21
  • 打赏
  • 举报
回复
dzw1218 2009-10-21
  • 打赏
  • 举报
回复
dzw1218 2009-10-21
  • 打赏
  • 举报
回复
使用jconsole监控了几天,终于发现问题出在哪了,是dbcp连接池发生了死锁,具体原因还没有分析出来。望高手跟贴...
监控截图:
http://b25.photo.store.qq.com/http_imgload.cgi?/rurl4_b=fefb76436e2d9f15336be864895ddae02683f974504a4914f2b8cd0f6968bf3a54e8ac6ac11dc343f95e9c55b82cd58b5907e67b8c5f85935b34f2958e3492871efca53dbfe96d5fe306466a6a5b19b8fc74774b&a=12&b=25
dzw1218 2009-10-19
  • 打赏
  • 举报
回复
谁来回答一下啊
  • 打赏
  • 举报
回复
你是不是用JDBC做的连接,如果是JDBC做的连接就要检查你的连接有没有在BIZ层关掉,如果没有关掉连接,会有可能由于连接池满而造成tomcat卡死,出错
个人意见!具体原因等待高手解答
portnet 2009-10-14
  • 打赏
  • 举报
回复
建议使用监控工具查看。jconsole或者visualvm
dzw1218 2009-10-14
  • 打赏
  • 举报
回复
问题补充:日志没有报错
dzw1218 2009-10-14
  • 打赏
  • 举报
回复
问题补充:tomcat的访问量比较大,并发在100左右。数据库连接是通过连接池,连接没有问题,涉及到异步处理的地方也使用了线程池,不会无限制起新线程。
dzw1218 2009-10-14
  • 打赏
  • 举报
回复
有一个线索:出问题时,tomcat线程数是稳步上升的,每秒上升10多个,一直超出限制。。。
dzw1218 2009-10-14
  • 打赏
  • 举报
回复
补充:没有内存溢出的报错,没有任何报错。数据库连接也是关闭的。
提示,如果session过多会造成死机!(这个倒有可能)
  • 打赏
  • 举报
回复
你程序中声明的对象太多了估计是,用过后没有进行及时释放
cjay124 2009-10-14
  • 打赏
  • 举报
回复
看不懂,关注下
liguangwen86 2009-10-14
  • 打赏
  • 举报
回复
提示,如果session过多会造成死机!
sagadan 2009-10-14
  • 打赏
  • 举报
回复
内存溢出会报OOM错误 先看看应用的日志
zl3450341 2009-10-14
  • 打赏
  • 举报
回复
应该是内存溢出 确保所有连接数据库源使用完后关闭
老猫的TOM 2009-10-14
  • 打赏
  • 举报
回复
楼主好好检查一下是不是数据操作后很多资源没有关闭掉,导致溢出,我以前就遇到过,你把该关闭的连接什么的都关闭掉。
sagadan 2009-10-14
  • 打赏
  • 举报
回复
进去tomcat管理界面看下最大线程是多少 挂的时候线程是多少
Andy_2010_ 2009-10-14
  • 打赏
  • 举报
回复
//设置下 jvm的内存大小
加载更多回复(4)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧