性能测试工具Jmeter影响负载的X因素有哪些?

news2025/1/15 5:45:53

在场景运行时,我们提到了Jmeter GUI方式比较占资源,其实不管是GUI方式还是非GUI方式,运行时都会占用一定资源,那我们有没有办法提高负载机性能呢?既然是纯Java 开发,我们就可以调整其性能参数,让其在JAVA虚拟机上运行起来更加顺畅,效率更高。

在Jmter工具安装路径,找到如下文件

\apache-jmeter-5.2.1\bin\jmeter.bat

if not defined JM_LAUNCH (    set JM_LAUNCH=java.exe)
if exist jmeter.bat goto winNT1if not defined JMETER_BIN (    set JMETER_BIN=%~dp0)
:winNT1rem On NT/2K grab all arguments at onceset JMETER_CMD_LINE_ARGS=%*
rem The following link describes the -XX options:rem http://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
if not defined HEAP (    rem See the unix startup file for the rationale of the following parameters,    rem including some tuning recommendations    set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m)
if not defined GC_ALGO (    set GC_ALGO=-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20)
set SYSTEM_PROPS=-Djava.security.egd=file:/dev/urandom
rem Always dump on OOM (does not cost anything unless triggered)set DUMP=-XX:+HeapDumpOnOutOfMemoryError

其中set HEAP:设置JVM堆大小,-Xms1g设置初始堆大小为1GB,-Xmx为设置最大堆大小,-XX:MaxMetaspaceSize 为设置元数据空间大小。从JDK8 开始用元数据区代替以前的持久代(PermGen space)。

set GC_ALGO:设置内存回收策略,-XX:+UseG1GC就是我们常说的G1(Garbage-First)收集器,回收“年青代”和“年老代”内存,GC并行,使用时间相对比较短的停顿来达到很高的吞吐量,大堆上性能表现良好。

-XX:MaxGCPauseMillis=100 ,设置最大暂停时间为100毫秒,这是一个理论阈值,GC过程尽量再次时间内解决。

-XX:G1ReservePercent=20 预留多少内存用来防止晋升失败的情况,例如“年青代”要晋升到“年老代”,有的对象比较大,此时堆内存不够了,对象到不了“年老代”,晋升失败,我们可以预留一点内存防止这种情况发生:此配置的单位是百分比。

set DUMP=-XX:+HeapDumpOnOutOfMemoryError ,设置当内存溢出时DUMP内存的信息,这样的好处是在JVM崩溃后方便查看堆信息进行问题分析,找到内存溢出的原因。

建议只需要对如下参数进行修改即可:

-Xms

-Xmx

-XX:MaxMetaspaceSize 

JDK版本保持在1.8以上,系统最好是64位。如果这样Jmeter产生的负载不够大,你的机器配置又不错,可以启动多个Jmeter实例,在一台负载机运行多个Jmeter,每一台启动的Jmeter都是一个独立的进程,端口号会自动分配,不用担心端口号的冲突问题。

在使用性能测试工具JMeter进行负载测试时,影响负载的因素(X因素)不仅限于被测系统的硬件和软件配置,还包括了JMeter自身的设置、网络环境以及测试设计等多个方面。以下是这些因素的具体描述:

JMeter自身设置

线程数(虚拟用户数):这是模拟并发用户数量的关键参数。更多的线程意味着更大的并发压力,但同时也要求更高的资源消耗。如果线程数设置得过高,可能会导致JMeter所在的机器成为瓶颈。

Ramp-Up Period(准备时间):指所有线程启动所需的时间。较短的Ramp-Up Period会导致短时间内大量请求涌入,给服务器带来突然的压力;而较长的Ramp-Up Period则可以更平滑地增加负载,避免初期冲击。

循环次数:决定了每个线程发送请求的次数。这会影响总的请求数量,进而影响到整体负载水平。例如,若线程数为100且循环次数为5,则总共会发出500个请求。

定时器与思考时间:通过设定定时器可以在请求之间引入延迟,模拟真实用户的操作间隔。这对于反映真实的用户体验非常重要,并且能够更准确地评估系统在不同负载模式下的表现。

同步定时器:用于创建集合点,使得多个线程在同一时刻执行特定的操作,以此来制造峰值负载或检验系统的瞬时响应能力。

网络环境

网络带宽:即使是在局域网内,有限的带宽也可能限制JMeter向目标服务器发送请求的速度。尤其是在广域网环境中,网络状况更加复杂多变,可能会影响到测试结果的真实性。

网络延迟:高延迟会延长请求和响应的时间,从而影响到平均响应时间和吞吐量等关键指标。此外,网络抖动也会对测试稳定性造成干扰。

