Jmeter压测
摘要
Jmeter是一款java开发的测试工具,本文主要对Jmeter测测进行简单介绍,通过本文可以利用Jmeter快速进行压测
0 安装
首先需要安装jdk
在启动Jmeter时,会提示,使用GUI进行配置,使用CLI进行测试。所以在安装Jmeter时,需要在开发机和MAC中分别安装。
mac和开发机分别安装:
直接去官网下载 然后解压 https://jmeter.apache.org/download_jmeter.cgi
然后配置jmeter环境,
1 | export JMETER_HOME=/home/jmeter/apache-jmeter-5.6.3 |
jmeter -v出现提示则表示安装成功
由于是在开发机内进行测试,mac仅仅使用图形界面进行参数配置(也可以直接修改jmx文件),本质上mac上的jmeter只要解压缩即可。
1 测试
进入bin目录中,执行./jmeter.sh启动图形界面
首先添加线程组:
然后添加http请求
添加常量吞吐定时器,用于控制压测的qps
注意,常量吞吐定时器中的数值是每分钟的吞吐量,要计算qps时,需要除以60。此外,可以选择基于所有活动线程和单个活动线程,不同的选择实际的qps是不同的。
实际测试过程中发现,尽快常量吞吐定时器中的qps数值设置高,但是如果设置的线程数不够,qps也无法提高的预设的数值。
最后,在http请求中添加查看结果树和聚合报告,用于测试后的结果报告。
Web服务器的请求形式如下:
也可以添加断言,来调试测试中返回的结果是否符合预期。
设置完成后,保存,生成jtl后缀的文件,传到开发机中进行最终的压测。
测试命令如下:
1 | jmeter -n -t test.jmx -l test.jtl |
其中result是通过jtl生成的可视化结果
在开发机中,可以利用本地文件服务,利用本地浏览器直接浏览。 进入result目录,然后本地(mac)输入http://开发机ip:8888/ 即可。
1 | python -m SimpleHTTPServer 8888 |
2 踩坑
2.1 Non HTTP response code: java.net.NoRouteToHostException” rm=”Non HTTP response message: Cannot assign requested address
通常是压测机器的端口耗尽,可以修改本地配置:vim /etc/sysctl.conf
1 | net.ipv4.tcp_syncookies = 1 |
2.2 Connect值为0
jtl最后一列Connect表示的连接耗时。
如果开启Same user on each iteration,则表示线程不会重新进行连接,所以没有Connect耗时。
这与不勾选该选项测得的结果会差上Connect的平均耗时。