社区编辑申请
注册/登录
一篇学会 JMeter 分布式部署
开发 架构 分布式
在压力测试中,有一个常见问题就是压测机自身性能不行,无法提供满足要求的压力,达不到性能瓶颈,从而不能够满足测试的目的。

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

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

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

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

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

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

vi /etc/sysctl.conf

  1. vm.max_map_count=655360 
  2. vm.swappiness=1 
  3.  
  4. fs.file-max=655356000 
  5. fs.nr_open=104857600 
  6.  
  7. net.ipv4.tcp_fin_timeout = 30 
  8. net.ipv4.tcp_keepalive_time = 1200 
  9. net.ipv4.tcp_syncookies = 1 
  10. net.ipv4.tcp_tw_reuse = 1 
  11. net.ipv4.tcp_tw_recycle = 1 
  12. net.ipv4.ip_local_port_range = 1024 65000 
  13. net.ipv4.tcp_max_syn_backlog = 8192 
  14. net.ipv4.tcp_max_tw_buckets = 5000 

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

  1. /sbin/sysctl -p 

vi /etc/security/limits.conf

  1. root    soft    nofile    1048576 
  2. root    hard    nofile    67108864 
  3. root    soft    nproc     102400 
  4. root    hard    nproc     655360 
  5. *       soft    memlock   unlimited 
  6. *       hard    memlock   unlimited 

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

主控端linux

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

启动命令 ./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

  • 修改{dir}/bin/jmeter.properties 内的?server.rmi.ssl.disable=true ,注意把注释去掉,关闭ssl,不然还要配置证书
  • 修改监听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
  • 调用端口默认1099,如需修改,修改?{dir}/bin/jmeter-server 内的?SERVER_PORT:-1099 改这里

配置修改号后,启动 jmeter-server ,等待主控端发指令

最后整理下步骤

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

注意事项

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

作者:Zone_

链接:https://juejin.cn/post/7050030315942707236

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

责任编辑:武晓燕 来源: 掘金
相关推荐

2022-05-09 15:08:56

存储厂商NFV领域华为

2022-01-17 09:18:28

2022-04-08 11:08:17

分布式数据接口同步机制

2022-05-11 15:08:52

驱动开发系统移植

2022-05-16 10:36:08

GitHub开源项目

2022-04-15 09:23:29

Kubernetes面试题

2022-04-14 15:56:54

峰会存储

2022-05-16 13:37:12

Sysrv僵尸网络微软

2022-04-14 09:00:22

开源数据存储Ignite

2022-05-09 11:57:39

云原生实践安全

2022-03-22 15:04:20

中间件分布式软件鸿蒙

2022-05-16 10:49:28

网络协议数据

2022-05-18 10:58:36

LinuxKali Linux

2022-05-11 14:48:33

腾讯云寿险民生保险

2022-03-24 07:51:27

seata分布式事务Java

2022-05-17 16:56:33

开发工具前端

2022-05-17 15:51:32

数据中心运维能力基础设施

2022-04-21 09:26:41

FastDFS开源分布式文件系统

2022-03-24 09:44:09

曙光

2022-05-20 14:54:33

数据安全数字化转型企业

同话题下的热门内容

软件开发生命周期(SDLC)完全指南如何在C#语言中实施架构规则Spring Boot 整合多数据源,这才叫优雅详解多线程与Spring事务Spring Boot服务监控(Prometheus)链路追踪:核心原理与解决方案一次性聊透JVM架构设计,就算八股文也得会分布式系统之Sentinel介绍与使用

编辑推荐

终于有人把Elasticsearch原理讲透了!花了一个星期,我终于把RPC框架整明白了!拜托!面试不要再问我Spring Cloud底层原理陌陌基于K8s和Docker容器管理平台的架构实践收藏 | 第一次有人把“分布式事务”讲的这么简单明了
我收藏的内容
点赞
收藏

51CTO技术栈公众号