栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jmeter分布式压测

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jmeter分布式压测

分布式压测背景

压测不同请求量级的服务,需要模拟的用户并发请求数量也会差异很多。同时单机压测存在压测宿主机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分析

    发现文件中包含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 "$@"

#!/bin/sh

删除掉部分内容

##   To change the RMI/Server port:
##
##   SERVER_PORT=1234 jmeter-server
##

DIRNAME=`dirname $0`

# If the client fails with:
# ERROR - jmeter.engine.ClientJMeterEngine: java.rmi.ConnectException: Connection refused to host: 127.0.0.1
# then it may be due to the server host returning 127.0.0.1 as its address

# One way to fix this is to define RMI_HOST_DEF below
#RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx

${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%libextApacheJMeter_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%libextApacheJMeter_core.jar goto setCP
echo ... trying JMETER_HOME=.
set JMETER_HOME=.
if exist %JMETER_HOME%libextApacheJMeter_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%libextApacheJMeter_core.jar;%JMETER_HOME%libjorphan.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等数据文件时,该文件需上传至服务器,并需要设置正确的路径

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781221.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号