数据传输协议:不同的协议(如HTTP/HTTPS、TCP、UDP等)有着各自的特性,在选择适合的协议进行测试时需要考虑其对性能的影响。

测试设计

接口参数化:对于动态内容丰富的API接口来说,采用随机化的参数值来进行压测是非常必要的。这样可以确保覆盖更多场景,同时也能更好地模拟实际生产环境中的流量特征。

测试场景多样性:单一场景下的测试结果往往不足以全面反映系统的性能状况。因此,构建包含多种业务流程的复合型测试用例是十分重要的,比如将登录、浏览商品详情页、加入购物车等一系列操作组合起来进行综合评测。

持续时间:短期测试只能揭示短期内的表现,而长期疲劳测试则有助于发现潜在的问题,如内存泄漏、数据库连接池耗尽等。

被测系统配置

服务器硬件资源:包括但不限于CPU核心数、内存大小、磁盘读写速度等。充足的硬件资源是支撑高强度负载的基础条件之一。

应用程序代码质量:高效的算法实现、合理的架构设计、良好的编码习惯都能显著提升系统的处理效率,反之亦然。

数据库优化:如SQL语句优化、索引建立、表结构设计等都会直接影响到查询性能。特别是在高并发情况下,未经优化的数据访问可能会成为性能瓶颈。

在利用JMeter进行性能测试时,为了得到准确可靠的测试结果,必须综合考虑上述各个方面的因素,并尽可能地控制变量以减少外部干扰。例如,可以通过调整JMeter的配置参数来模拟不同的负载模式,同时也要注意监控被测系统的各项性能指标变化趋势,以便及时发现问题并采取相应措施加以改进。此外,保持测试环境的一致性和可控性也是确保测试结果具有可比性和参考价值的重要前提。

阅读后若有收获,不吝关注,分享,在看等操作!!!

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

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

相关文章

Mac——Docker desktop安装与使用教程

摘要 本文是一篇关于Mac系统下Docker Desktop安装与使用教程的博文。首先介绍连接WiFi网络,然后详细阐述了如何在Mac上安装Docker,包括下载地址以及不同芯片版本的选择。接着讲解了如何下载基础镜像和指定版本镜像,旨在帮助用户在Mac上高效使…

OJ题目下篇

我们今天继续来看链表的算法题目 我们先来看第一道题: 这是一道牛客网的题目: 链表的回文结构_牛客题霸_牛客网 我们来看这道题:首先我们要判断是不是回文结构,我们之前判断过数组的回文,这是比较好判断的&#xff…

25/1/14 算法笔记<强化学习> CBR加强化学习

CBR,基于案例的推理,它是一种基于过去的实际经验或经历的推理,他可以根据过往的案例找到与当前案例最相关的案例,然后对该案例做改动来解决当前的问题。 CBR的过程 CBR可以看作一个循环过程:相似按键检索-->案例重用-->案…

初识JAVA-面向对象的三大特征之多态

1. 重温面向对象 面向对象是一种解决问题的思想,它把计算机程序看作是各种对象组合起来的。每个对象都有自己的数据(属性)和行为(方法),主要依靠对象之间的交互来解决和实现问题。Java是一门纯面向对象的语…

Pytorch基础教程:从零实现手写数字分类

1.Pytorch简介 ‌PyTorch是一个开源的深度学习框架,由Facebook的人工智能研究院(FAIR)开发,并于2017年1月正式推出。‌ PyTorch以其灵活性和易用性著称,特别适合于深度学习模型的构建和训练。它基于Torch张量库开发&a…

高性能现代PHP全栈框架 Spiral

概述 Spiral Framework 诞生于现实世界的软件开发项目是一个现代 PHP 框架,旨在为更快、更清洁、更卓越的软件开发提供动力。 特性 高性能 由于其设计以及复杂精密的应用服务器,Spiral Framework框架在不影响代码质量以及与常用库的兼容性的情况下&a…

运维高级课作业三

源码编译安装httpd 2.4 首先下载好httpd-2.4.62.tar.bz2的安装包 将这个文件传入Linux中 将他解归档解入/usr/src/ rpm -e httpd --nodeps # 如果系统自带httpd这个软件要删除掉,两个软件不能同时运行 yum -y install apr apr-devel cyrus-sasl-devel expat-dev…

.Net8 Avalonia跨平台UI框架——<vlc:VideoView>控件播放海康监控、摄像机视频(Windows / Linux)

一、UI效果 二、新建用户控件:VideoViewControl.axaml 需引用:VideoLAN.LibVLC.Windows包 Linux平台需安装:VLC 和 LibVLC (sudo apt-get update、sudo apt-get install vlc libvlccore-dev libvlc-dev) .axaml 代码 注…

