日期:2014-05-18  浏览次数:20754 次

经典TOMCAT死掉问题
有个JAVA WEB项目运行在 TOMCAT 5.5 + MYSQL + linux 环境下 ,运行几天或一周左右总是出问题,具体现象是:访问首页的时候,一直在请求状态,就连静态页面都无法访问,但是又不会出现“该页无法显示”等代表TOMCAT死了的信息。TOMCAT进程也还存在。一直搞不清楚什么原因。由于只是偶然出现问题,因此很难再现,也没有拿到TOMCAT下的相关日志。

今天发贴主要是想问问大家:
1。有什么办法通过写测试程序重现问题?
2。有哪些情况可能导致这种问题发生?
谢谢大家




------解决方案--------------------
这个问题还没碰到过,顶一下吧!期待高手!
------解决方案--------------------
从来没碰到过这种问题
------解决方案--------------------
是不是mysql长时间没请求,重新连接.
------解决方案--------------------
你说的问题我遇到过,IE一直空白页面并且处于请求状态,但IE进度条好像卡死在那里。是这样吧

我遇到这个问题的时候一般都是集群几个tomcat,访问到某一个死掉的tomcat的时候会这样,客户连接到apache 转到 tomcat的时候tomcat死掉了。

但是我一般都可以抓到日志,不清楚你为啥抓不到。

遇到这样的问题,先检查是不是访问的用户态多了,超出了服务器的最大连接数或者并发数。超出的时候会有这样假死的状态,或许真就死了。

或者连接池的链接数达到最高从而使实体层要创建连接或者等待连接而导致的假死状态。

如果上面都排除了就抓抓日志,分析一下在处理那个请求中抛的异常。




------解决方案--------------------
顶一下,学习了,原来tomcat还有这样的情况
------解决方案--------------------
内存使用
cpu使用
用户连接数
有没有线程挂起(数据库)
电脑性能
------解决方案--------------------
没遇到过,学习了!
------解决方案--------------------
这个问题我觉得首先还是跟用户的linux服务器有关吧,也就是你的计算机性能。
其次,那就是数据库的配置了,不知道你的这种情况是在单用户访问时就出现还是在多用户并发访问时出现的?
要是多用户并发访问的话,那就是你的数据库连接池的配置了,
你可以重新配置一下mysql的连接数量,默认的话它是支持20个连接,你可以手动配置一下。
别的,tomcat假死,这种状况我在linux上配置环境时也出现过,不过是我的机子配置的问题,呵呵……


------解决方案--------------------
1.数据库连接问题
2.TCP连接过多
3.TCP短连接过多(和上面的不是一回事)
4.TCP连接没有及时释放(表现为大量的TCP出现WAITING)
5.CPU占用率问题,内存问题(其实就是负载太大,用top命令看看负载指数)

重现这个问题的话,大概可以用任意一款压力测试软件测一下(本质就是起很多个线程而已,自己编写的话,对于多个线程的协调会很复杂,还是用软件吧)
------解决方案--------------------
1 可能出现数据库出现死锁
2内存资源耗尽 
3数据库创建了,未关闭
4 查看日志信息,是否有报错!!
------解决方案--------------------
用的是连接池,不用管有多少个连接,用完一后把它关了就行了,session也关了
------解决方案--------------------
探讨
你说的问题我遇到过,IE一直空白页面并且处于请求状态,但IE进度条好像卡死在那里。是这样吧

我遇到这个问题的时候一般都是集群几个tomcat,访问到某一个死掉的tomcat的时候会这样,客户连接到apache 转到 tomcat的时候tomcat死掉了。

但是我一般都可以抓到日志,不清楚你为啥抓不到。

遇到这样的问题,先检查是不是访问的用户态多了,超出了服务器的最大连接数或者并发数。超出的时候会有这样假死的状态,或许真就死…

------解决方案--------------------
哎,我原来做SSH分页的时候也遇到过相同的问题啊
------解决方案--------------------
探讨
你说的问题我遇到过,IE一直空白页面并且处于请求状态,但IE进度条好像卡死在那里。是这样吧

我遇到这个问题的时候一般都是集群几个tomcat,访问到某一个死掉的tomcat的时候会这样,客户连接到apache 转到 tomcat的时候tomcat死掉了。

但是我一般都可以抓到日志,不清楚你为啥抓不到。

遇到这样的问题,先检查是不是访问的用户态多了,超出了服务器的最大连接数或者并发数。超出的时候会有这样假死的状态,或许真就死…

------解决方案--------------------
80% 是数据库连接满了。你看一下数据库的监控就知道了。
------解决方案--------------------
学习一下!!
------解决方案--------------------
这情况一般和数据库的连接有关
------解决方案--------------------
老紫竹好 数据库监控怎么看? 我用的是SQL SERVER2005 谢了
------解决方案--------------------