Jmeter,使用服务器资源监测
实现功能:使用jmeter监测在不同场景下,监测服务器资源消耗情况
实现步骤
1、使用jmeter中的插件,下载路径:https://jmeter-plugins.org/downloads/old/
JMeterPlugins-Standard-1.3.0.zip
JMeterPlugins-Extras-1.3.0.zip
解压后,将对应的jar包,拷贝到jmeter的安装目录:xxx\apache-jmeter-3.3\lib\ext
重启jmeter生效:
2、使用ServerAgent这个代理服务器,下载路径:https://github.com/undera/perfmon-agent
ServerAgent-2.2.1.zip
该代理服务器可以在windows(双击打开startAgent.bat),也可以在linux(双击startAgent.sh)下使用
3、在jmeter中需要设计用例场景,使用分布增加线程组jp@gc - Stepping Thread Group,以及场景内容http请求,以及监听器jp@gc - PerfMon Metrics Collector实现整个用例和监测功能
(可以不使用分布加压线程组,普通的线程组也可以正常监测,分布加压可以在比较重要的接口单独使用)
4、将ServerAgent放到需要测试的服务器上,开启服务即可
附件
一:使用jp@gc - Stepping Thread Group
1、http请求会被执行5次
2、先等待多少分钟再开始执行步骤1中的请求
3、然后从第几个线程开始并发线程数
4、开始的并发数的执行逻辑为:加多少个线程之后,按照当前线程执行多少秒。加线程使用的时间为多少秒。上图表示在3s内增加成功一个线程数,然后再这个线程数上运行1s。故循环一次是4s
5、到达并发数之后,持续时间为多少秒
6、最后释放请求,在多少秒内停掉多少个线程
以上设置好之后,画的图基本与实际的轨迹图保持一致
二:在该线程组下增加http请求
该请求设计需要符合场景用例(调试时,可以直接为空)
三:在该线程组下增加监听器
jp@gc - PerfMon Metrics Collector解读
1、CPU
表示CPU使用率,表示进程与系统进行消耗的CPU百分比。一般可接受的是不超过85%
2、Memory
表示内存使用,1-空闲内存/总内存 ,长时间内存使用率上限可接受85%;一般内存的曲线不会波动,是一条直线,若有波动表示,内存不足了。
3、Disks I/O
表示磁盘读写性能。
4、Network I/O
表示网络带宽。判断网络连接速度是否存在瓶颈。可以用该计数器值与目前网络的带宽比较??
5、SWAP
为临时虚拟内存区域,但是物理内存不足的时候回拿出部分空间使用,从而解决内存不足的问题;一般内存的曲线不会波动,是一条直线,若有波动表示,内存不足了。
四、开启服务
a、开启Windows服务下的监控,双击打开即可。
1、在监听器中连接的ip只要为默认的localhost即可
2、可以在当前环境下打开资源管理器,查看 测试结果的CPU等性能与实际保持一致
b、在linux中开启服务
1、将服务包放到待测服务器下
2、命令行解压当前zip压缩包,进入该目录去执行
3、默认开启的是4444的端口,但是如果当前服务器中该端口有被使用,需要修改可用的端口
java -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 8888 --tcp-port 8888 可看到端口由原来的4444修改为8888
参考文档https://blog.csdn.net/lemon_linaa/article/details/89963904
4、此外还要注意一点,步骤3中的端口,需要跟开发确定过该端口是不是可以被外部访问,如果没有设置