JMeter实战(二) 运行原理

JMeter实战(二) 运行原理

运行原理

如果不用工具,要做 100 并发的压力测试,得想办法组织 100 个人,每个人操作1台电脑,一声令下,100 个人同时点击,对系统造成 100 并发。现实中,很难找 100 个人和 100 台电脑来做测试。1 个人和 1 台电脑倒是容易得多。有没有办法用 1 个人和 1 台 电脑对系统造成 100 并发?有办法的。电脑是硬件,硬件之上运行着的是软件,最基础的软件是操作系统。操作系统之上运行着的是进程,进程可以打开任务管理器看到


<span>JMeter实战(二) 运行原理</span>

操作系统会把资源分配给进程,进程拿着资源找 CPU 执行。进程挺大的,CPU 看着一堆进程头也大了,告诉进程拆小一点再来找我。进程思来想去,想了个办法,把进程拆成了多个线程。进程把线程拿给 CPU,CPU 一看乐了,这样我就能灵活切换了,哎哟,不错哦。这就是书本上说的,进程是操作系统分配资源的最小单位,线程是程序执行的最小单位。

操作系统有多个进程,进程有多个线程。多进程、多线程,正好可以用来模拟多个用户,对系统造成多个并发。 JMeter、LoadRunner 等压测工具的原理就是基于这个道理来的。LoadRunner 既支持多进程模拟,也支持多线程模拟。JMeter 不同。JMeter 是由 Java 写成的,运行在 JVM 虚拟机上面。进程开销比较大,导致进程的数量有限。如果要增加负载,就只能加机器,这显然不太经济。所以 JMeter 只支持多线程

JMeter 的运行原理就是用多线程来模拟多用户

运行环境

JMeter 安装包是绿色版,解压即用,解压后的目录


<span>JMeter实战(二) 运行原理</span>

bin:配置文件、启动文件、启动jar包、示例脚本等。

docs:JMeter API 离线帮助文档。

extras:辅助功能,可以与 Ant、Jenkins 集成。

lib:组件,基础包放在 lib 根目录下,扩展包放在 lib/ext 目录下。

licenses:证书文本文件。

printable_docs:JMeter 离线帮助文档。

LICENSE:证书说明。

NOTICE:版权声明。

README:JMeter 简介。

打开 bin 目录,找到启动文件启动 JMeter,Windows 用 jmeter.bat,Linux 用 jmeter.sh


<span>JMeter实战(二) 运行原理</span>

测试计划

启动后,会打开界面,有 1 个测试计划(TestPlan),JMeter 是基于测试计划来组织和管理的


<span>JMeter实战(二) 运行原理</span>

在 JMeter 中,一个界面只能打开一个测试计划,保存后会生成一个 .jmx 脚本文件,一个测试计划就是一个测试脚本。这意味着测试计划是在这个界面看到的树形结构的根节点,根节点只能有一个,如果要同时打开多个测试计划,需要开多个界面。同时显而易见的是,JMeter 的请求模拟和并发设置都是在测试脚本文件中一起设置的。

JMeter 是用线程来模拟用户的,那么测试计划就必须至少有一个线程组,即使这个线程组只有一个线程。(也可以创建多个线程组,把不相关联的业务分布在不同的线程组,比如让一些用户请求这个接口,一些用户请求那个接口)

而且必须要有一个取样器和一个监听器,模拟用户请求,获取测试结果,否则用 JMeter 就是用了个寂寞,既不发请求,又不看结果,哈哈。以下是简单示例


<span>JMeter实战(二) 运行原理</span>

远程运行

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


<span>JMeter实战(二) 运行原理</span>

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

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

远程运行逻辑

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

远程运行脚本

  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 命令,控制远程负载机启动,停止,退出


    <span>JMeter实战(二) 运行原理</span>

简要回顾

