1 windows环境
1.1 配置环境变量
安装jdk-8u151-windows-x64.exe,无脑下一步
添加JAVA_HOME
C:\Program Files\Java\jdk1.8.0_151
如下图
添加JMETER_HOME
D:\办公\3.软件\jmeter5.1+java1.8\apache-jmeter-5.3
如下图
添加CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JMETER_HOME\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar
如下图
添加Path
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
%JMETER_HOME%\bin
如下图
1.2 修改Jmeter配置文件
#D:/**/apache-jmeter-5.3/bin/jmeter.properties
server.rmi.ssl.disable=true # 改成true
#添加负载机:
remote_hosts=172.168.0.2:1099,172.168.0.3:1099,172.168.0.4:1099
1.3启动jmeter
根据测试需求配置需要的线程(这里创建一个web接口的测试模板提供参考)
添加请求头header
测试地址根据需求填写,注意下图要勾选使用keepalive
(不勾选keep-alive的时候,当建立连接,数据传输完毕之后,服务器就会率先发起断开连接的操作,这个时候连接的状态为TIME_WAIT,并会保持2MSL(即两倍的分段最大生存期)。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以会严重影响服务器的处理能力,甚至耗尽socket,导致其他的请求不能处理。)
单机压测,查看报告
1.4启动分布式jmeter
开启slave
把安装包分发到slave机器
如上配置文件中填写的
172.168.0.2,172.168.0.3,172.168.0.4
在slave机上启动客户端jmeter-server.bat
启动后,如下图看到slave已经启动。
slave机启动后,在master选择 运行,远程启动/远程启动所有,就可以分布式的多台slave机一起压测了。
2 linux环境
2.1 安装jdk+jmeter5.3
1)下载rpm包jdk-8u101-linux-x64.rpm上次到服务器
2)安装jdk-rpm包
rpm -ivh jdk-8u101-linux-x64.rpm
3)验证安装是否生效
java -version
4)jmeter上传于解压
上传apache-jmeter-5.3.zip到服务启
#解压
#解压
unzip apache-jmeter-5.3.zip -d /usr/local/
chmod 777 /usr/local/apache-jmeter-5.3/bin/jmeter
chmod 777 /usr/local/apache-jmeter-5.3/bin/jmeter-server
2.2 配置环境变量
修改/etc/profile文件,并添加:
#vi /etc/profile
#插入一下内容
export JMETER_HOME=/usr/local/apache-jmeter-5.3
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH
配置的环境变量即可生效
source /etc/profile
验证jmeter安装是否生效
jmeter --version
2.3 环境优化
1)配置jmeter的使用内存,根据实际服务器和测试需求量来修改
vi /usr/local/apache-jmeter-5.3/bin/jmeter
2)优化linux内存参数
修改limits.conf文件,并添加:
#vi /etc/security/limits.conf
* soft nofile 102400
* hard nofile 102400
* soft nproc 65535
* hard nproc 65535
重新打开SSH终端,执行如下命令查看是否生效
ulimit -n
修改/etc/sysctl.conf文件,并添加:
vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 0
fs.file-max = 12553500
fs.nr_open = 12453500
kernel.shmall= 1048576
kernel.shmmax = 1887436
kernel.msgmax = 65536
kernel.sysrq = 0
kernel.pid_max= 65536
net.core.netdev_max_backlog = 2000000
net.core.rmem_default = 699040
net.core.rmem_max = 50331648
net.core.wmem_default = 131072
net.core.wmem_max = 33554432
net.core.somaxconn = 65535
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_mem = 1048576 1572864 2097152
net.ipv4.tcp_rmem = 4096 4194304 8388608
net.ipv4.tcp_wmem = 4096 4194304 8388608
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_window_scaling = 1
vm.swappiness = 0
#TCP connection recovery
net.ipv4.tcp_max_tw_buckets = 6000000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.route.max_size = 5242880
net.ipv4.ip_forward = 1
#0表示不开启检查时间错,建议设置0
net.ipv4.tcp_timestamps = 0
#开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
#TCP connection manager
net.ipv4.tcp_max_syn_backlog = 655360
net.ipv4.tcp_syn_retries = 6
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 6
#TCP keepalive
net.ipv4.ip_local_port_range = 1025 65534
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
输入下面的命令,让内核参数生效:
sysctl-p
2.4 修改Jmeter配置文件
#vi /usr/local/apache-jmeter-5.3/bin/jmeter.properties
server.rmi.ssl.disable=true # 改成true
#添加负载机:
remote_hosts=172.168.0.2:1099,172.168.0.3:1099,172.168.0.4:1099
2.5 修改jmx文件
通过windows打开jmeter,同上面windows配置把需要压测的信息配置完成后,保存为****.jmx文件,上传到linux服务。
2.6 启动jmeter
1)先分别启动slave上的服务,命令如下
jmeter-server -Djava.rmi.server.hostname=172.168.0.2 #本地IP
2)启动master,命令如下
jmeter -n -t ****.jmx -r -l /tmp/result/test.jtl -e -o /tmp/report
参数 n:非gui运行
t:指定测试脚本
R:指定多少个 agent 启动并参与测试
r: 代表全部 agent 启动并参与测试
l:生成测试结果文件
2.7 打包查看测试报告
将linux下的report打包成zip,然后导出到windows下查看index.html测试报告