Jmeter资源监控工具ServerAgent运行原理的一些研究
用过Jmeter的应该都了解,有个ServerAgent工具,放在linux或者windows服务器上开启服务后,在Jmeter中配置下监视器,就可以抓取到服务器的一些资源信息,抓取的主要是cpu、内存、磁盘、网络等大项,基本够用,肯定是比不上其他的一些资源监控工具详细,但是配置方便啊,拷贝,开启服务就能用,具体的配置过程就不说了,比较好奇实现原理,就研究了下。
分析过程
jmeter运行端就称为客户端吧,ServerAgent所在的机器称为服务端。服务器运行ServerAgent服务后,监听的默认端口是4444。
客户端要拿到服务端的资源数据,肯定是有数据交互的,只不过交互不一定是http协议的,用fiddler可能抓不到通讯过程(实测,确实抓不到)。
那就用万能抓包工具吧,从客户端网卡抓,神器wireshark。
首先搭建好了环境,配置了jmeter测试请求及资源监听,运行并用wireshark抓包,服务器那边是这样的:
从ServerAgent的日志来着,应该是开启监听后,建立tcp连接—>接收test指令测试—>接收cpu、内存等客户端预先配置的监控指标收集命令—>关闭连接,大致是这么个步骤。
那就看看wireshark吧。wireshark是抓整个网卡的,所以一些无效信息会比较多,通过两端的ip过滤,果然找到了4444端口相关的交互信息。
首先,确定通讯协议是tcp。然后就是tcp的三次握手,以及发送test指令,发送资源收集指令,一清二楚。
第一次是客户端发往服务端的,no.57,标识为SYN,表示客户端想要发起连接,带了一个客户端SEQ=0(SEQ随机生成);
第二次是服务端响应客户端,no.58,标识为ACK,表示服务端的响应,并返回ACK=客户端SEQ+1(本次返回ACK=1),同时带上服务端SEQ=0;
第三次为客户端的确认,no.59,检查ACK是否等于客户端SEQ+1,如果正确,则发送ACK=服务端SEQ+1(本次ACK=1);服务端收到后,三次握手完成,连接成功;
第四次为发送请求数据,no.60,标识为PSH,表示有请求数据,可以看到确实带了个test指令,只不过是16进制的;
第五次为服务端对test指令的响应,no.61,返回了个Yep;
第六次就是真正的请求资源了,no.62,发了所有配置的资源选项,只不过仍然是16进制的;
至此,工作过程已经很明确了,tcp会一直保持连接,直至主动断开为止,客户端会源源不断接收到服务端的资源数据。
测试
那我们就发tcp测试下吧,把wireshark抓到的16进制拿过来,或者自己把那段资源指标转为16进制,可能有结束符或者空格,转出来不一定对,还是直接照16进制那个抄吧。
把AgentServer重启一下,然后用jmeter创建tcp请求,照着wireshark抄那个请求的16进制Data。
然后运行测试,发现请求会一直执行,直到手动结束测试。看看服务端和得到的响应数据吧。
看这控制台输出,应该是没问题。然后看下jmeter请求的返回值。
返回了不少,不过也是16进制的,当然执行的时间越长,返回的数据量越多。
把16进制解出来看下,嗯没错,就是这些了,按照顺序对到相应的指标上就行了。
这么看,完全可以用ServerAgent做个简单的资源监控系统啊,代码里发请求,解析返回的响应,然后呈现在图像上,易配置,跨操作系统,基本不占资源,想开就开,岂不是美滋滋。
Jmeter资源监控工具ServerAgent运行原理的一些研究的更多相关文章
- Jmeter结构体系及运行原理
Jmeter结构体系 把Jmeter的结构体系拆分为三维空间,如图: X1~X5:是负载模拟的一个过程,使用这些组件来完成负载的模拟: X1:选择协议,模拟用户请求,检查服务器响应是否正确,然后收集结 ...
- JMeter 之Synchronizing Timer运行原理
JMeter测试并发场景,是通过设置Synchronizing Timer(同步定时器),熟悉LoadRunner性能测试的话,就知道里面有个概念:集合点. Synchronizing Timer则可 ...
- Jmeter组成结构及运行原理
Jmeter结构主要组成要素包括:测试计划,线程组,采样器以及监听器.对于各部件的作用域关系如下图: Jmeter是纯Java程序,使用JVM,运行采用多线程完成,往往单台负载机由于机器配置有限,支持 ...
- 性能测试四十七:jmeter性能监控工具ServerAgent
在liunx压力机进行压测的时候,可以在widows下开一个jmeter,只进行监控用,不产生压力,监控效果和dstat差不多 jmeter安装客户端插件 把工具放到服务端任意目录并解压,我这里放到了 ...
- Jmeter运行原理
Jmeter运行原理: JMETER是运行在JVM虚拟机上的,每个进程的开销比loadrunner的进程开销大,如果以进程的方式来运行每台负载机上的进程数量不会允许太多,当有大量并发时就需要大量的负载 ...
- jmeter的运行原理和测试计划要素
jmeter运行原理 1.jmeter运行在JVM虚拟机上,jmeter是以线程的方式运行的. 2.jmeter通过线程组来驱动多个线程,运行测试脚本对被测试服务器发起负载,每一个负载机上够可以运行多 ...
- JMeter实战(二) 运行原理
运行原理 如果不用工具,要做 100 并发的压力测试,得想办法组织 100 个人,每个人操作1台电脑,一声令下,100 个人同时点击,对系统造成 100 并发.现实中,很难找 100 个人和 100 ...
- ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framew ...
- 场景9 深入RAC运行原理
场景9 深入RAC运行原理 OPS(Oracle Parallel Server)通过磁盘的节点判定数据是否最新 —> Data Guard —> RAC(Real Ap ...
随机推荐
- ThinkPHP5入门(一)----框架篇
一.命名规范: 下划线法: 函数的命名 配置参数 常量(大写) 数据表和字段 驼峰法: 属性的命名 方法的命名 帕斯卡法: 类名 类文件名 类的命名
- yii2视频教材
http://www.weixistyle.com/ http://www.imooc.com/learn/743
- 解决java log4j 配置log4jCaused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
前提安装http://mirror.bit.edu.cn/apache/logging/log4j/2.11.2/apache-log4j-2.11.2-bin.zip Buildpath 配置add ...
- Loj_6282. 数列分块入门 6
Loj_6282 这个题目涉及到了块的重构,这里使用了\(\sqrt{n}\)次插入便重构的方法 讲重复的操作提出来做了函数 #include <iostream> #include &l ...
- android学习:关于RelativeLayout叠放布局的问题
RelativeLayout布局关于元素叠加的问题 1.RelativeLayout布局中的元素如果要实现元素叠加必须设置 RelativeLayout.ALIGN_PARENT_TOP 这样元素 ...
- HCDA day1
OSI有几层: OSI将计算机网络体系结构(architecture)划分为以下七层: 图1.OSI模型 物理层: 将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人. 物理层(Phys ...
- CentOS6安装各种大数据软件 第九章:Hue大数据可视化工具安装和配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- jdbc之连接Oracle的基本步骤
// 1.加载驱动程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 2.获取数据库连接 Connection conn ...
- Hadoop源码学习笔记之NameNode启动场景流程五:磁盘空间检查及安全模式检查
本篇内容关注NameNode启动之前,active状态和standby状态的一些后台服务及准备工作,即源码里的CommonServices.主要包括磁盘空间检查. 可用资源检查.安全模式等.依然分为三 ...
- docker入门——安装(CentOS)、镜像、容器
Docker简介 什么是docker 官方解释: Docker is the company driving the container movement and the only container ...