0
点赞
收藏
分享

微信扫一扫

Jmeter分布式压测

四月天2021 2022-03-30 阅读 54

分布式压测背景

压测不同请求量级的服务,需要模拟的用户并发请求数量也会差异很多。同时单机压测存在压测宿主机CPU和内存配置有限制,随着模拟用户线程数增加会让压测机存在很大性能瓶颈,所以需要通过jmeter分布式压测特性进行应用,支撑模拟更多用户进行压测

分布式压测配置

Controller机器配置

  • 找到%JMETER_HOME%/bin/jmeter.properties文件修改如下配置:
remote_hosts=192.168.100.36

server.rmi.ssl.disable=true

# To change the default port (1099) used to access the server:
#server.rmi.port=1234  如果server启动端口修改,则需要修改默认的端口
  • jmeter5.0以上版本需要生成证书(待完善 --前期报错未记录)

Agent机器配置

  • 找到%JMETER_HOME%/bin/jmeter.properties文件修改如下配置:
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099  #代表启动jmeter-server默认监听口

server.rmi.ssl.disable=true

若修改为端口10000启动服务后可以通过查看,对应服务监听了10000端口

 

分布式压测配置常见问题

1、jmeter远程启动提示“no such object in table”

解决方法:remote_hosts=192.168.100.36:1099 去掉配置host的端口

目前在默认在%JMETER_HOME%/bin/jmeter.properties指定了端口

# To change the default port (1099) used to access the server:
#server.rmi.port=1234  如果需要修改默认的端口则需要修改

2、远程启动服务时提示“java.net.ConnectException: Connection refused: connect”

可能原因:1、Slave未启动服务

2、启动服务但是同样报错,网络不同,检查agent和controller启动监听网口IP是否在同一网段

而我遇到的情况是,agent和controller存在多个网卡多个IP时,各自启动服务时监听网卡IP不在同一网段

服务端(Slave)配置:

方法一:
jmeter-server -Djava.rmi.server.hostname=192.168.100.xxx

方法二:
jmeter-server文件中添加
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.x.x (和控制端可以通信的IP)

但具体使用哪种方法,有什么区别?

很多没有说明清楚jmeter在什么环境使用如上配置,接下来分别查看安装bin目录下jmeter-server.sh和jmeter-server.bat文件内容如下:

  • jmeter-server.sh分析
  1. 发现文件中包含RMI_HOST_DEF变量,且启动命令中使用了RMI_HOST_DEF变量,可以初步判断当时在linux上启动jmeter server时可以通过这种方式指定启动的IP
${DIRNAME}/jmeter ${RMI_HOST_DEF} -Dserver_port=${SERVER_PORT:-1099} -s -j jmeter-server.log "$@"

  • jmeter-server.bat(部分实际运行内容)分析

1、(文件内容向下滚动)发现最后实际运行通过调用call jmeter -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS%或者call jmeter -Dserver_port=%SERVER_PORT% -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS%启动服务;

2、JMETER_CMD_LINE_ARGS通过脚本可以看出用于接受执行脚本文件时,cmd控制台传入的参数,例如jmeter-server -Djava.rmi.server.hostname=192.168.100.xxx命令中对应-Djava.rmi.server.hostname部分

3、是否可以通过如下方式设置达到目的,但最终发现始终失败,只有通过jmeter-server -Djava.rmi.server.hostname=192.168.xx.xxx能实现。按道理来将应该有其他解决方式,要不然每次加参数比较麻烦,待继续实践哈,给自己留点问题(2022.2.25)

 

setlocal

if exist jmeter-server.bat goto winNT1
echo Changing to JMeter home directory
cd /D %~dp0
:winNT1

if exist %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar goto setCP
echo Could not find ApacheJmeter_core.jar ...
REM Try to work out JMETER_HOME
echo ... Trying JMETER_HOME=..
set JMETER_HOME=..
if exist %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar goto setCP
echo ... trying JMETER_HOME=.
set JMETER_HOME=.
if exist %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar goto setCP
echo Cannot determine JMETER_HOME !
goto exit

:setCP
echo Found ApacheJMeter_core.jar

REM No longer need to create the rmiregistry as it is done by the server
REM set CLASSPATH=%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar

REM START rmiregistry %SERVER_PORT%
REM

rem On NT/2K grab all arguments at once
set JMETER_CMD_LINE_ARGS=%*

if not "%SERVER_PORT%" == "" goto port

call jmeter -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS%
goto end


:port
call jmeter -Dserver_port=%SERVER_PORT% -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS%

:end

rem No longer needed, as server is started in-process
rem taskkill /F /IM rmiregistry.exe

:exit

控制端(Controller)配置

修改jmeter.bat文件

增加配置项:set rmi_host=-Djava.rmi.server.hostname=1.X.X.X(和server可正常通信的IP)
修改配置项:set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %CLASS_UNLOAD% %DDRAW% %rmi_host%

3.当jmeter脚本中需要依赖csv等数据文件时,该文件需上传至服务器,并需要设置正确的路径

举报

相关推荐

0 条评论