一个人访问,怎么访问都不会有问题,但是当多个人访问的时候,在某一特殊时刻(也许仅仅是服务器刚启动不久,具体什么操作尚且不知)服务器会爆卡,每一个请求都巨慢无比,我在每一个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请求都满的要死?
收藏 (0)
分享
微博QQ微信
举报
加载中
具体情况具体分析,由于已经到Action,那么不是tcp链接上的问题。
就看你action里做了什么,当时的内存状态,数据库链接池是不是太小了。是不是数据库写的太厉害了,表锁竞争太厉害?数据库配置有没有优化等
回复@purely : 嗯嗯,有道理!感觉问题很有可能出在这里
回复 举报
回复@pistol_gao : 数据库操作在事务中会锁表,导致其他多数据库操作的请求被挂起等待。如果事务处理过程很长的话,其他的数据库操作请求就一直阻塞着,就成了系统瓶颈了。所以事务要尽量的短平快。把耗时操作全部提取出来,不要在事务中操作。
回复 举报
回复@purely : 应该会有,我们的事务是通过spring transactionManager aop控制的,有些service的方法会进行大量的操作,所以应该会有的,但是有的话,会有什么影响吗?保持了一个session不释放?导致session资源被大量浪费?
回复 举报
回复@pistol_gao : 先确定不是并发太高了,机器资源不足,再查看看是不是数据库问题。
回复 举报
回复@pistol_gao : 数据库事务写的时候会上锁的,你看看你