tomcat服务器运行一段时间就会爆卡,百思不得其解,求高手给个方向

pistol_gao 发布于 2014/07/16 10:40
阅读 2K+
收藏 0
一个人访问,怎么访问都不会有问题,但是当多个人访问的时候,在某一特殊时刻(也许仅仅是服务器刚启动不久,具体什么操作尚且不知)服务器会爆卡,每一个请求都巨慢无比,我在每一个Action请求中加了aop增加,每当一个action的方法执行速度超过5秒,那么将记录在log文件中。百思不得其解,求助,给个思路,可能是哪里的问题(怀疑过c3p0的原因,已经把c3p0版本从0.9.12升级到了对并发支持更好的0.9.5)

以下是问题补充:

@pistol_gao:在出现卡的问题的时候,我检测到好多种报错,有的时候卡了,报的是栈溢出,有的时候报的是dead lock(jbpm),还有的时候包no session。感觉着写错误都是由于一个原因导致的,但是根本原因找不着,也不知道怎么着..... (2014/07/16 15:05)
@pistol_gao:最终的结果是,哪怕是一个仅涉及到一个最简单hql语句的查询的action请求都满的要死? (2014/07/16 15:19)
加载中
0
purely
purely

具体情况具体分析,由于已经到Action,那么不是tcp链接上的问题。

就看你action里做了什么,当时的内存状态,数据库链接池是不是太小了。是不是数据库写的太厉害了,表锁竞争太厉害?数据库配置有没有优化等

pistol_gao
pistol_gao
回复 @purely : 嗯嗯,有道理!感觉问题很有可能出在这里
purely
purely
回复 @pistol_gao : 数据库操作在事务中会锁表,导致其他多数据库操作的请求被挂起等待。如果事务处理过程很长的话,其他的数据库操作请求就一直阻塞着,就成了系统瓶颈了。所以事务要尽量的短平快。把耗时操作全部提取出来,不要在事务中操作。
pistol_gao
pistol_gao
回复 @purely : 应该会有,我们的事务是通过spring transactionManager aop控制的,有些service的方法会进行大量的操作,所以应该会有的,但是有的话,会有什么影响吗?保持了一个session不释放?导致session资源被大量浪费?
purely
purely
回复 @pistol_gao : 先确定不是并发太高了,机器资源不足,再查看看是不是数据库问题。
purely
purely
回复 @pistol_gao : 数据库事务写的时候会上锁的,你看看你数据库是事务里是不是大量的长时间写操作,或者在事务的时候,有耗时操作,使得事务长时间没有提交。
下一页
1
c
chenyanter
kill -3 pid  or dmp
1
jindaodama
jindaodama
可能是gc的问题
0
dreamers
dreamers
问题描述非常不清楚,看不明白兄弟。
pistol_gao
pistol_gao
主要是,一个人调试不会出问题,找不到问题所在.....好纠结,难道一定要整个jmeter进行测试
0
chuhx
chuhx

学习了。最好建个连接池吧。

pistol_gao
pistol_gao
建一个连接池?hibernate不是会通过注册c3p0来自动管理连接池吗
0
loyal
loyal

你要弄清楚是tomcat的问题还是db连接池的问题,还是db的问题....

这个很容易搞清楚吧?知道了问题才能解决,不能直接说tomcat卡..

purely
purely
回复 @pistol_gao : 能进到Action,说明tomcat层面上没有说明问题,不存在tcp链接不上的情况。
pistol_gao
pistol_gao
应该不是tomcat的问题
0
山药蛋
山药蛋
用jstack命令看看那时候tomcat进程在干什么
pistol_gao
pistol_gao
回复 @山药蛋 : 好的,我试试
山药蛋
山药蛋
@pistol_gao 你在生产环境执行jstack
pistol_gao
pistol_gao
用过jconsole,jvisualvm查看过,但是一个人查看监听的时候,不会出错一切正常的,一个人测不出错,这是个大问题
返回顶部
顶部