(性能测试)--记录一次高可用场景导致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%

相关推荐
程序员龙叔4 天前
编写高质量 Skill 系列 -- 如何设计需求分析与用例生成的 SKILL
自动化测试·软件测试·python·软件测试工程师·接口测试·性能测试·skill·ai测试
小森林之主5 天前
Python re 模块速查:从实战对比中掌握正则表达式
python·正则表达式·性能测试·re模块·编程实战
程序员龙叔5 天前
从 0 开始学习 AI 测试 - 从接口测试来教你如何用 AI 来生成自动化测试代码
自动化测试·软件测试·python·软件测试工程师·测试工具·性能测试·ai测试
糖果店的幽灵6 天前
软件测试接口测试从入门到精通:JMeter接口测试
软件测试·jmeter·接口测试·压力测试·性能测试
小bo波10 天前
用匿名内部类优雅地计算方法执行时间
java·设计模式·性能测试·模板方法模式·lambda·代码优化·匿名内部类
测试199811 天前
Jmeter性能压测:TPS与QPS
自动化测试·软件测试·python·jmeter·测试用例·压力测试·性能测试
脑叔16 天前
opencode多会话并行测试:同时运行build/plan Agent性能评估
性能测试·ai编程助手·多会话并行
程序员小远23 天前
系统性能指标全解析
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·性能测试
学代码的真由酱24 天前
Java文档搜索引擎-测试报告
java·自动化测试·功能测试·搜索引擎·性能测试·测试报告
Python-AI Xenon1 个月前
Linux逻辑卷(LVM)初始化与文件系统选型全指南
linux·运维·性能测试·存储