分布式部署:坑,大坑~ 超级坑~~~~
在这里坑了2天,整整2天。其它略过不表下面只写经验:
在linux下,centos7系统 1主 14执行机。 jmeter版本 5.2.1 所有机器在同一个内网。
分布式部署时需要修改的配置:
1,执行机:
在官方下载原始zip包后,修改 bin 目录下:
jmeter.properties 中 文件参数 【 server.rmi.ssl.disable=true】 关闭SSL验证
jmeter-server 文件中 【RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.71.39】 修改IP地址为执行机本身IP---即通过ipconfig或ifcofnig查询得到的地址。 每个执行机都不一样。
2,JDK:尽量使用同一版本JDK。 一般大版本同样基本都行。但不确定。 jmeter 5.2.1配1.8 JDK
3,在目录下创建 ApiTest_CSV;ApiTest_log;ApiTest_Script;目录方便用来执行脚本,保存结果数据。
4:调度机: 调度机的配置要求可以不用太高2C4G一般就够用。
调度机需要修改的配置:
远程执行机IP配置:jmeter.properties 文件中 【remote_hosts=127.0.0.1】 修改ip地址为执行机ip地址。用逗号隔开。
server_port=1099:启用默认端口
如果需要配置其它端口,在ip后面带上 127.0.0.1:1099, 默认端口1099
jmeter.properties 中 文件参数 【 server.rmi.ssl.disable=true】 关闭SSL验证
jmeter-server文件中:RMI_HOST_DEF=-Djava.rmi.server.hostname=127.0.0.1 不进行修改
5:修改执行机使用的JVM内存:
网上有很多修改配置文件的方法,但我不太喜欢用。加上这次压力测试,并没做成持续集成。所以我喜欢使用命令的方式来进行设置:
【JVM_ARGS="-Xms1024m -Xmx3500m" ./jmeter-server】 设置内存为3500M---实际并发时发现大概1个线程会消耗3M的内存(并不通用)。所以具体配置多少内存看你的线程数量。 建议配置的内存大小不超过机器内存总量的一般,否则可能会卡会慢。
这些都配置好以后:在windows上修改好jmx脚本后,就可以放到 调度机上来执行啦~
执行命令:
【jmeter -n -t "/home/tst/ApiTest_Script/move_0406_1200TPS_moreUser.jmx" -l /home/tst/ApiTest_log/0410.csv -r 】 可以加 【&】 符号在后台执行。
停止命令: 在jmeter /bin 目录下 执行 ./stoptest.sh;
强制杀死 ./shutdown.sh
结果显示输出: 异常率高:经过排查,是连接响应超时:在服务器端并未受到这些丢失的请求。具体原因还未排查到。 可能与前端nginx配置有关系。也可能被拒绝了。---(问题已经找到,阿里云服务器开启了独享代理模式,导致NGINX与数据库之间连接同步,使用了长连接模式,导致数据库连接不释放。坑,真坑。)