使用内网负载机(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

连接负载机

shell

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

回车出现

root@192.168.2.45's password:

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

2、检查环境

首先检查java环境

shell

java --version

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

检查jmeter环境

shell

jmeter --version

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

查看Linux内存

shell

free -h

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

查看LinuxCPU信息

shell

cat /proc/cpuinfo

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

查看Linux系统架构

shell

uname -a

这里可以知道系统架构为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目录

shell

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

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

shell

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

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

shell

ping www.baidu.com	

下载完成后查看

解压

shell

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

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

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

退回上一层,创建jmeter目录

shell

cd ../
mkdir jmeter
cd jmeter

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

输入命令

shell

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

输入密码后上传

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

解压

shell

unzip apache-jmeter-5.4.1.zip

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

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

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

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

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

进入bin目录

shell

cd bin
ls

修改jmeter.sh

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

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

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

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

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

shell

vim jmeter.sh

找到JVM-ARGS

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

4、调试脚本

回到我们上面的脚本截图

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

方法一:

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

方法二:

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

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

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

5、修改host

我们先修改hosts文件

shell

vim /etc/hosts

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

6、配置运行脚本

新建一个文件夹放置脚本

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

shell

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

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

shell

mkdir run.sh
vim run.sh

run.sh脚本如下

shell

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是否配置成功

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

shell

bash run.sh

环境生效

再次编辑run.sh

shell

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是否配置成功

运行完成后

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

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

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

shell

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

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

【性能测试】终于有一套全面的性能测试教程啦!真实企业性能测试全流程项目实战!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/125654.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】树的基础入门

文章目录 什么是树树的常见术语树的表示树的应用 什么是树 相信大家刚学数据结构的时候最先接触的就是顺序表,栈,队列等线性结构. 而树则是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合 非线性 体现在它是由n个有限结点(可以是零个结点)组成一个具有层次关…

修改Docker镜像默认下载地址

1、安装完docker desktop后,先不要打开 2、新建目录 D:\ProgramData\Docker 3、在C:\Users\你的用户名\AppData\Local下,打开cmd或者powershell执行以下命令,命令语法略有不同。 powershell命令: cmd /c mklink /J Docker D:\Pro…

团队高效协作有多重要?介绍一些优秀的团队协作工具

不论企业大小,团队协作对企业来说是至关重要的,它可以对业务运营和组织效率产生积极影响。 当团队成员能够协同工作、分享信息和资源时,工作流程更加顺畅,决策更加快速且准确。分工合作和共享知识可以减少重复劳动,提…

Vision Transformer(VIT 网络架构)

论文下载链接:https://arxiv.org/abs/2010.11929 文章目录 引言1. VIT与传统CNN的比较2. 为什么需要Transformer在图像任务中? 1. 深入Transformer1.1 Transformer的起源:NLP领域的突破1.2 Transformer的基本组成1.2.1 自注意机制 (Self-Atte…

docker-compose deploy 高可用 elasticsearch TLS

文章目录 1.sysctl2. swap3. hosts4. 配置 instances.yaml5. 创建证书6. 部署7. 修改 kibanna 密码8. 清理 1.sysctl [rootgithub es_tls]# cat /etc/sysctl.conf # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/…

1DM+下载器_11.2.1魔改增强版下载

1DM「原:IDM」下载器是一款安卓端的下载工具,多语言解锁版直安装版本,号称是目前 Android 平台最快、最先进的下载管理器应用「支持通过Torrent下载」,而这个版本是改线程的最新idm版本,可用来下载视频、音乐、电影、T…

【已更新建模代码】2023数学建模国赛B题matlab代码--多波束测线问题

一、 问题重述 1.1问题背景 海洋测深是测定水体深度与海底地形的重要任务,有两种主要技术:单波束测 深与多波束测深。单波束适用于简单任务,但多波束可提供更精确的地形数据。多 波束系统的关键在于覆盖宽度与重叠率的设计,以确保…

golang教程 beego框架笔记一

安装beego 安装bee工具 beego文档 # windos 推荐使用 go install github.com/beego/bee/v2master go get -u github.com/beego/bee/v2masterwindows使用安装bee工具时碰到的问题; 环境配置都没有问题,但是执行官网的命令:go get -u github…

科技云报道:生成式AI已成为企业新兴风险,但我们不应该因噎废食

科技云报道原创。 2023年,生成式AI技术破茧成蝶,引发了一场全球范围的数字革命。 从最初的聊天、下棋开始,到医疗、金融、制造、教育、科研等,生成式AI表现出了强大的创造力和无限潜力。据不完全统计,截至今年8月底&…

阿里云云主机免费试用三个月

试用链接如下: 阿里云云产品免费试用 云主机 费用试用三个月,每月750小时 实例规格 1核(vCPU) 2 GiB S6 系列机型 适用搭建网站等场景 网络带宽 1M 公网固定网络带宽 云盘40 GiB 真香!!!!!&…

Python数据分析实战-依次遍历dataframe每一行,对某字段进行分析处理并新增一列(附源码和实现效果)

实现功能 依次遍历每一行,在某列包含某个元素时新增一列进行标记 实现代码 def province_distribution_of_colleges(self, file):df pd.read_excel(os.path.join(self.datapath, file))df1 dfhua_bei [北京市,天津市,河北省,山西省,内蒙古自治区]dong_bei [辽…

深入了解vue2没有在data中定义的属性非响应式的问题

关于vue2没有在data中定义的属性非响应式的问题 vue2 响应式的原理及实现vue2 解决此类的部分 vue2 响应式的原理及实现 vue2 响应式数据 是通过 es5 中的 Object.defineProperty 方法来实现,把 data 定义的所有属性,转换为 get/set 方法,使…

如何使用HTTP代理爬虫,防止对网站造成负面影响

在当今大数据时代,爬虫技术已经成为了获取数据的重要手段之一。但是,由于爬虫程序的高频访问容易对目标网站造成负面影响,如增加服务器负载、影响网站性能等,因此,如何使用HTTP代理爬虫防止对网站造成负面影响成为了一…

2023-9-8 求组合数(一)

题目链接&#xff1a;求组合数 I #include <iostream> #include <algorithm>using namespace std;const int mod 1e9 7;int n; const int N 2010; int c[N][N];void init() {for(int i 0; i < N; i )for(int j 0; j < i; j)if(!j) c[i][j] 1;else c[i]…

Spring系列文章1:Spring入门程序

一、什么是spring 一个java框架、java语言开发&#xff0c;轻量级、开源框架、在j2se、j2ee中都可以使用。它是一个管理对象的容器&#xff0c;Spring 容器不装文本&#xff0c;数字。装的是java对象。 核心技术&#xff1a;ioc、aop 官网地址 https://spring.io 项目列表…

聊聊低代码的全栈开发能力

一、前言 低代码的热度持续提升&#xff0c;最明显的举动就是资本真金白银的投资。 阿里推出“云钉一体”战略&#xff0c;为企业提供全生命周期的IT解决文案&#xff1b;腾讯将各个事业部的低代码平台进行整合&#xff0c;推出了OTeam平台。网易有数帆轻舟低代码平台&#xff…

堆排序问题

代码如下&#xff1a; //1.先将数组里的数字调整为大根堆&#xff08;父节点均大于两个子节点&#xff09;--由第一个非叶子节点开始 //第一个叶子节点是len/2,所以非叶子节点位len/2-1 //2.将根节点和最后一个结点进行交换&#xff0c;再将剩下的节点调整为大根堆&#xff0c…

软件设计模式系列之一——设计模式概述

1 设计模式的由来和概念 设计模式最早出现在建筑行业&#xff0c;是一位建筑领域的大牛&#xff0c;针对不同建筑物的建造方法进行了总结&#xff0c;针对类型相似的建筑场景&#xff0c;将较好的解决方案进行比较&#xff0c;提取了其中共性的套路规范&#xff0c;形成一定的设…

【python爬虫】12.建立你的爬虫大军

文章目录 前言协程是什么多协程的用法gevent库queue模块 拓展复习复习 前言 照旧来回顾上一关的知识点&#xff01;上一关我们学习如何将爬虫的结果发送邮件&#xff0c;和定时执行爬虫。 关于邮件&#xff0c;它是这样一种流程&#xff1a; 我们要用到的模块是smtplib和emai…

用Canape录制数据的操作方法

介绍 本文档可帮助读者实现用canape上车录制所需数据的方法。 一、打开ASAP2 Studio 软件&#xff0c;先对elf中的变量进行A2L转换 1、首先在电脑上插入canape盒子&#xff0c;打开你的ASAP2 Studio 软件&#xff0c;对elf中的变量进行A2L转换。 2、点击新建 New Database。 …