记一次公司jmeter压测时cpu过高,jvm调优解决方案

问题现象

因为涉及到人行征信报文测试的报文有2.7M需要进行特征计算衍生。使用jmeter压力测试发现服务器cpu几乎打满,qps始终只有25左右。换成90k小报文后qps立马就能上到1200后来我使用了一下阿里巴巴的一款Arthas工具打算先分析一下是GC导致的cpu高还是代码中存在死循环之类的代码

解决过程

因为服务器不能连接外网所以从改地址先下载arthas 后再上传到服务器

下载 — Arthas 3.5.4 文档

启动命令:

java -jar arthas-boot.jar

然后回车输入:dashboard 用于查看cpu,内存,GC等情况

可以看出大半的cpu资源都是被GC回收所占用。

接下来的问题就是要解决GC频繁的问题了。

使用:jstat -gcutil  进程号 1000 1000  示例:jstat -gcutil 11051 1000 1000

查看到 full GC发生频繁,而且 O 列很明显每次GC后回收了一半的内存空间。(此处还有一种情况,就算full GC频繁,但是O列的内存空间几乎没什么变化,这种情况大概率就是代码里有很多对象放到老年代始终无法回收,需要具体到代码层面分析了,Arthas也可以做到,此处就不再讲述了)

那么很明显了,我了解到的对象会加入老年代有两种情况:1,对象经过15次gc后会从年轻代挪到老年代;2,一次插入的对象太大了超过了年轻代空间的1/2会直接挪到老年代。

很显然我们的问题应该是第二种情况,因为body体中的一个请求就有2.7M.

解决方法:由于jvm默认的年轻代和老年代空间大家比例是1:2。故将年轻代的空间调大即可,从而避免以上第二种情况的发生,同时也是减少年轻代垃圾回收的频率。

vi ~/.bash_profile  将年轻代调整为10G

source ~/.bash_profile 

再测qps提升了近4倍,GC不再频繁

如果不是gc导致的cpu异常的高。可以通过thread -n 10这个命令来查看是什么代码消耗cpu资源比较多。

补充:thread -n 10 这个命令只能看到瞬时是cpu资源消耗,有时候为了精准的调优代码,可以通过arthas 输出一个火焰图,上面可以看到单位时间内的cpu消耗从而进行压测调优代码

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用JMeter进行CPU试,您可以使用以下步骤: 1. 首先,确保您已经安装了JMeter插件。插件可以从JMeter-Plugins.org的下载链接中获得。 2. 根据您的具体需求,选择适合的工具。常见的工具包括ab、locust、JMeter、go实现的工具和云等。对比这些工具的特点、性能和易用性,选择最适合您的工具。 3. 在JMeter的bin目录下执行试计划。可以使用以下命令运行JMeter脚本: ``` $ jmeter -n -t user-login.jmx -l login-result.jtl -e -o ResultReport ``` 其中,user-login.jmx是脚本名称,login-result.jtl是生成的日志文件,ResultReport是生成的报告目录。使用参数-n表示在非GUI模式下运行JMeter,-t指定要运行的JMeter试脚本文件,-l指定录结果的文件。其他参数如-h、-r、-H和-P等可以根据需要进行设置。 4. 运行试脚本后,JMeter会模拟多个用户并发执行试脚本中的请求,从而产生对CPU力。通过查看试结果日志和报告,您可以获取有关CPU使用率、响应间、吞吐量等性能指标的数据。 请注意,CPU试不仅涉及JMeter的工具使用,还需要根据具体场景和需求进行脚本编写和配置。建议您在使用JMeter进行CPU试之前,先了解JMeter的基本使用方法和性能试原理,以便更好地使用和解读试结果。 jmeter插件下载链接: Download :: JMeter-Plugins.org 常见工具和如何选择工具的参考资料 JMeter命令行参数的详细说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值