windows环境部署
1.安装环境变量
下载JDK,可以在oracle官网下载,也可以使用百度网盘下载
链接: https://pan.baidu.com/s/1QncVzXbJmKr8jzl-f0YXeg?pwd=v5ek
2.配置环境变量
将下载下来的JDk进行安装,添加JAVA_HOME 填写JDK存放路径(根据自己路径进行填写),如C:Program FilesJavajdk1.8.0_202
添加JMETER_HOME 填写Jmeter存放路径(根据自己路径进行填写),如D:办公3.软件jmeter5.1 java1.8apache-jmeter-5.1.1
添加CLASSPATH,将下面内容加在最后
代码语言:javascript复制;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;%JMETER_HOMElibextApacheJMeter_core.jar;%JMETER_HOME%libjorphan.jar;%JMETER_HOME%liblogkit-2.0.jar
添加Path,将下面内容加在最后
代码语言:javascript复制%JAVA_HOME%bin
%JAVA_HOME%jrebin
%JMETER_HOME%bin
3.修改Jmeter配置文件
进入Jmeter配置文件中D:/**/apache-jmeter-5.3/bin/jmeter.properties
server.rmi.ssl.disable=true # 将false改成true,去掉前面#号
添加发压机(这一步是添加使用Jmeter分布式需要启动的发压机,IP 端口):
remote_hosts=xxx.168.xxxx.2:1099,xxxx.168.xxx.3:1099,xxxx.168.xx.4:1099
4.启动jmeter
Jmeter工具使用请看下面文章:Jmeter压测工具入门篇
5.启动分布式服务
在slave机(发压机)上启动客户端jmeter-server.bat
如下图看到slave已经启动。
slave机启动后,在master选择 运行,远程启动/远程启动所有,就可以分布式的多台slave机一起压测了。
Linux环境部署
1.安装JDK Jmeter
安装jmeter之前需要先安装jdk,下载jdk(可以使用下面地址进行下载,也可以去官网下载,官网需要登录oracle)
链接: https://pan.baidu.com/s/1Gu5pwMxyxGxN3X94E5NKYg?pwd=ai6j
(内网部署只需要手动把JDK和Jmter包上传到内网解压,其余步骤不变)
解压jdk,这里安装到/usr/local/java/目录(安装路径根据个人喜好,但要和环境变量中的地址匹配)
代码语言:javascript复制tar -zxvf jdk-8u181-linux-x64.tar.gz
配置环境变量,修改配置文件vi /etc/profile
,文本最后加上以下内容
JAVA_HOME=/usr/local/java/jdk1.8.0_181
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
使环境变量生效
代码语言:javascript复制source /etc/profile
验证jdk配置成功
代码语言:javascript复制java -version
使用命令直接安装Jmeter
代码语言:javascript复制wget https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.3.tgz
如果是内网环境,需要手动上传Jmeter安装包,下载最新版Jmeter点击下载
解压jmeter,这里安装到/usr/local目录(安装路径根据个人喜好,但要和环境变量中的地址匹配)
代码语言:javascript复制tar -zxf apache-jmeter-5.4.3.tgz
建立脚本目录:/root/jmeter/scripts,#脚本上传的地址
建立报告目录:/root/jmeter/report,#报告生成存放目录
配置jmeter环境变量,vi /etc/profile
,文本最后加上以下内容
export JMETER_HOME=/usr/local/apache-jmeter-5.4.3
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH
使环境变量生效
代码语言:javascript复制source /etc/profile
验证jmeter配置成功
代码语言:javascript复制jmeter --version
2.环境优化
1.配置jmeter的使用内存,根据实际服务器和测试需求量来修改,最大为服务器内存的一半
代码语言:javascript复制vi /usr/local/apache-jmeter-5.4.3/bin/jmeter
2.优化linux内存参数,修改limits.conf文件:
代码语言:javascript复制vi /etc/security/limits.conf
最后添加(不同操作系统可能不一样,下面为centos):
代码语言:javascript复制* soft nofile 102400
* hard nofile 102400
* soft nproc 65535
* hard nproc 65535
重新打开SSH终端,执行如下命令查看是否生效
代码语言:javascript复制ulimit -n
3.修改Linux内核参数,修改/etc/sysctl.conf文件:
代码语言:javascript复制vi /etc/sysctl.conf
并添加以下内容:
代码语言:javascript复制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
输入下面的命令,让内核参数生效:
代码语言:javascript复制sysctl -p
3.修改Jmeter配置文件
进入Jmeter配置文件中D:/**/apache-jmeter-5.3/bin/jmeter.properties
server.rmi.ssl.disable=true # 将false改成true,去掉前面#号
添加负载机(这一步是添加使用Jmeter分布式需要启动的负载机,IP 端口):
remote_hosts=xxx.168.xxxx.2:1099,xxxx.168.xxx.3:1099,xxxx.168.xx.4:1099
4.编写Jmeter脚本
通过Windows把要压测的Jmeter脚本调试完成,保存为****.jmx文件,上传到Linux服务。
Jmeter工具使用请看下面文章:Jmeter压测工具入门篇
5.启动Jmeter
1)先分别启动slave(所有压测机)上的服务,命令如下(多网卡需要指定ip)
代码语言:javascript复制nohup jmeter-server -Djava.rmi.server.hostname=172.168.xxx.2 & #压测机IP
2)启动master,执行以下命令启动jmeter
代码语言:javascript复制jmeter -r -n -t ***.jmx -l test.jtl
参数说明:
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-r 代表全部agent启动并参与测试
3)如果要启动指定发压机,执行以下命令
代码语言:javascript复制jmeter -n -t ***.jmx -l test.jtl -R xxxx.168.xx,xxxx.168.xx,xxxx.168.xx
参数说明:
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-R 指定的agent启动并参与测试
6.停止Jmeter
进入到JMeter 的 bin 目录下,输入 ./shutdown.sh
命令停止脚本
注:如果在分布式压测过程中,想要终止压测,千万不要在Linux上按 ctrl c 强制终止程序,这样会知道主程序挂了之后,从机未接受到执行,会一直持续运行。当你再次从主机上运行脚本,从机仍然会在上一个脚本的程序中运行,这时需要去杀掉进程。
7.打包查看测试报告
将linux下的report打包成zip,然后导出到windows下查看index.html测试报告
8.强烈建议使用可视化的方式查看测试结果
可参考以下方式部署:JMeter Grafana Influxdb搭建可视化性能测试监控平台