【JMeter】JMeter的工作原理_jmeter原理-程序员宅基地

技术标签: # 性能工具  性能测试  JMeter  

一、JMeter简介

JMeter是Apache组织开发的基于Java的开源的压力测试工具、接口测试工具

可以模拟高并发和多次循环的测试场景,能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试,具有可移植性

二、压测的原理

性能测试的核心三原则: 基于协议,多线程,场景模拟

  • 基于协议
    基于应用层和传输层的各种协议,比如http、udp、ftp和tcp等
  • 多线程
    通过进程下启动线程的方式来模拟并发用户实现负载
  • 场景模拟
    通过模拟用户使用的真实场景,来提高性能测试的准确性

JMeter压测的核心原理
基于各种协议,通过多线程的方式来模拟并发用户,设计各种场景来模拟真实的用户负载

三、JMeter执行原理

3.1 压力的定义

所谓压力,其实就是单位时间内向服务器发起的请求数
jmeter在设计压力模式的时候,引入了两层概念:

  • 第一是线程
  • 第二是迭代

一个人在单位时间内,可能发起一次请求,也可能发起多次,那么JMeter就通过线程*迭代,来模拟单位时间内用户多次发起请求的场景

把单位时间内线程*迭代的次数称之为压力

3.2 执行原理

3.2.1 为何选择线程模拟

操作系统有多个进程,进程有多个线程。多进程、多线程,正好可以用来模拟多个用户,对系统造成多个并发。JMeter、LoadRunner等压测工具的原理就是基于原理

  • LoadRunner
    LoadRunner既支持多进程模拟,也支持多线程模拟

  • JMeter
    JMeter由Java实现,运行在JVM虚拟机上,每个进程的开销比loadrunner的进程开销大,如果以进程的方式来运行每台负载机上的进程数量不会允许太多,当有大量并发时就需要大量的负载机,JMeter选择了以线程方式来运行

3.2.2 执行逻辑

JMeter运行在java虚拟机上的,基本原理是建立一个线程池,通过线程组驱动多线程,多线程运行sampler产生负载,在运行过程中通过断言来验证结果的正确性,可以通过添加监听器(聚合报告、图形结果和查看结果树等)来记录测试结果

3.2.3 使用说明
  1. 如果取样器中有参数化需求,可以通过配置元件或者前置处理器来完成
  2. 如果取样器中有关联需求,可以通过后置处理器来完成
  3. 如果要模拟负载场景,比如模拟多少用户,运动多长时间,可以通过线程组完成
  4. 如果要模拟并发场景,可以通过定时器来完成(一般不不需要设置,定时器绝对并发这种场景有点不太符合实际业务场景)
  5. 如果要控制业务的执行逻辑,比如登录只运行一次,可以通过控制器来完成
3.2.4 执行模式

JMeter运行场景不仅可以再gui方式中完成,还可以运行命令行,而且命令行的运行方式对于负载机的资源消耗会更小

四、远程运行

线程创建过多会占用大量系统资源,一般单台机器性能稍微好点的跑500的并发,内存就比较吃紧
压力测试时,压力机本身并不应该成为性能瓶颈,否则压测就没有意义,所以实际测试成百上千的并发时,单台机器显然不够,需要考虑用负载机群,即用多台负载机分布来模拟并发,如图所示
在这里插入图片描述

4.1 控制机

管理远程负载机,控制远程负载机脚本运行,收集远程负载机测试结果。控制机本身也是个负载机

4.2 负载机

向被测应用系统发起负载
远程负载机首先要启动客户端(Agent: bin 目录下 jmeter-server.bat),才能被控制机接管
如果远程负载机脚本需要参数或依赖jar包,需要使用自动化工具从控制机发送到远程负载机

4.3 远程运行逻辑

  1. 远程负载机启动 Agent 客户端,等待控制机连接
  2. 控制机连接上远程负载机
  3. 控制机发送指令到远程负载机启动线程
  4. 远程负载机运行脚本,回传结果数据
  5. 控制机收集结果并显示

