使用Jmeter之前,需要安装JDK,否者不能运行
Jmeter下载:进入官网:http://jmeter.apache.org/
Jmeter环境变量的配置
1)进入环境变量配置页面
2)新建一个变量:JMETER_HOME,变量值为为解压的Jmeter安装路径。
3)配置classpath变量,新家系统变量classpath里面添加变量值:%JMETER_HOME%\lib\ext\Apache_JMeter_core,jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar
4)基本配置完成后验证配置是否正确,是否可用
进入到解压的jmeter文件,进入bin目录,双击打开jmeter.bat文件。如果弹出两个界面就说明配置成功(一个命令界面,一个工作页面)
Jmeter的使用方法
1)测试计划->添加->线程(用户)->线程组
2)设置并发数量
3)添加协议及相关配置信息
线程组->添加->取样器->HTTP请求
4)配置相关协议的信息
5)为线程添加监听器(自己选择)
6)启动测试,查看报告(点击那个绿色的启动按钮)
Label: 每个Jmeter的element的name值(http request的值)
Samples(样本):样本数量,多少个请求
Average(平均值):平均响应时间,默认是单个request的平均响应时间。
Median(中位数):50%的用户的响应时间
90%%Line:90%用户的响应时间
95%Line:95%用户的响应时间
99%Line:99%用户的响应时间
Min(最小值):最小响应时间
Max(最大值):最大响应时间
Error%(异常%):本测试中出现错误的请求数量/请求的总数
Throughout(吞吐量):默认情况下表示每秒完成的请求数
KB/sec(接受kb):每秒从服务器端接受到的数据量
Jmeter通过分布式实现高并发
由于Jmeter创建一个用户就需要一个单独的线程,因此在一台计算机上对成百上千万的用户基准测试是不切实际的,于是需要通过分布式的方式来进行解决。即是一个电脑上的Jmeter作为controller控制其他电脑(agent)上的Jmeter运行,以此来实现高并发,
1)在作为agent的计算机上安装Jmeter,比如ip为192.168.0.2和192.168.0.1的两台计算机。
2)在controller上的Jmeter的bin目录找到Jmeter.properties文件并打开
3)找到”remote_hosts=127.0.0.1“(127.0.0.1即表示agent的机器),改为”remote_hosts=192.168.0.1:1099,192.168.0.2:1099"(1099表示Jmeter的controller和Agent之间进行通信的端口号。(只用修改作为controller上的文件即可)
4)依次启动controller上的jmeter_server.bat和Agent上的jmeter_server.bat
5)启动controller上的Jmeter.bat进入运行->远程启动->可以看到那两个agent
6)需要那个电脑执行就点那个
Jmeter添加Stepping Thread Group 插件来逐步负载
1)下载plugins-manager.jar,下载地址:https://jmeter-plugins.org/downloads/all/
2)将下载后的jar包直接放进Jmeter安装目录下的lib->ext目录下,重启Jmeter
3)打开Jmeter开始安装jpgc-Standard Set
然后选择Available Plugins 滑到最下面找到jpgc-Standard Set 勾选并应用(我这里由于安装好了,所以没有这个选项)
4)使用,测试计划->添加->线程->Stepping Thread Group
5)参数介绍
This group will start 100 threads:设置单台负载机,线程组启动的线程总数为100个
First,wait for 0 seconds:启动第一个线程之前,需要等待0秒
Then start 10 threads:设置最开始启动10个线程
Next,add 10 threads every 60 thread, using ramp-up 1 secoonds:每隔60秒在1秒内启动10个线程
Then hold load for 300 seconds:单台负载机启动的线程总数达到100个,持续运行300秒
Finally,stop 10 thread every 1 seconds:最后每隔1秒,停止10个线程
6)遇到的问题
在创建线程后,每个线程会持续创建请求,因此在后面会出现端口不够用的情况,每次请求就会占用一个端口,而请求完后tcp连接会保持TIME_WAIT状态,从而是得端口得不到释放,测试一会后就会报错
希望有大神看到了帮忙解答。
参考链接:
https://blog.csdn.net/wz1997/article/details/78906244
https://www.cnblogs.com/monjeo/p/9330464.html