【HM-React】08. Layout模块

基本结构和样式reset 结构创建 实现步骤 打开 antd/Layout 布局组件文档,找到示例:顶部-侧边布局-通栏拷贝示例代码到我们的 Layout 页面中分析并调整页面布局 代码实现 pages/Layout/index.js import { Layout, Menu, Popconfirm } from antd impor…

Canvas简历编辑器-选中绘制与拖拽多选交互方案

Canvas简历编辑器-选中绘制与拖拽多选交互方案 在之前我们聊了聊如何基于Canvas与基本事件组合实现了轻量级DOM,并且在此基础上实现了如何进行管理事件以及多层级渲染的能力设计。那么此时我们就依然在轻量级DOM的基础上,关注于实现选中绘制与拖拽多选交…

C# OpenCV机器视觉:转速测量

在一个看似平常却又暗藏神秘能量的日子里,阿杰正在他那充满科技感的实验室里,对着一堆奇奇怪怪的仪器发呆。突然,手机铃声如一道凌厉的剑气划破寂静,原来是工厂的赵厂长打来的紧急电话:“阿杰啊,咱们工厂新…

vue2制作长方形容器,正方形网格散点图,并且等比缩放拖动

需求:有个长方形的容器,但是需要正方形的网格线,网格线是等比缩放的并且可以无线拖动的,并且添加自适应缩放和动态切换,工具是plotly.js,已完成功能如下 1.正方形网格 2.散点分组 3.自定义悬浮框的数据 4.根据窗口大小…

0基础跟德姆(dom)一起学AI 自然语言处理13-注意力机制介绍2

1 注意力机制规则 它需要三个指定的输入Q(query), K(key), V(value), 然后通过计算公式得到注意力的结果, 这个结果代表query在key和value作用下的注意力表示. 当输入的QKV时, 称作自注意力计算规则;当Q、K、V不相等时称为一般注意力计算规则 例子:seq2…

慧集通(DataLinkX)iPaaS集成平台-系统管理之UI库管理、流程模板

UI库管理 UI库管理分为平台级和自建两种,其中平台级就是慧集通平台自己内置的一些ui库所有客户均可调用,自建则是平台支持使用者自己根据规则自己新增对应的UI库。具体界面如下: 自建UI库新增界面: 注:平台级UI库不支…

通过一个算法的设计来了解栈的一些应用

目录 1.前言 2.步骤 3.代码实现 4.测试 5.运行结果 6.一些思考 7.一些应用示例 1.前言 掌握堆栈的基本原理 掌握堆栈的存储结构 掌握堆栈的进栈、出栈; 判断栈空的实现方法 掌握应用堆栈实现括号匹配的原理和实现方法; 熟悉python语言编程 熟练…

USB 驱动开发 --- Gadget 驱动框架梳理(一)

本文由 Linux 内核文档翻译与总结而来,个人学习笔记仅供参考。 Gadget 框架 在 USB 协议交互过程中,角色定义: the device driver is the master (or “client driver”) Linux 内核中称为 HCD(Host Controller Driver),负责与 …

字符串算法篇——字里乾坤,算法织梦,解构字符串的艺术(下)

文章目录 前言第一章:最长公共前缀1.1 题目链接:https://leetcode.cn/problems/longest-common-prefix/description/1.2 题目分析:1.3 思路讲解:1.4 代码实现: 第二章:最长回文子串2.1 题目链接&#xff1a…

计算机网络 笔记 数据链路层3(局域网,广域网,网桥,交换机)

局域网: LAN:在某一区域内由多台计算机互联成的计算机组,使用广播信道 特点: 覆盖范围有限:通常局限在几千米范围内,比如一栋办公楼、一个校园或一个工厂等相对较小的地理区域。 数据传输速率高:一般能达到 10Mbps…

istio-proxy oom问题排查步骤

1. 查看cluster数量 cluster数量太多会导致istio-proxy占用比较大的内存,此时需检查是否dr资源的host设置有配置为* 2. 查看链路数据采样率 若采样率设置过高,在压测时需要很大的内存来维护链路数据。可以调低采样率或增大istio-proxy内存。 检查iop中…

fast-crud select下拉框 实现多选功能及下拉框数据动态获取(通过接口获取)

教程 fast-crud select示例配置需求:需求比较复杂 1. 下拉框选项需要通过后端接口获取 2. 实现多选功能 由于这个前端框架使用逻辑比较复杂我也是第一次使用,所以只记录核心问题 环境:vue3,typescript,fast-crud ,elementPlus 效果 代码 // crud.tsx文件(/.ts也行 js应…