4.4 远程运行脚本

  1. 远程负载机启动 jmeter-server.bat
  2. 在控制机 bin\JMeter.properties 文件中,找到 remote_hosts,添加远程负载机的ip和port
  3. 多个远程负载机,ip用逗号分隔,如remote_hosts=192.168.0.1:1664,192.168.0.2:1664
  4. 1664是JMeter的Controller和Agent之间进行通讯的默认RMI端口号
  5. 在控制机打开GUI,菜单栏Run下执行Remote命令,控制远程负载机启动,停止,退出

远程方法调用(Remote Method Invocation ,RMI)
使用户能访问在另一主机上的Java对象,并远程调用其方法
程序的对象是客户,而远程对象是服务器。远程对象也可以是另一个远程服务对象的客户
通过使用持续性(串行化和解串行化),本地对象和原始类型值可以作为参数传递给远程对象。这种方式允许Java程序可以利用分布式计算将工作量分散到多个Java虚拟机上

五、JMeter目录

JMeter 安装包是绿色版,解压即用,解压后的目录
在这里插入图片描述

  • bin:配置文件、启动文件、启动jar包、示例脚本等
  • docs:JMeter API离线帮助文档
  • extras:辅助功能,可以与Ant、Jenkins集成
  • lib:组件,基础包放在 lib 根目录下,扩展包放在 lib/ext 目录下
  • licenses:证书文本文件
  • printable_docs:JMeter 离线帮助文档
  • LICENSE:证书说明
  • NOTICE:版权声明
  • README:JMeter简介
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lluozh2015/article/details/123222528

智能推荐

F5 GTM DNS 知识点和实验 3 -加速dns解析_dns express-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏15次。第三章:加速dns解析目标:了解一个请求是如何发送到一个dns资源池中的,并且了解如何监控资源池中成员的健康状态使用dns缓存对dns请求进行加速使用dns express进行对dns请求进行加速智能解析dns请求加速解析(dns express,dns cache,load balance dns queries)配置监听器3.1、Big-IP DNS解析过程wide ipdns expressdns cachedns resolving cache_dns express

【嵌入式】构建嵌入式Linux系统(uboot、内核、文件系统)_嵌入式linux引导程序操作模式是什么-程序员宅基地

文章浏览阅读3.1k次,点赞6次,收藏61次。内核是嵌入式Linux 系统的核心,负责管理系统的进程、内存、文件系统、网络和设备驱动等。如果把地球比作计算机系统,内核就是管理计算机资源的“政府”,内核中的每个功能模块相当于政府中的每个部门,如下图所示。从功能角度来看:系统调度进程管理负责管理CPU资源,以便让各个进程可以以尽量公平的方式访问CPU。进程管理还包括控制活动进程。内存管理Linux的成功和它优秀的内存管理联系非常密切,因为一个系统的高效性欲稳定性往往决定于它的内存管理机制。为了解决容量,Linux 引入了虚拟存储系统;_嵌入式linux引导程序操作模式是什么

JS高级——JSON、数据存储学习笔记-程序员宅基地

文章浏览阅读1.4k次。在目前的开发中,JSON是一种非常重要的数据格式,它并不是编程语言,而是一种可以在服务器和客户端之间传输的数据格式。JSON的全称是JavaScript Object Notation(JavaScript对象符号):JSON是由Douglas Crockford构想和设计的一种轻量级资料交换格式,算是JavaScript的一个子集;但是虽然JSON被提出来的时候是主要应用JavaScript中,但是目前已经独立于编程语言,可以在各个编程语言中使用;很多编程语言都实现了将JSON转成对应模型的.

RK3588快速上手 | 01-RK3588开发板快速上手_3588 开发板 wiki-程序员宅基地

