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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

全部评论

相关推荐

04-10 11:02
已编辑
北方民族大学 全栈开发
“无名小卒,还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的烙印:《斗破苍穹》与《龙族》。它们总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得,自己就是那个衰小孩路明非。可路明非可以开挂,我不可以;我也无数次幻想过,能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:“我一定要为字节跳动卖命.jpg”。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。我很感谢我在百度的mentor,是她从茫茫人海选中了我,给了我大厂实习的机会。即便有段时间我状态差、产出不理想,她依旧愿意认可我、希望我留下转正。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发。2026.3.25 - 3.31,一周速通上海飞书,幸遇赏识我的伯乐,斩获Special Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务