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

news2024/11/23 7:18:54

一、背景

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

  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.coloradmin.cn/o/988799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac brew -v 报错 fatal: detected dubious ownership in repository

Mac 电脑查询 brew版本时报错,如下错误: Last login: Fri Sep 8 14:56:21 on ttys021 sunshiyusunshiyudeMacBook-Pro-2 ~ % brew -v Homebrew 4.0.3-30-g7ac31f7 fatal: detected dubious ownership in repository at /usr/local/Homebrew/Library/Ta…

《人生苦短,我学Python》——列表(List)

昨天,我们学习了一种数据结构——元组。今天我们将学习另一种数据结构——列表。 列表又叫List,与元组的结构类似,也可以用于存储多个类型的数据。接下来,我们一起学习列表的用法–> 文章目录 一、要点先知:二、基…

喊山(数据结构习题)

喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先…

DeU-Net: 用于三维心脏mri视频分割的可变形(Deformable)U-Net

论文链接:https://arxiv.org/abs/2007.06341 代码链接:文章都看完了实在找不到代码!好崩溃!好崩溃!已经发邮件联系作者! 摘要 心脏磁共振成像(MRI)的自动分割促进了临床应用中高效、准确的体积测量。然而…

企业密码安全:ADSelfService Plus 提升密码管理的千里之行

在当今数字化时代,企业的密码安全变得至关重要。密码是保护企业敏感信息和数据的第一道防线,而有效的密码管理对于确保网络安全至关重要。ADSelfService Plus是一款强大的密码管理和自助服务解决方案,它在提供密码安全方面走在了前沿。 ADSel…

动态表单设计

动态表单设计 背景方案讨论基于上面分析,对比调研,自定义动态表单数据模型表单详解(一) 表单模板:jim_dynamic_form(二)表单数据类型:jim_form_data_type(三)…

前端面试经典题--页面布局

题目 假设高度已知&#xff0c;请写出三栏布局&#xff0c;其中左、右栏宽度各为300px&#xff0c;中间自适应。 五种解决方式代码 浮动解决方式 绝对定位解决方式 flexbox解决方式 表格布局 网格布局 源代码 <!DOCTYPE html> <html lang"en"> <…

vue优化首屏加载时间优化-gzip压缩

前言 为什么要进行首屏加载优化&#xff0c;因为随着我们静态资源和第三方包和代码增加&#xff0c;压缩之后包会越来越大 随着网络的影响&#xff0c;在我们第一输入url请求资源时候&#xff0c;网络阻塞&#xff0c;加载时间长&#xff0c;用户体验不好 仔细观察后就会发现…

解锁在线教育新机遇|V-More在线教育行业沙龙圆满落幕!

AIGC技术的渗透&#xff0c;也将为在线教育领域带来新的模式创新。面对以上增长机遇与潜在挑战&#xff0c;在线教育企业想要做好用户增长和技术降本并不简单。 9月1日&#xff0c;由火山引擎、AMD与msup联合举办的在线教育行业私享会成功举办&#xff0c;40余位在线教育行业的…

如何利用ProcessOn 做资产管理流程图

资产管理 是一家公司最重要的管理活动。好的资产管理可以让资源最优化利用&#xff0c;实现资产价值的最大化。可以帮助组织管理和降低风险。同时当需要决策的时候&#xff0c;对资产数据进行分析和评估&#xff0c;也可以帮助做出更明智的决策&#xff0c;如优化资产配置、更新…

YOLOV7改进-添加P2和P6检测层(以YOLOV7-Tiny为例)

下载三个配置文件地址 1、加p6 1、配置文件添加 2、让它自己利用k-means算法进行聚类 3、如果从8或9出来&#xff0c;在这里改 完整

NoUniqueBeanDefinitionException: expected single matching bean but found 2

文章目录 前言一、错误现象二、原因分析三、解决办法总结 前言 看到这个错误,大致也能猜出错误的原因,就是spring中注入的bean重复了,本来应该是单利的bean,但是现在却找到了两个,那么导致这个问题的原因是什么?如何解决呢? 一、错误现象 运行项目或者运行junit测试,直接报…

修改Docker镜像默认下载地址

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

知识图谱实战应用27-基于多模态数据的洪涝灾害知识图谱构建与实际应用

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用27-基于多模态数据的洪涝灾害知识图谱构建与实际应用。今年以来,很多省份都经历了暴雨肆虐,并造成了洪涝灾害,洪涝灾害是一种常见而严重的自然灾害,对人类社会和环境造成了巨大的影响。为了有效地应对洪涝灾害,构建…

Foxboro FBM232 P0926GW以太网通信模块

以太网通信&#xff1a;FBM232 P0926GW 模块支持以太网通信&#xff0c;可用于与其他设备、传感器、执行器和监控系统进行数据交换。 通信协议&#xff1a;模块通常支持多种通信协议&#xff0c;如Modbus TCP/IP、EtherNet/IP 等&#xff0c;以便与不同类型的设备和系统进行通…

3.xaml Label TextBox PasswordBox Button

1. Label TextBox PassWordBox Button a.运行图片 b.Xaml源码 <Grid><!--VerticalAlignment 控件竖直--><!--HorizontalAlignment 控件水平--><!--VerticalConte

etcd选举源码分析和例子

本文主要介绍etcd在分布式多节点服务中如何实现选主。 1、基础知识 在开始之前&#xff0c;先介绍etcd中 Version, Revision, ModRevision, CreateRevision 几个基本概念。 1、version 作用域为key&#xff0c;表示某个key的版本&#xff0c;每个key刚创建的version为1&#…

切片机制和MR工作机制

InputFormat基类 TextInputFormat&#xff1a;TextInputFormat是默认的FileInputFormat实现类。按行读取每条记录。键是存储该行在整个文件中的起始字节偏移量&#xff0c; LongWritable类型。 CombineTextInputFormat&#xff1a;CombineTextInputFormat用于小文件过多的场景…

什么是正向代理和反向代理

一、什么是正向代理 正向代理&#xff08;Forward Proxy&#xff09;是一种代理服务器&#xff0c;它位于客户端和服务端之间&#xff0c;代表客户端向其他服务器发送请求。 一般使用的场景就是&#xff0c;当客户端无法直接访问某些资源时&#xff0c;可以通过正向代理来访问…