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 代码)。最后说明了如何通过远程运行负载机群来扩充负载。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java json decode 中文_PHP实现json_decode不转义中文的方法[通俗易懂]

    java json decode 中文_PHP实现json_decode不转义中文的方法[通俗易懂]本文实例讲述了PHP实现json_decode不转义中文的方法。分享给大家供大家参考,具体如下:默认情况下PHP的json_decode方法会把特殊字符进行转义,还会把中文转为Unicode编码形式。这使得数据库查看文本变得很麻烦。所以我们需要限制对于中文的转义。对于PHP5.4+版本,json_decode函数第二个参数,可以用来限制转义范围。要限制中文,使用JSON_UNESCAPED_U…

  • 基于实践的LabVIEW零基础入门视频教程

    原文地址::http://blog.eeecontrol.com/LabVIEW1/《基于实践的LabVIEW零基础入门视频教程》资料不在多,而在于精,资料太多,反而会迷失方向,学习最怕的就是打乱仗,选择对的方向,比努力更重要,这也是本人的亲身经历!《基于实践的LabVIEW零基础入门视频教程》方向明确,适合零基础和初学者,针对性强,本课程将用项目与实践的方法带领大家零

  • redis cluster原理详解_redis cluster原理

    redis cluster原理详解_redis cluster原理本文转载自:https://zhuanlan.zhihu.com/p/69800024RedisCluster是Redis官方提供的集群解决方案。由于业务的飞速增长,单机模式总会遇到内存、性能等各种瓶颈,这个时候我们总会喊,上集群啊。就跟我家热得快炸了,你总喊开空调呀一样。的确,上集群可以解决大多数问题,但是在使用集群的过程中,不可避免会遇到这样那样的问题,这个时候怎么办呢,各种百度各种群里去问吗?NO,作为开发人员,在享受第三方提供的方便前,有必要去了解其基本的工作机制,这样才能在遇到问题时快速定位,

    2022年10月14日
  • 使用.NET Reflector

    使用.NET Reflectorl.NETReflector是一个类浏览器和反编译器,利用反射机制来分析程序集,以展示程序集中各种类型及其成员的信息。l下载.NETReflector:http://www.aisto.com/roeder/dotnetl通过菜单File->Open加载要分析的程序集,在左边的树型浏览器中可以看到该程序集包含的名字…

  • 熊猫烧香病毒简析[通俗易懂]

    熊猫烧香病毒简析[通俗易懂]熊猫烧香从2007年1月肆虐网络到现在。已经过了查不多4个年头了。病毒的作者李俊现在也从监狱里被放了出来。在当时熊猫烧香确实给大家一个意外,它采用了一种新的方式对计算机的程序和系统造成了很严重的破坏。 其实我的这篇文章也不叫什么分析,只是说简单的简析。我只是简单的对病毒的机

    2022年10月28日
  • 一张图说明–桥接模式与NAT模式的差别「建议收藏」

    一张图说明–桥接模式与NAT模式的差别「建议收藏」不废话,直接上一张简单清晰的对比图桥接模式里虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络。如上图所示的局域网中添加了一台新的、独立的计算机一样。宿主机与vm虚拟机是平级关系。因此,虚拟机也会占用局域网中的一个IP地址,并且可以和其他终端进行相互访问…

发表回复

您的电子邮箱地址不会被公开。

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