文章浏览阅读2.3k次。RK3588是Rockchip最新推出的八核64位处理器(4核A76+4核A55),主频2.4GHz,集成GPU,内部集成6TOPS AI算力的NPU,多媒体方面支持到了8K视频编解码,_3588 开发板 wiki

Unity动画状态机Animator 与 Animation_状态机用animation还是animator-程序员宅基地

文章浏览阅读687次。https://blog.csdn.net/linxinfa/article/details/94392971有时候需要让美术做一些刚体位移动画, 那么美术在Unity中就要Project视图->Creat->Animation.但是这样创建出来的动画是新版动画,这样播放的话要需要AnimationController文件。 我就想用老版动画怎么办呢?如下图所示,选中刚刚创建的动画,然后在右边打开Debug模式,勾选legacy即可。如果是美术做的FBX动画,那么在这.._状态机用animation还是animator

Hbase之--------将Hdfs数据加载到Hbase数据库中_importjava.io.loexception; importorg.apache.hadoop-程序员宅基地

文章浏览阅读809次,点赞2次,收藏2次。package Kaoshi;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.hbase.HCol..._importjava.io.loexception; importorg.apache.hadoop.conf.configuration; i

随便推点

小米开盘大跌超 5 % ;今日头条或联合网易做游戏;YurunHttp 3.0 发布 | 极客头条...-程序员宅基地

文章浏览阅读1.5k次。「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道。风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时..._印度小米厂网易新闻

Android 编译命令 envsetup.sh-程序员宅基地

文章浏览阅读179次。编译模块Android中的一个应用程序可以单独编译,编译后需要重新生成system.img。在Android目录下运行$ . build/envsetup.sh 或者$ source build/envsetup.sh ,然后就会多出几个可用的命令:- croot: Changes directory to the top of the tree.- m: Makes..._编译单个应用命令

怎么实现将Windows上的文件传到Linux、将Linux上的文件传输到Windows、不同的Linux设备之间文件传输_怎么把windows中的文件拖入linux中-程序员宅基地

文章浏览阅读2.4w次,点赞20次,收藏171次。本文基于Linux上CentOS 7版本和Windows 11专业版本配合Xshell 7演示三种传输方式怎么实现将Windows上的文件传到Linux、将Linux上的文件传输到Windows、不同的Linux设备之间文件传输使用rz和sz命令使用Xftp软件进行传输使用Sftp服务进行传输使用scp (-r)命令_怎么把windows中的文件拖入linux中

linux文件系统ext2\ext3\ext4\xfs详解_ext4、ext3、ext2、xfs-程序员宅基地

文章浏览阅读2.5k次。1.ext2介绍:第二代扩展文件系统是LINUX内核所用的文件系统,用以代替ext,是 EXT文件系统的升级版,特点:在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识。一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被删除。此外,同一文件在磁盘中存放和被打开时所对应的inode是不同的,并由内核负责同步。2.ext3介绍:EX..._ext4、ext3、ext2、xfs

matlab:字符向量、字符数组、字符串标量、字符串数组_matlab 字符串数组-程序员宅基地

文章浏览阅读8.8k次,点赞5次,收藏26次。matlab:字符向量、字符数组、字符串标量、字符串数组_matlab 字符串数组

qemu模拟arm嵌入式环境_qemu-system-arm-程序员宅基地

文章浏览阅读2.7k次。文章目录一、安装qemu二、安装arm工具链三、下载编译内核四、制作根文件系统五、qemu 运行1、直接启动kernel2、通过uboot启动内核2.1 配置QEMU Tap网络2.2 安装配置tftp2.3 编译uImage2.4 编写启动脚本boot.sh3. 挂载 NFS 文件系统六、qemu 模拟机连接外网七、其他1、制作多分区镜像2、运行qemu一、安装qemu1、下载编译安装# wget https://download.qemu.org/qemu-4.2.0.tar.xz# tar x_qemu-system-arm

推荐文章

热门文章

相关标签