JMeter分布式部署

在压力测试中,有一个常见问题就是压测机自身性能不行,无法提供满足要求的压力,达不到性能瓶颈,从而不能够满足测试的目的。在单台压力机性能不足但是有其他可用的压力机这种情况下(有多台虚拟机,但每台的性能都不够强),可以使用分布式部署 1主多从的方式,充分利用多台服务器的性能,提供足够并发压力来满足测试需要。笔者使用这种方式,利用15台服务器的压测集群达到了3W并发请求的压力。

分布式部署为一个主控端,多个被控端。主要是配置被控端。均需要部署在linux上,目前发现windows作为主控端访问linux被控端会特别卡。

需要被控端先启动 jmeter-server,主控端通过rmi 访问。

需保证主控端能够访问被控端的IP地址

如果有额外的插件或数据源(如csv等),主控端被控端都需要增加


linux系统参数优化。linux默认最大连接数1024,在压测过程中经常会出现连接数不足导致的异常,需要先调整系统参数再做测试。

vi /etc/sysctl.conf

vm.max_map_count=655360
vm.swappiness=1

fs.file-max=655356000
fs.nr_open=104857600

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000

修改完毕后执行下面命令生效

 /sbin/sysctl -p


vi /etc/security/limits.conf

root    soft    nofile    1048576
root    hard    nofile    67108864
root    soft    nproc     102400
root    hard    nproc     655360
*       soft    memlock   unlimited
*       hard    memlock   unlimited

注:vi编辑器,按下 i 进入编辑模式。shift + insert 粘贴,编辑完成后按 esc 退出编辑模式,输入 :wq 保存并退出

主控端 linux

  1. 修改 {dir}/bin/jmeter.properties 内的 server.rmi.ssl.disable=true ,注意把注释去掉,关闭ssl,不然还要配置证书。此点被控端主控端需保持一致
  2. 将编辑好的脚本生成 jmx
  3. 使用命令行启动jmeter  -R 后写被控端IP和端口号,多个被控端使用 ,  分隔。 -l 存储结果 -e -o 输出html的地址
  4. 脚本注意要设置持续时间或者循环次数,到达指定时间或次数后会自动停止开始生成报告。设置错误可能导致测试无法中止,只能够手动关闭。手动关闭无法生成报告

启动命令 ./jmeter -n -t ../test2.jmx -R 192.168.0.140:8123,192.168.0.156:8123 -l ../results/5.jtl -e -o ../results/html5

被控端  linux

  1. 修改 {dir}/bin/jmeter.properties 内的 server.rmi.ssl.disable=true ,注意把注释去掉,关闭ssl,不然还要配置证书
  2. 修改监听IP,可以使用 ifconfig 查看本机IP。修改 {dir}/bin/jmeter-server 内RMI_HOST_DEF=-Djava.rmi.server.hostname={IP} 注意把注释的 # 去掉。
    如RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.181
  3. 调用端口默认1099,如需修改,修改 {dir}/bin/jmeter-server 内的 SERVER_PORT:-1099 改这里
  4. 配置修改号后,启动 jmeter-server ,等待主控端发指令

最后整理下步骤

  1. 使用jmeter可视化界面编写压力测试脚本,并且调试完成
  2. 部署被控端和主控端jmeter,并且修改好配置
  3. 将编写好的jmx脚本放到主控端中
  4. 在主控端启动测试,可以通过命令行参数来指定循环次数和执行时间,同时指定有代表性的html文件夹名称,方便后续访问
  5. 等待测试执行完毕并生成测试报告html文件
  6. 打开html/index.html 查看测试报告,建议用nginx开始auto_index来访问

注意事项

  1. 如果执行的测试过多,主控端最终生成报告时会非常慢,还可能内存不足,要提高jmeter使用的java虚拟机的内存配置。必须等待测试程序自己完成才行,否则测试报告会无法访问
  2. 如果并发非常大时,首先造成的是网络瓶颈,必须修改网络连接参数以满足连接数的需要,否则并发压力在网络层就已经阻塞了,无法打到业务服务器上,会达不到测试的目的


作者:Zone_
链接:https://juejin.cn/post/7050030315942707236
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

全部评论

相关推荐

粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务