友善交流技术...

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:

 

评分:0

我来说两句

Open Toolbar