(性能测试)--记录一次高可用场景导致CPU资源升高

测试场景:高可用场景--限流测试;

被测交易:查询类交易,HTTP协议;

交易链路:jmeter - web - coimpre(前置服务) -- coimbp -- cobp (coimbp 、coimpre 都会访问同一个数据库);

注:cobp 为合肥机房,其他服务均为北京机房,要注意跨网段存在网络延迟(会导致TPS波动情况);

场景配置:配置coimpre 服务的限流参数;

场景执行:执行场景使TPS 大于 限流参数,出发限流报错,可通过日志以及服务返回确认是否成功触发限流;

测试问题:交易触发限流后,监控coimpre服务CPU资源,从5% 上升至 90%以上,两次i验证执行,确认问题存在;

排查思路:

1. 使用top命令监控消耗CPU高的进程是否为java服务,(程序为java开发);

2.使用top -Hp pid 查看进程下的线程消耗进一步确认是哪个线程消耗;

3. 打印线程dump文件,分析dump文件查看该线程此时的业务操作'(第一个图是 linux下 jcmd生成的,第二个是使用的 java VisualVM 生成的)

4. 定位问题,给出优化意见,测试验证;

4.1 通过dump文件分析,有问题的线程主要是在java net.URClassLoader.findResouce()方法,通过第一个图可以看到java util.zip,ziprile getentry,结合两个方法,并通过和开发沟通是否对某个 ZIP 文件中文件文件有操作。

4.2 项目组确认,交易报错后,日志会打印错误信息并带出是哪个jar包导致的错误,从而就会遍历整个jar目录。

4.3 共同认定是该问题导致的cpu升高,开发人员修改此处代码,不再遍历jar。

4.4 修改后,重新部署版本,再次验证限流,cpu资源下降至10%

相关推荐
智擎软件测评小祺11 小时前
性能测试全流程解析:构建稳健系统的科学路径
性能测试·检测·cma·第三方检测·cnas·性能测试报告
Trouvaille ~11 小时前
【项目篇】从零手写高并发服务器(十):性能测试与项目总结
linux·运维·c++·reactor·性能测试·高并发服务器·webbench
文人sec1 天前
【Linux 服务器上搭建 JMeter 性能测试与监控环境(实战版)】
linux·运维·服务器·jmeter·性能测试
测试19985 天前
功能测试、自动化测试、性能测试的区别?
自动化测试·软件测试·python·功能测试·测试工具·性能测试·安全性测试
张永清-老清10 天前
每周读书与学习->Jmeter中如何使用Bean Shell脚本(三)Bean Shell的基础语法之运算符和控制流语句
学习·jmeter·性能优化·性能测试·jmeter性能测试·beanshell·每周读书与学习
张永清10 天前
每周读书与学习->Jmeter中如何使用Bean Shell脚本(三)Bean Shell的基础语法之运算符和控制流语句
jmeter·性能测试·性能调优·jmeter性能测试·性能分析·性能监控·性能诊断·每周读书与学习·bean shell
埋头编程~13 天前
【测试报告】网页端博客系统
功能测试·压力测试·性能测试·测试
测试199816 天前
软件测试之压力测试详解
自动化测试·软件测试·python·测试用例·接口测试·压力测试·性能测试
VAllen16 天前
ConcurrentNativeQueue<T>:一个使用 .NET 实现的零 GC 压力的无锁 MPSC 原生队列
c#·.net·性能测试·.net core·dotnet·csharp
张永清17 天前
每周读书与学习->Jmeter中如何使用Bean Shell脚本(二)Bean Shell的基础语法之变量与数据类型
性能测试·性能调优·jmeter性能测试·性能分析·每周读书与学习·bean shell