专栏首页jmeter相关技术交流基于dubbo服务性能调优实战(1)

基于dubbo服务性能调优实战(1)

性能压测场景 1、本次需要对查询接口进行100、200、500并发逐渐递增方式进行性能压测 2、在压测过程中,100、200并发响应时间、吞吐量、报错率为0,满足性能需求 3、当并发用户为500时,报错率达到22%,此时经过监控服务器,发现服务器cpu、内存、硬盘、网络、应用服务gc情况未出现异常,满足指标 4、经过排查,本次应用服务使用的是Dubbo服务,通过修改jmeter断言,返回响应结果提示threadpool is exhausted ,detail msg:Thread pool is EXHAUSTED!,通过检查dubbo服务配置,threads只有200,当线程数大于200,就会报系统繁忙,请稍后在试,将该设置改为1000,500并发压测未出现报错,满足性能需求 5、本文记录下优化前测试结果、监控服务器(linux)资源方法、优化方法、优化后测试结果

一、优化前测试结果

1.100并发测试结果
2.200并发测试结果
3.500并发测试结果

二、服务器资源监控

1.网络资源情况:可以使用 sar -n DEV 10 120 命令,10代表10秒执行一次,总共执行120次,由下图可见 rxkB/s:每秒钟接收数据量,单位kb,  txkB/s:每秒钟发送数据量,单位kb ,每秒接收和发送没超过6M每秒,可以使用ifconfig命令查看网卡名称,然后使用ethtool eth0  查看当前服务器的带宽配置,由截图可知,当前网速带宽万M,每秒传输可达1000多M每秒,使用率不到1%,6M不考虑网络瓶颈
2.硬盘读写情况:可以使用iostat -x k 1 5命令,1代表1秒执行一次,总共执行5次,由图可知,总共有5块磁盘,磁盘最大读取900kb/S,最大写入2.2M/S,目前磁盘读取写入速度都是100M以上了,2M不考虑磁盘瓶颈,也可以关注%util指标,%util 表示磁盘忙碌情况,一般该值超过80%表示该磁盘可能处于繁忙状态
3.cpu负载情况:可以使用uptime命令,while true; do uptime; sleep 60; done 该命令能持续执行uptime命令,每隔1分钟执行一次,显示最近1、5、15分钟cpu负载情况,由下图可知,负载量最高为5,该服务器cpu核心数为4(上面硬盘、网络命令均有显示4CPU),如果超过4*1.7=6.8,考虑负载过高,sar - u 10 120,该命令用来查看所有cpu的使用率,由下图可知user+system的cpu使用率75%,未超过90%,不考虑CPU处理瓶颈,也可以使用 sar -P 0 1 2命令跟踪具体的cpu, 该命令0代表第一块CPU
4.内存使用情况 :使用free命令即可下图的while true; do free; sleep 10; done为每10秒执行一次,由图可见8G内存只使用了2.1G,可被应用程序使用的物理内存还有4.4G,不考虑内存瓶颈
5.应用服务(java类型)监听:首先输入jps -l ,该命令是显示当前系统所有的java进程,最前面显示的是进程id,找到当前应用服务的进程id,输入jstat -gcutil 29033 10000    29033代表进程id,10000代表10秒输出一次,该命令是跟踪java进程内存使用情况,由图可知FGC(主要关注该参数,代表回收老年代,每次回收应用都需要等待)总共发生了6次,压测期间没有增加,FGCT是FGC耗时24秒,如果频繁fgc考虑调整该服务内存大小,该服务进程内存满足需求
6.下图使用nmon进行监控,推荐使用该开源工具,./nmon -f -s5 -c10代表每隔5秒采集一次,采集10次,该工具可以监控到cpu、内存、硬盘、网络各种指标

三、优化方法

1.第二章监控了服务器的cpu、硬盘、内存、网络都满足性能要求,未出现异常,最后通过查看测试结果输出的HTML报告,看到系统返回报错的响应结果中提示duboo服务线程已经耗尽,最大线程数数为200
2.经过查看dubbo服务器配置,发现配置的线程数只有200,修改线程数为1000,在执行性能压测,结果满足指标,修改指标参考下图
3.参考地址  http://www.voidcn.com/article/p-bmgbfqvq-brm.html

四、优化后的测试结果

1.500并发测试结果如下:未出现异常
2.执行日志

五、性能瓶颈调优层级

本文分享自微信公众号 - jmeter相关技术交流(jmeter_auto),作者:JMeter技术研究

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Jmeter测试MD5加密接口性能测试实战

    jmeter技术研究
  • JMeter执行性能测试如何快速确定拐点

    1. 首先给大家介绍如何开发高效执行的性能测试脚本,目前多数用户都是分不同并发用户单次执行,该方法执行效率低,并且不方便数据比对,如下

    jmeter技术研究
  • 使用JMeter如何实现并发压测下的只登录一次

    如果文章对你有帮助,可以扫描下面的二维码进行关注,欢迎转发、本人会不定期发表和测试相关的文章,与大家分享测试技术,每一篇原创文章都是用心编写,杜绝抄袭复制,有纰...

    jmeter技术研究
  • 谷歌大脑提出并发RL算法,机器人也可以「边行动边思考」

    近年来,尽管深度强化学习(DRL)已经在视频游戏、零和博弈、机器人抓取和操纵任务中取得了成功,但大多数AI算法都使用了阻塞性的「观察-思考-行动」范式。

    新智元
  • GPU内存分级

    在NVIDIA的GPU中,内存(GPU的内存)被分为了全局内存(Global memory)、本地内存(Local memory)、共享内存(Shared me...

    刘盼
  • Xcode自带iOS测试方法

    #1. BSS段, 存放未初始化的全局变量. BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。

    周希
  • 面试官,Java8中JVM内存结构变了,永久代到元空间

    在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试者,如果知晓这些变化,又将成为面试中的亮...

    Java_老男孩
  • kubernetes中启动探针startupProbe

    因为k8s中采用大量的异步机制、以及多种对象关系设计上的解耦,当应用实例数 增加/删除、或者应用版本发生变化触发滚动升级时,系统并不能保证应用相关的servic...

    极客运维圈
  • MMU那些事儿

    [导读] 本文从内存管理的发展历程角度层层递进,介绍MMU的诞生背景,工作机制。而忽略了具体处理器的具体实现细节,将MMU的工作原理从概念上比较清晰的梳理了一遍...

    逸珺
  • win10 uwp slider 隐藏显示数值

    本文告诉大家,如何隐藏 slider 拖动出现的数值。 因为这个数值是控件给的,样子不好看,而且在 slider 的上面,不是在他的右边,所以需要隐藏他。

    林德熙

扫码关注云+社区

领取腾讯云代金券