用过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运行原理的一些研究的更多相关文章

  1. Jmeter结构体系及运行原理

    Jmeter结构体系 把Jmeter的结构体系拆分为三维空间,如图: X1~X5:是负载模拟的一个过程,使用这些组件来完成负载的模拟: X1:选择协议,模拟用户请求,检查服务器响应是否正确,然后收集结 ...

  2. JMeter 之Synchronizing Timer运行原理

    JMeter测试并发场景,是通过设置Synchronizing Timer(同步定时器),熟悉LoadRunner性能测试的话,就知道里面有个概念:集合点. Synchronizing Timer则可 ...

  3. Jmeter组成结构及运行原理

    Jmeter结构主要组成要素包括:测试计划,线程组,采样器以及监听器.对于各部件的作用域关系如下图: Jmeter是纯Java程序,使用JVM,运行采用多线程完成,往往单台负载机由于机器配置有限,支持 ...

  4. 性能测试四十七:jmeter性能监控工具ServerAgent

    在liunx压力机进行压测的时候,可以在widows下开一个jmeter,只进行监控用,不产生压力,监控效果和dstat差不多 jmeter安装客户端插件 把工具放到服务端任意目录并解压,我这里放到了 ...

  5. Jmeter运行原理

    Jmeter运行原理: JMETER是运行在JVM虚拟机上的,每个进程的开销比loadrunner的进程开销大,如果以进程的方式来运行每台负载机上的进程数量不会允许太多,当有大量并发时就需要大量的负载 ...

  6. jmeter的运行原理和测试计划要素

    jmeter运行原理 1.jmeter运行在JVM虚拟机上,jmeter是以线程的方式运行的. 2.jmeter通过线程组来驱动多个线程,运行测试脚本对被测试服务器发起负载,每一个负载机上够可以运行多 ...

  7. JMeter实战(二) 运行原理

    运行原理 如果不用工具,要做 100 并发的压力测试,得想办法组织 100 个人,每个人操作1台电脑,一声令下,100 个人同时点击,对系统造成 100 并发.现实中,很难找 100 个人和 100 ...

  8. ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

    ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framew ...

  9. 场景9 深入RAC运行原理

    场景9 深入RAC运行原理 OPS(Oracle Parallel Server)通过磁盘的节点判定数据是否最新   —>   Data Guard   —>    RAC(Real Ap ...

随机推荐

  1. java把行政区划放到一个节点树形中

    作者原创:转载请注明出处.https://www.cnblogs.com/yunqing/p/9486923.html 先放数据,t_city表 //津京冀地区行政区划数据 SET FOREIGN_K ...

  2. Week7:SVM难点记录

    1.函数dataset3Params(),如何计算模型估计偏差的? model=svmTrain(X,y,c_array,@(x1,x2)gaussianKernel(x1,x2,sigma_arra ...

  3. 常用 超全局数组$_server

    $_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建.不能保证每个服务器都 ...

  4. c++高精度计算(加法)

    本文提供给刚入坑的新手 关于高精度的计算网上百度一下可以了解到许多 今天我分享的只是一些自己的心得,更详细的可以去看原博主的原创文章(https://blog.csdn.net/fanyun_01/a ...

  5. ansible常用配置

    1.什么是Ansible 部署参考连接:http://www.ansible.com.cn/ ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng ...

  6. css3动画,监控动画执行完毕

    在CSS3之前,在网页上要做动画,一般使用javascript来实现,用timer定时执行一些操作来实现动画效果. 自有了CSS3之后,在网页上做动画变得更简单了.相对于使用javascript的实现 ...

  7. Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.

    最近在开发一个网站时,有个需要是 如果有新预警信息要在网页中播放提示音.页面打开会请求是否有新信息,有则播放提示音.在Chrome的最新浏览器中,播放会报错,控制台显示Uncaught (in pro ...

  8. javascript编写的一个完整全方位轮播图效果

    1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...

  9. Docker toolbox换源

    一 docker toolbox安装 略.... 阿里云加速器地址 https://jbriwmh3.mirror.aliyuncs.com 二 为docker toolbox更换国内源 docker ...

  10. Spring 注解学习

    @GetMapping(value = "/hello/{id}")//需要获取Url=localhost:8080/hello/id中的id值 public String say ...