news 2026/4/17 23:31:13

【JMeter】使用内网负载机(Linux)执行JMeter性能测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【JMeter】使用内网负载机(Linux)执行JMeter性能测试

一、背景

在我们工作中有时候会需要使用客户提供的内网负载机进行性能测试,一般在什么情况下我们需要要求客户提供内网负载机进行性能测试呢?

1、遇到公网环境下性能测试达到了带宽瓶颈。那么这时,我们就需要考虑在内网环境负载机下来执行我们的性能测试以达到屏蔽带宽影响的目的。

2、系统对高并发做了防护,例如ddos防护

3、测试的并发过高导致负载机先达到瓶颈

本节我们介绍在内网负载机下执行JMeter性能测试。

二、准备

我们需要准备一下我们接下来需要用的东西:

ssh连接工具(例如:Xshell、Git Bash,在这里我们使用Git Bash)

apache-jmeter-5.5或以上(版本过高会导致java版本过高的报错提示)

性能测试脚本

脚本如下:

三、假设

在这里我们先做出一些假设:

  1. 被测网站为https://www.baidu.com。(我们一般在测试时测试的域名为http而非https)
  2. 负载机处于baidu内网环境中
  3. https://www.baidu.com 在内网中对应的内网ip为10.5.16.8
  4. 文章中负载机已安装配置环境,在本文中我们假设未安装任何环境

四、操作步骤

1、连接负载机

首先我们在脚本及jmeter所在文件夹下右键打开Git Bash

连接负载机

ssh root@192.168.2.45 # root为登录的用户,@后为访问负载机ip地址

AI写代码bash

回车出现

root@192.168.2.45’s password:

我们输入密码后回车即可,登录成功

2、检查环境

首先检查java环境

java --version

AI写代码bash

出现类似以下内容表示环境中存在java

检查jmeter环境

jmeter --version

AI写代码bash

出现类似以下内容表示环境中存在jmeter

查看Linux内存

free -h

AI写代码bash

这里我们可以发现我们内存为1.6GB

查看LinuxCPU信息

cat /proc/cpuinfo

AI写代码bash


这里我们看最后一个processor序号为1,故CPU为2核

查看Linux系统架构

uname -a

AI写代码bash

这里可以知道系统架构为x86_64

3、测试准备

​ 在上文中我们说到,假设负载机未安装任何环境。这里我们分别介绍两种方式进行安装。

(1)Java安装(链接下载)

首先我们打开Java官网(其他下载地址也可)https://www.oracle.com/java/technologies/downloads/,选择jdk17(这里我们用jdk17进行演示)

这里我们复制x64 Compressed Archive(具体下载的包取决于之前查询的CPU架构来决定)后的链接:https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

创建java目录

mkdir ~/myTest mkdir ~/myTest/java cd ~/myTest/java

AI写代码bash

使用wget命令下载,等待下载完成

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

AI写代码bash

PS:该方法需要确保负载机可以连通外网使用一下命令检查

ping www.baidu.com

AI写代码bash

下载完成后查看

解压

tar -zxvf jdk-17_linux-x64_bin.tar.gz

AI写代码bash

(2)JMeter安装(文件传输)

​ 向负载机传输文件我们可以通过ftp服务器传输。但是在这里我们用了Git Bash,在这里我们使用更加简便的scp来进行传输。

退回上一层,创建jmeter目录

cd ../ mkdir jmeter cd jmeter

AI写代码bash

再次在放置脚本及jmeter所在文件夹下右键再次打开一个Git Bash

输入命令

scp ./apache-jmeter-5.4.1.zip root@192.168.2.45:~/myTest/jmeter

AI写代码bash

输入密码后上传

上传后关闭该窗口,回到之前的bash窗口检查是否上传成功

解压

unzip apache-jmeter-5.4.1.zip

AI写代码bash

到了这里我们就基本可以开始操作脚本了,但是大家可能会好奇,环境变量怎么没有配置呢?

​ 并非是我们不配置环境变量,而是因为在测试中,我们一般不在客户的环境中配置永久环境变量,我们一般采用临时环境变量。这个我们在后面会说如何去配置

那么为什么要用临时环境变量呢?

​ 临时环境变量是指仅在当前系统会话有效的环境变量,该环境变量不会被写入系统的环境变量文件,也不会被永久保存。临时环境变量会在关闭本次会话后自动清除,不会影响下一次系统登录。同时也不会影响用户原有服务的环境变量。

在这里我们还需要进行一步编辑,需要修改我们的jmeter.sh文件或jmeter文件,这里我们修改jmeter.sh文件。

进入bin目录

cd bin ls

AI写代码bash

修改jmeter.sh

在这里有几个问题需要解释一下

为什么需要修改这个配置?

​ 在大并发的测试中,我们需要的大量的内存来执行压力测试,而JMeter在默认情况下的内存分配非常低,我们需要自己把该项配置的最大堆修改成合适的值

那么我们应该修改成多少合适呢?

​ 根据负载机的内存来决定该项的值为多少。在前面我们查询了内存为1.6GB,所以我们设置成1GB。一般建议设置为内存的80%。例如一台8GB的负载机,我们可以设置为6GB。

vim jmeter.sh

AI写代码bash

找到JVM-ARGS

