侧边栏壁纸
博主头像
一朵云的博客博主等级

拥抱生活,向阳而生。

  • 累计撰写 67 篇文章
  • 累计创建 25 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

JMeter -- Linux云服务器公网远程调用(集群搭建)

一朵云
2022-04-15 / 0 评论 / 1 点赞 / 8514 阅读 / 10581 字

一、前言:

  之前已经介绍过Windows系统本地局域网搭建压力机集群的方式了,这次记录点儿更实用的,如何在Linux环境中搭建JMeter压力机集群,以及基本使用。

  首先我们要明确为什么要选择在liunx服务器上搭建压力机集群,而不直接在本地(自己的windows电脑)上搭建呢?

  其实就是为了更准确的压测。首先,压测目标机通常都是部署在云服务商的linux系统上的,如果我们使用本地搭建的压力机去请求,那么将会受到数据传输的带宽影响,使得数据失真。为了避免受带宽的影响,通常要求在同一内网环境下进行压测。其次,jmeter脚本在linux系统上执行,对本机的性能损耗更低,更能施压。

  综上所述,我通常都是在windows系统上完成压测脚本的编辑与调试,最终在linux系统上进行无GUI界面的操作。

二、基本原理:

  • 1、JMeter 分布式测试,选择一台测试机节点来当调度服务器,其他的测试机节点作为执行节点,通过调度节点管理其他节点;

  • 2、启动服务时,调度服务器会把脚本发送到各个执行节点(脚本会发送到执行节点,但是数据不会发送),执行节点拿到脚本开始执行命令;

  • 3、各个执行节点执行结束以后将结果回传给调度节点,调度节点进行数据汇总。

三、环境搭建:

通过三台不同网段的公网IP搭建压力机集群。

1. 安装JDK(java环境)

# 默认会选择jdk8,通过yum安装的jdk不需要手动配置环境变量。

yum install java

2. 下载JMeter并解压、配置

①、前往JMeter官网下载资源:https://jmeter.apache.org/

image.png

image.png

②、将下载好的资源传上服务器并解压。

# 若使用Xshell,可通过拖拽的方式上传资源,解压的操作如下:

tar -zxvf 压缩文件名.tar.gz

③、为JMeter配置环境变量,这样就能在任意路径执行JMeter了。

# 1、打开liunx的环境变量文件

vim /etc/profile

# 2、将以下内容黏贴、保存进文件(记得填写你自己对应的路径)

export JMETER_HOME=/data/jmeter/apache-jmeter-5.4.3

export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH

export PATH=$JMETER_HOME/bin:$PATH

# 3、保存退出文件后,执行下面两条加载刷新

source ~/.bash_profile

source /etc/profile

# 4、若出现修改配置后,基本指令丢失(command not found)的情况,可执行下面的指令,暂时应急回退,再重新检查修改填写的内容,最后在重复步骤3的指令。

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

# 5、任意路径下查看JMeter信息,加载出来就表示配置成功了

jmeter -v

image.png

3. 修改编码

找到 /data/jmeter/apache-jmeter-5.4.3/bin/jmeter.properties 文件,并修改默认编码为 UTF-8 。

sampleresult.default.encoding=UTF-8

4. 上传配置文件

  将常用的插件plugins-manager.jar、及自己封装的工具jar上传至对应的lib/ext目录下。

5. 主机(调度机)进行如下配置:

Ⅰ、进入jmeter的bin目录

cd /data/jmeter/apache-jmeter-5.4.3/bin

Ⅱ、编辑jmeter配置文件

vim jmeter.properties

Ⅲ、搜索并替换jmeter.properties的参数:

# 关闭SSL安全验证,使用公网IP的情况下,开启这个的话,启动jmeter-server会报错。
server.rmi.ssl.disable=true
# 配置压力机IP,多个使用逗号间隔开
remote_hosts=150.158.***.***,111.229.***.***,110.42.***.***
# 配置服务端口
server_port=1099

image.png

image.png

6. 从机(压力机)进行如下配置:

Ⅰ、进入jmeter的bin目录

cd /data/jmeter/apache-jmeter-5.4.3/bin

Ⅱ、编辑jmeter配置文件

vim jmeter.properties

Ⅲ、搜索并替换jmeter.properties的参数

# 关闭SSL安全验证,使用公网IP的情况下,开启这个的话,启动jmeter-server会报错。
server.rmi.ssl.disable=true

# 配置服务端口
server_port=1099

image.png

image.png

Ⅳ、编辑jmeter-server文件

RMI_HOST_DEF=-Djava.rmi.server.hostname=111.229.***.***

image.png

  以上就完成了集群的搭建了,需要特别注意的是,这里我无法使用ssl连接的方式搭建非内网的压力机集群,会报端口无法启动。(弄了几天都不行,网上也搜索不到,可能因为一般人都不会这样操作吧,都偏向内网下部署。)

image.png

c如果使用SSL,还有个坑:主机(调度机)密钥必须要在jmx执行路径下,否则会提示找不到签名key。

Ⅴ、启动jmeter-server服务

jmeter server

image.png

  提示:若想在控制台中打印信息,可在BeanShell中System.out.println(“”);

四、非GUI下,JMeter基本指令:

短命令 长命令 描述
–? 打印命令行选项和退出
-h –help 打印版本信息并退出
-v –version 打印命令行选项和退出
-p –propfile 要使用的JMeter属性文件
-q –addprop 额外的JMeter属性文件
-t –testfile 要运行的JMeter测试(.jmx)文件。“-t last”将加载最后使用的文件
-l –testfile 将文件到日志样本
-i –jmeterlogconf JMeter日志记录配置文件(log4j2.xml)
-j –jmeterlogfile JMeter运行日志文件(JMeter.log)
-n –nongui 在非GUI模式下运行jmeter
-s –server 运行JMeter服务器
-E –proxyScheme 设置用于代理服务器的代理方案
-H –proxyHost 设置用于JMeter的代理服务器使用
-P –proxyPort 设置JMeter的代理服务器端口使用
-N –nonProxyHosts 设置非申请主机列表(例如,*.apache.org
-u –username 为JMeter用于使用的代理服务器设置用户名
-a –password 设置JMeter使用的代理服务器的密码
-J –jmeterproperty = 定义其他JMeter属性
-G –globalproperty = 定义全局属性(发送到服务器) 例如 -Gport=123 或 -Gglobal.properties
-D –systemproperty = 定义其他系统属性
-S –systemPropertyFile 附加系统属性文件
-f –forceDeleteResultFile 如果在开始测试之前,请强制删除现有结果文件和Web报告文件夹
-L –loglevel = [类别=]级别为例如jorphan =信息,jmeter.util = debug或com.example.foo = warn
-r –runremote 启动远程服务器(如remote_hosts中的定义)
-R –remotestart 启动这些远程服务器(覆盖remote_hosts)
-d –homedir 使用JMeter主目录
-X –remoteexit 在测试结束时退出远程服务器(非GUI)
-g –reportonly 仅从测试结果文件生成报表仪表板
-e –reportatendofloadtests 负载测试后生成报告仪表板
-o –reportoutputfolder 报表仪表板的输出文件夹,文件夹必须为空,否则会失败

五、常用指令:

# 自行替换jmx路径、ip、jtl文件及路径
jmeter -n -t tests.jmx -R 172.17.0.5,172.17.0.15,172.17.0.14 -l result.jtl -e -o ./report

image.png

image.png

1

评论区