jmeter接口性能测试实例

一、写在前面
前段时间公司安排我对微服务算法接口做一个性能测试,好吧!做就做,以前没有真实性做过性能测试,所以在做测试的时候是一边学习一边测试,网上很多关于性能测试的教程,但是基本上都是一些理论上的知识,实际上最重要的分析也没有说过自己也是摸不到头脑,希望大家在看的时候能够有自己的理解,和对文章不足的地方指正。
二、项目架构
由于整个系统还在开发阶段,具体采用什么样的架构还要等到最后完成的时候才可以定,但是现在的话采用的是腾讯云Linux+Redis+nginx,当然还有docker,到底用不用docker要根据以后的性能来决定了。在做性能测试之前你一定要了解整个项目的架构,方便分析性能的瓶颈在何处,所以我在这个地方是根据开发和运维的分析确定瓶颈在什么地方。
三、工具的选择
性能测试工具:jmeter、xshell
服务器性能监测工具:nmon、
压力测试机:腾讯云Windows2018(Windows2003)、16G、64位
网络带宽:20M
四、策略分析
接口调试
jmeter接口性能测试实例
jmeter接口性能测试实例
这个接口是post请求,参数以json格式传递,所以要在HTTP请求前面加上一个HTTP请求头管理器的配置元件
结果
jmeter接口性能测试实例

发送成功,接下来修改线程组参数
jmeter接口性能测试实例
1、 线程数:可以理解为虚拟用户数
2、 Ramp-up-period:延时设置,0表示立即启动,1表示1S内启动多少个线程数,这里最好不要设置成0,在较大线程数的时候,导致起始TPS异常低
3、 循环次数:1就是只进行一次
4、 持续时间:压测的时间
我在这里设置的是线程数分别为50/100/500/800/1500,延时设置为1,循环次数勾选永远,表示1秒内发送50/100/500/800/1500个线程数,持续时间600s,压测10分钟
五、服务器监测
1、下载nmon文件,http://nmon.sourceforge.net/pmwiki.php
2、查看Linux服务器配置
uname -a # 查看内核/操作系统/CPU信息
head -n 1 /etc/issue # 查看操作系统版本
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名
free -m # 查看内存使用量和交换区使用量
3、将nmon文件上传到服务器
rz命令会直接弹出文件选择框,如果安装有xshell的话
解压nmon文件:tar zxvf 文件名
一定要先查看Linux服务器的配置,下载相应的文件
在执行nmon文件时,记得添加执行权限chmod +x ./nmon(这里我把需要的shell文件保留,删除了不需要的)
执行./nmon可以看到Linux性能的实时情况
在启动jmeter时,同时执行./nmon -f -c -s 每隔5S监测10分钟(我压测的是10分钟)所以./nmon -f –c 120 -s5
执行完毕需要下载nmon解析文件:
http://www.ibm.com/developerworks/wikis/display/Wikiptype/nmonanalyser
六、执行结果
Tps图这里只作为参考
jmeter接口性能测试实例
聚合报告
jmeter接口性能测试实例
在聚合报告没有报错的情况下troughput可以作为TPS的参考值,网上说的什么什么计算公式,估计自己也搞不清楚,所以这里大家记得,你不知道怎么算的时候就直接问项目组,这个项目要达到的性能指标是多少,再进行优化,毕竟不是每个公司都像BBA那样有专门的团队来支撑性能测试,做性能测试的成本很高。
Nmon监控
jmeter接口性能测试实例
CPU
jmeter接口性能测试实例
剩余内存
jmeter接口性能测试实例

I/O读写
jmeter接口性能测试实例

在本次测试活动中压测脚本经过无数次修改、调试、最终确定性能测试瓶颈在Redis,测试不止要测试,还要找出问题的原因。我在这里可能就是理解不够深入,在运维协助下确定性能瓶颈,毕竟软件本身没哟报错,日志没有报错,jmeter执行脚本也没有报错,查看nginx服务器压力也没有问题,唯独Redis服务器cup使用率非常高,连接数只有1024个,而我最大设置的线程数1500个,所以后面的就没有直接使用连接数,而是等待其他完成后再进行连接。