性能测试 服务器cpu升高,性能测试之如何分析CPU异常曲线

1f412731444d4819b429325562d75221.jpg

图2 问题分析流程图

1. 发现问题时,初步猜测是由于环境不稳导致了CPU陡增,再次进行混合8小时疲劳测试,发现测试结果和最初的结果一致,排除环境因素。

2. 查询XMeter的运行日志,发现有Java.lang.OutOfMemoryError:Java heap space的报错信息,进而对Heapdump文件进行分析,并未发现导致该问题的代码块。随后修改堆内存配置,由原来的1.5G改为2.5G,再次混合疲劳压测8小时,压测结果如图3所示。

5b704da4fe56479f8a7b9938bbef6e42.jpg

图3 应用服务器CPU曲线

压测结果显示:应用服务器的CPU使用率曲线开始陡增的时间较之前变长,堆内存为1.5G时,CPU使用率在发压开始2-3小时左右陡增,直至发压结束;堆内存为2.5G时,CPU使用率在发压开始5-6小时左右陡增,直至发压结束。

3. 项目组进一步验证环境的参数配置,将服务器由2C/4G扩容至2C/8G,增加数据库连接池数目和WAS线程数,再次进行混合疲劳压测,测试结果显示CPU仍然出现陡增现象,排除环境参数配置因素。

4. 测试人员对应用服务器CPU曲线、数据库服务器CPU曲线、TPS曲线和请求响应时间曲线进行综合分析,发现应用服务器CPU陡增的同时,数据库CPU和TPS曲线呈现下降趋势,平均响应时间曲线升高,因此初步将问题原因聚焦于应用服务器程序问题。

(1)请求响应时间

9ca0ed2fa4ef43c1acb44bd9cd66850e.jpg

图4 请求响应时间曲线

(2)请求吞吐量

a9d4411d707f4d45af019bcdb59d6f74.jpg

图5 请求吞吐量曲线

(3)数据库服务器CPU曲线

fa43a198b32e4b75b668829a9936062d.jpg

图6 数据库服务器CPU曲线

分析native_stderr.log,发现JVM堆内存使用量不断升高,堆内存回收异常,存在内存泄漏:

14bb7137a3ea4195ba5f3587712c666c.jpg

图7 JVM堆内存使用量曲线

5. 在确认是程序问题之后,通过对不同的交易进行压测来定位导致问题的交易:

(1)移动端交易单独压测

由于陡增的时间节点是发压后3小时,分别对每支交易进行压测4小时,进而对不同的交易组合进行混合压测4小时,CPU陡增现象均未出现。

(2)PC端与移动端交易进行压测

① 由于5支交易中仅申请交易2是旧交易,因此对PC端的申请交易2单独进行疲劳压测8小时,发现JVM堆内存使用率曲线显示正常;

② 对PC端申请交易2,移动端:查询交易1、查询交易2、查询交易3这4支交易进行混合疲劳压测8小时,发现JVM堆内存使用率曲线显示正常;

③ 对PC端申请交易2,移动端:查询交易1、查询交易2、查询交易3、申请交易1这5支交易混合疲劳压测8小时,问题复现,测试结果如图8所示。

6d2e39ecfad6406d94ebe238176d652a.jpg

图8 应用服务器CPU曲线

JVM堆内存使用量曲线如图9所示。

df492cdcbfac470d8283b0ce92c99393.jpg

图9 JVM堆内存使用量曲线

初步确认申请交易1导致该问题出现,随后对申请交易1单独进行疲劳压测8小时,问题复现,确认该交易存在问题,测试结果如图10所示。

e7f05b22266d41f99c38c2394304382c.jpg

图10 应用服务器CPU曲线

JVM堆内存使用量曲线如图11所示。

9907e81d982049b1a688f334b1590f46.jpg

图11 JVM堆内存使用量曲线

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值