jmeter linux 无gui模式分布式压测
一、linux下安装jmeter
1.安装jdk
1.1下载jdk:8.0版本
1.2手动安装完成,配置jdk环境变量
jdk环境变量配置
1.2.1界面配置:windows
1. 打开环境变量配置。计算机→属性→高级系统设置→高级→环境变量,在系统变量中配置。
2. 配置JAVA_HOME。新建,变量名JAVA_HOME,变量值,jdk路径,我的路径是C:\Program Files\Java\jdk1.8.0_271,保存。
3. 配置CLASSPATH。新建,变量名CLASSPATH,变量值,.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(第一个分号前前面有一个点)。
4. 配置Path。打开Path变量,在变量值最前加入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
1.2.2命令行配置:linux
打开然后把下载好的文件拖到服务器即可
也可以直接通过命令行下载wget命令 地址
登录Linux,切换到root用户
su root 获取root用户权限,当前工作目录不变(需要root密码)
或
sudo -i 不需要root密码直接切换成root(需要当前用户密码)
# jdk
1.将jdk文件拖拽压缩包到/tmp目录,所以路径是/tmp/jdk
2.执行命令:copy文件到local目录
cp /tmp/jdk /usr/local
3.进入/usr/local目录解压jdk到当前目录
cd /usr/local
4.unzip jdk.zip
得到文件夹 jdk
5.修改文件名为jdk
mv apache-jdk jdk
6.编辑配置文件,配置环境变量
vim /etc/profile
添加如下内容:
JAVA_HOME根据实际目录来
export JAVA_HOME=/usr/local/java/jdk
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
7.执行命令 :
点击etc
输入命令:强制保存并退出
:wq!
8.生效配置命令
source /etc/profile
9.查看安装情况 java -version
java version "1.8.0_60"
2.安装jmeter
2.1手动下载jmeter
2.2用上面的方法放到服务器端
2.3在usr目录下建立jmeter安装目录
cd /usr/local mkdir jmeter
注⚠️:现在不需要新建文件夹,因为解压包后会生成jmeter文件夹,但需要改名字
只需要直接在local目录解压缩即可生成一个文件夹jmeter-5.4
2.4.将apache-jmeter-5.4.zip拷贝到local目录下
linux拖到了压缩包到/tmp目录,
所以路径是/tmp/apache-jmeter-5.4.zip
cp /tmp/apache-jmeter-5.4.zip /usr/local
2.5.进入/usr/local目录解压jmeter到当前目录
unzip apache-jmeter-5.4.zip
得到文件夹 apache-jmeter-5.4
扩展:zip -q -r test.zip test1(是压缩文件test1为test.zip压缩包)
2.6.修改文件名为jmeter
mv apache-jmeter-5.4 jmeter
在进入jmeter-5.4目录就可看到bin所在目录
3.再安装jmeter插件
3.1下载插件:
MeterPlugins-Standard-1.4.0.zip :聚合报告等的插件
JMeterPlugins-Extras-1.4.0.zip:聚合报告等的插件
ServerAgent-2.2.1.zip :为了监控被测服务器的cpu、内存、网络情况等
可以直接将解压缩后的standard和extras直接拖到服务器
3.2将该文件copy到jmeter的lib/ext
cp /tmp/JMeterPlugins-Extras.jar /usr/local/jmeter/lib/ext/
cp /tmp/JMeterPlugins-Standard.jar /usr/local/jmeter/lib/ext/
3.3返回jmeter目录
返回上层目录需要在目录:直接补全路径即可
cd /usr/local/jmeter/bin
3.4配置jmeter环境变量
vim /etc/profile
滑动到最后一行
键盘点击:i-进入编辑模式
粘贴
# jmeter
export JMETER_HOME=/usr/local/jmeter
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH
键盘点击esc退出编辑模式
:wq!
source /etc/profile—手动生效
然后输入jmeter -v
3.5启动jmeter:进入bin目录执行jmeter.sh
二、创建jmeter运行文件
1.因为大型压测需要减轻可视化界面带来的负载,不受jmeter本身影响所以只能采用非可视化界面
那么需要在win本地打开gui界面,创建plan计划,生成jmx文件,放到linux服务运行该文件
2.创建好jmx文件后用root权限在linux跳板机中运行非gui命令
输入命令:jmeter -n -t /tmp/Group.jmx -l test1.jtl -e -o test
jmeter -n -t /tmp/Group.jmx -l test1.log(打印log)
参数说明:
-n:以NoGUI方式运行脚本
-t:后面接脚本名称--本地生成的jmeter命令文件
-l:后面接日志名称,保存运行结果--必须不存在
-e -o:需称对存在和-l,否则无法生成可视化表格--文件名必须不存在(因为会自动生成文件名)
他是通过生成log,通过log再生成html文件,再生成图标
3.生成的文件cp到tmp再下载到本地查看
test文件夹需要先压缩包,再cp
zip -q -r test.zip test
其它说明:
1、调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
2、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
本地gui客户端新建jmx文件-参数化配置
linux分布压测参数化运行
如果压测时需要用到参数化数据:传的参数是动态的从csv文件获取
那么从本地的gui,jmeter生成jmx文件时,csv的路径需要写成远程服务器调用的地址,并且把csv文件放到该地址

需要添加请求头,否则会报错415
linux删除文件命令
rm -f /usr/local/jmeter/checkLabelByModels.jmx
删除文件夹实例
rm -rf /var/log/httpd/access
4.jmeter 请求域名随机

${__RandomFromMultipleVars(ip1|ip2)}是随机获取变量ip
IP值存在用户自定义变量中,也可以${ip}放到csv文件中
如果有多个http请求,可以把用户自定义变量放到线程组外面
三、分布式集群
1.服务器之间是否可以ping通
ping通是不断请求数据的记录,没有则没ping通
ctrl+c可以bai终止ping
2.启动jmeter-server
如果报错需要修改jmeter.properties文件
vim jmeter.properties--进入文件编辑界面
通过按键盘“insert"键插入 进入编辑模式
将jmeter.properties中server.rmi.ssl.disable=false前面的注释取消,然后改成true也就是禁用加密模式
编辑完成后” esc “键退出编辑模式
保存退出文件 ” 英文格式下 :wq
3.修改jmeter.properties
slave:
如果需要固定slave的端口,则配置如下,不固定的话,则随机可不配置
在slave机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1088:
server_port=1088
server.rmi.localport=1088
master控制机打开jmeter.properties,
remote_hosts=127.0.0.1
修改:remote_hosts=ip1:1088,ip2:1088,ip3:1088
即主机外网ip和固定的端口号1099(要和slave的server_port一致)
如果加端口号就必须slave配置固定端口
否则master可以不加端口配置:
remote_hosts=ip1,ip2,ip3
4.然后把jmeter的整个文件用本地打开,验证下配置的ip是否正确
把文件cp到tmp下面
直接下载到本地
cp /usr/local/jmeter/bin/jmeter.properties /tmp
把文件cp到tmp下面
直接下载到本地
cp /usr/local/jmeter/bin/jmeter.properties /tmp
分布式运行命令
运行全部slave机
jmeter -n -t xxx.jmx -l xxx/xxx/xxx.jtl -e -o xxx/xxx/xxx -r
运行执行的slave机
jmeter -n -t xxx.jmx -l xxx/xxx/xxx.jtl -e -o xxx/xxx/xxx -R:ip1,ip2,ip3

浙公网安备 33010602011771号