本文首先简单介绍了多进程和多线程,说明了 JMeter 的运行原理是用多线程模拟多用户。接着讲述了 JMeter 的运行环境,有哪些文件和文件夹,怎么启动 JMeter 运行。打开 JMeter 后,看到一个测试计划,实际上对应着一个 .jmx 测试脚本文件(文本编辑器打开内容是 xml 代码)。最后说明了如何通过远程运行负载机群来扩充负载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2666.html原文链接:https://javaforall.net

(0)
上一篇 2020年11月20日 上午9:47
下一篇 2020年11月20日 上午10:07


相关推荐

  • plsql编程语言_编程语言有哪些

    plsql编程语言_编程语言有哪些–pl/sql编程语言–pl/sql编程语言是对sql语言的扩展,是的sql语言具有过程化编程的特性–pl/sql编程语言比一般的过程化编程语言,更加灵活高效–pl/sql编程语言主要用来编写存储过程和存储函数等。–声明方法,定义变量–赋值操作可以用:=也可以使用into查询语句赋值declareinumber(2):=10;–数值型变量…

    2022年8月31日
    5
  • SEO学习(九)——快速网站诊断(Google网管工具)[通俗易懂]

    SEO学习(九)——快速网站诊断(Google网管工具)[通俗易懂]SEO服务商在刚刚与客户接触时,尤其需要对目标为网站做快速检查,发现其中的重要问题。一、快速诊断的步骤:   1、检查与研究竞争对手网站时同样的指标,另外还要计算页面收录比例(即搜索引擎收录页面数也网站实际总页面数之比)。   2、查看Google网站管理员工具给出的信息。二、Google网管工具1、robots文件检查     整个网站不能收录或某个目录下所有页面都不

    2026年4月17日
    6
  • 预测算法用java实现吗_java 数据结构与算法

    预测算法用java实现吗_java 数据结构与算法常见的预测算法有1.简易平均法,包括几何平均法、算术平均法及加权平均法;2.移动平均法,包括简单移动平均法和加权移动平均法;3,指数平滑法,包括一次指数平滑法和二次指数平滑法,三次指数平滑法;4,线性回归法,包括一元线性回归和二元线性回归,下面我一一的简单介绍一下各种方法。 4P5?.C(B4j”^5_2h  一,简易平均法,是一种简便的时间序列法。是以一定观察期的数据求得

    2025年6月18日
    4
  • rna转录的方向是从5→3吗_转换到ois

    rna转录的方向是从5→3吗_转换到oisXNA3.0到4.0的转换http://blog.sina.com.cn/s/articlelist_1747721953_0_1.htmlXNA4.0可以说是一个变化很大的版本了,许多类都被重构或者删除,转换的相关重点描述文章中,比较好的是下面的URL地址:http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatshe

    2022年10月21日
    5
  • 如何用C 程序来写一个闰年算法?

    如何用C 程序来写一个闰年算法?我们在小学时老师教我们能被 4 整除的就是闰年 等到我们大了 又有人告诉我们能被 4 整除 但不能被 100 整除的都是闰年 那这是怎么回事 其实 从严格的意义来讲 这两个都不准确 nbsp nbsp nbsp nbsp nbsp 根据维基百科 我们可以知道一标准年为 nbsp nbsp 365 天 5 时 48 分 45 5 秒 nbsp nbsp nbsp nbsp nbsp 那么这就意味着时间存在着人为的误差 由于时间秒的定义是已经规定的标准 不可能改变 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 为了规避这一问

    2026年3月18日
    2
  • 完全理解icmp协议

    完全理解icmp协议1.ICMP出现的原因在IP通信中,经常有数据包到达不了对方的情况。原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了。或者,虽然到达了对方,但是由于搞错了端口号,服务器软件可能不能接受它。这时,在错误发生的现场,为了联络而飞过来的信鸽就是ICMP报文。在IP网络上,由于数据包被丢弃等原因,为了控制将必要的信息传递给发信方。ICMP协议是为了辅助IP…

    2022年7月12日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号