复制该行,去除注释,将512m修改为合适的大小

4、调试脚本

回到我们上面的脚本截图

既然我们是在内网环境下运行,那么我们应该将URL改为内网ip访问才会达到理想效果。否则同样需要走公网进行访问。那么我们需要怎么解决呢?

方法一:

​ 我们可以直接将域名改为IP。但是该方法不推荐

方法二:

​ 修改负载机的host文件。推荐

为什么我们不推荐方法一呢?

​ 如果使用的是方法一,我们就无法本机上进行调试。而使用方法二我们不仅可以进行本机调试,而且在负载机上也走的是内网而不是公网。

5、修改host

我们先修改hosts文件

vim /etc/hosts

AI写代码bash

输入i插入host信息,修改后按esc后输入:x

6、配置运行脚本

新建一个文件夹放置脚本

同样使用scp将脚本拷贝进文件夹

scp ./内网测试.jmx root@192.168.2.45:~/myTest/jmeterTest

AI写代码bash

新建run.sh文件(也可以选择在本机新建好再传入负载机)

mkdir run.sh vim run.sh

AI写代码bash

run.sh脚本如下

export JAVA_HOME=~/myTest/java/jdk-17.0.8 # jdk所在目录 export JMETER_HOME=~/myTest/jmeter # jmeter所在目录 export PATH=$JAVA_HOME/bin:$PATH:.:$JMETER_HOME/bin:$PATH # jdk和jmeter的bin目录 java --version # 检查java是否配置成功 jmeter --version # 检查jmeter是否配置成功

AI写代码bash

配置完成后保存,执行run.sh

bash run.sh

AI写代码bash

环境生效

再次编辑run.sh

export JAVA_HOME=~/myTest/java/jdk-17.0.8 # jdk所在目录 export JMETER_HOME=~/myTest/jmeter # jmeter所在目录 export PATH=$JAVA_HOME/bin:$PATH:.:$JMETER_HOME/bin:$PATH # jdk和jmeter的bin目录 jmeter -n -t 内网测试.jmx -l 内网测试.jtl # 运行脚本 # jmeter -g 内网测试.jtl -o 内网测试 # 如果并发过大建议生成HTML报告后scp到本地机 # java --version # 检查java是否配置成功 # jmeter --version # 检查jmeter是否配置成功

AI写代码bash

运行完成后

我们可以再次使用scp命令将生成的jtll文件传回本地机后生成html报告,但是不推荐

为什么不推荐直接将脚本复制到本地机呢?

​ 对于高并发的场景,生成的jtl文件会非常的庞大,所以我们一般建议将其生成为HTML报告,将HTML报告复制到本地机。如确实有必要收集jtl文件或者文件较小,可以采取直接将jtl文件复制到本机再生成HTML报告的方法

scp root@192.168.2.45:~/myTest/jmeterTest/内网测试.jtl ./

AI写代码bash


如果需要再次生成html报告,将运行脚本注释,取消生成html报告的注释。再次bash run.sh即

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 10:30:43

【前端】从零开始搭建现代前端框架:React 19、Vite、Tailwind CSS、ShadCN UI-第六章《全局尺寸系统(sm / md / lg)—— 响应式组件尺寸与全局 UI 设置》

本章将正式实现你的框架需求之一:大 / 中 / 小 三种尺寸体系(Large / Medium / Small),并且做到:全局控制(Zustand 管理)组件级覆盖(Button、Input、Card 等自动适配)与 …

作者头像 李华
网站建设 2026/4/15 14:16:24

水库监测最佳选择:2025年度单北斗GNSS变形监测一体机推荐榜单

在水库监测中,选择合适的单北斗GNSS变形监测设备至关重要。随着地质灾害的频发,对高精度监测技术的需求日益增强。本文将为您介绍多款优秀的一体化监测机型,包括华测导航H7、广州华水科技的HS-G7以及南方测绘MR3等。这些设备具备先进的变形监…

作者头像 李华
网站建设 2026/4/9 14:01:21

H3C路由器ER6300G3踢掉指定IP地址的方法

在日常网络管理中,可能会遇到需要回收或踢掉某个终端IP地址的情况,本文以H3C ER6300G3路由器为例,介绍通过DHCP分配列表回收指定IP的操作方法。一、登录路由器管理界面在浏览器地址栏中输入路由器的管理地址,输入正确的 用户名和…

作者头像 李华
网站建设 2026/4/18 7:44:32

利用LobeChat构建专属知识库问答机器人的方法论

利用LobeChat构建专属知识库问答机器人的方法论 在企业数字化转型不断深入的今天,员工每天面对的信息量呈指数级增长——制度文档、产品手册、会议纪要、项目资料分散在各个系统中。当新员工入职问“试用期多久”,HR可能已经回答了第100遍;当…

作者头像 李华
网站建设 2026/4/18 6:28:37

Ensp下载官网软件包内包含的协议分析功能简介

Qwen3-VL-8B:轻量多模态模型如何赋能边缘智能 在电商后台,运营人员每天要为成千上万件商品上传图片、撰写描述;在客服系统中,用户频繁发送截图询问订单问题,却因机器人“看不懂图”而被转接人工。这些看似琐碎的场景背…

作者头像 李华