什么,项目“生病了”?我来看!

性能测试工程师可以比作为医生,看病象,定位病因。下面分享几个实际项目中的性能分析案例


: 某项目组件同步导致tomcat线程大量阻塞

现象:100并发,某个提交事务响应时间很长(7左右)其他事务响应时间正常。且存在偶尔报错(因日志配置有问题,后台看不到错误日志)LR报错显示:

 Error -26612: HTTP Status-Code=500 (Internal Server Error) for…




定位

1. 服务器内存,cpu,IO 正常排除数据库的原因。

2.jstack查看线程信息,发现有大量tomcat线程阻塞,阻塞信息截图如下:




3. 根据提示信息找到对应组件ark-workflow-1.0 jar(可从部署的服务器获取jar),进行反编译查看WorkflowUtils代码发现一个synchronized代码块。如下



 

4. 结合前面的线程堆栈信息应该这里同步导致线程阻塞。

 

二:某项目测试脚本关联不到位导致请求响应慢(自己埋的坑)

现象:20并发,某个审核事务响应时间很长9s左右,其他事务响应时间正常。


定位

1. 一开始以为跟问题一的提交事务相似原因,但查看线程快照正常

2. 导出AWR报告,发现大量enq: TX - row lock contention事件。




PFMC_PLAN_GROUP行锁很严重




3. 查资料导致enq: TX - row lock contention原因:

第一种情况,是真正的业务逻辑上的行锁冲突,一条记录被多个人同时操作如同时更新。这种锁对应的请求模式是6


第二种情况,是唯一键冲突,就是如主键字段相同的多条记录同时插入。这种锁对应的请求模式是4。这也是应用逻辑问题。


第三种情况,是bitmap索引块上更新冲突,就是多个会话同时更新bitmap索引上同一个数据块.


4. 另外发现有条sql执行特别慢,是update PFMC_PLAN_GROUP,where条件就是唯一索引id按测试场景来说这种情况不应该出现,猜测自己脚本有问题


5. 看了下审核请求的post请求参数,果然group id是个固定值,做关联(请求参数太多,看花了眼)


6. 修改后重新压下,问题解决


三:某项目附件上传rest接口并发问题

现象: 该接口在并发时,请求返回正常,但 rest服务后台报异常,错误日志如下:





问题定位

1. 查看上传的图片格式是否正确,结果是正确。(日志里有显示Not a JPEG file ”);


2. 查看接口代码,找到相关代码,看到下面有图片的代码,猜测是删图片导致的,然后看到上面给图片名变量赋的值是固定的,确定是并发时删同名图片文件引起的。



 

3. 上面猜测验证:基准测试重新跑一遍,查看后台日志(接口结果不能体现错误),发现一切正常,无报错。再并发5路跑一遍,后台日志报以上错误。说明这个问题只会在并发的时候出现





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值