友善交流技术...
loadrunner性能分析-线程holding(死锁)
上一篇 /
下一篇 2012-04-18 14:29:36
/ 个人分类:性能测试专题
性能分析-线程holding状态,系统无反映
测试系统:公司开发的平台系统
开发语言:java+c
数据库 :mysql
测试描述:
测试功能:测试5个接口
并发用户:20并发,运行30分钟
实际结果
1、监控tomcat 发现大量的线程 holding 状态
2、java 线程都处于等待状态(应该是死锁),线程池被使用完。
经过分析通过几个修改方案
分析方法:脚本拆分法,确定那个功能引起的线程holding
将loadrunner脚本一个一个运行,结果发现任务的接口都可以引起线程holding状态的出现,这说明了不是一个接口出现了问题,而是所有的接口都会引起线程holding的出现,进而分析可能的原因:
共同的功能模块出现问题:共同的模块应该是锁或是DB调用的公共模块出现问题。和开发一起分析,现在只有JAVA有锁,通过JNI调用C,这说明JAVA锁出现了问题。分析到这后,尝试的解决办法是:
a)修改JAVA锁 -》结果验证失败
b)增加C语言中超时时间,设置10秒自动断开链接->结果失败
c)让C来进行加锁来实现-》结果成功
经验总结:
综合场景发现了问题,不太容易定位问题是那个功能或是接口引起时,建议单接口进行压力测试,如果再次出现本问题说明了:公共模块出现了问题,让开发注意公共模块,一般都是锁或是DB调用什么的。
收藏
举报
TAG: