简介
压力测试过程中,也需要对被测服务器的负载情况进行监控,以便分析出服务器的性能瓶颈。这里要讲的就是Jmeter提供的PerfMon插件,通过PerfMon,你可以对服务器的CPU、内存、Swap、磁盘I/O、网络I/O等进行监控。原理什么的网上很多,这里就不再多讲了,简单讲一下安装使用,以及记录一下自己最开始用时碰到的连接不上的坑和解决过程吧。
安装
客户端(Jmeter端)
1、首先给Jmeter安装插件管理器,下载plugins-manager.jar,复制到Jmeter文件夹的lib/ext
路径下,重启Jmeter后,在选项菜单中就可以看到plugins-manager了
2、然后打开插件管理器,查找PerfMon勾上勾选,再点击右下角的Apply Changes...按钮即可
安装重启完成后,在监听器那里就能找到该服务器监听器
服务器端
1、下载ServerAgent,把下载的ServerAgent-2.2.*.zip复制到服务器端,解压即可
2、windows的服务器,运行文件夹中的startAgent.bat
即可,linux的服务器是运行startAgent.sh
(需要jar环境支持,没有安装的自行安装)
使用方法
服务器端
运行startAgent.sh/bat启动ServerAgent,默认是使用4444
的TCP/UDP端口,若需要指定端口,如1234则添加如下参数:
./startAgent.sh --udp-port 0 --tcp-port 1234
0代表不开启该端口
出现如下提示则表示已经正常开启
客户端(Jmeter端)
1、随便添加一个HTTP请求的sampler,把线程组设为无限循环
2、添加“jp@gc - PerfMon Metrics Collector”监听器
3、添加要监控的项目,如CPU、内存等,一行选择一种
4、最后运行jmx测试计划就行啦
碰到的几个坑
网上相关的教程其实很多了,写这篇主要还是记录一下自己碰到的坑吧,前几天一直连接不上,搜了几天都没找到解决办法。。。这里就给需要的人参考一下
我的测试环境——客户端:win10(64位),服务端:Ubuntu Server 16.04(64位)
1、网上包括官方教程都有说开启服务端后,要在客户端telnet一下确定是否连上,但我这里用telnet一直都是连接中,不知道是不是个例。虽然telnet一直是连接中,不过Jmeter插件还是可以正常连上并返回监控数据的,所以如果测试时看到telnet卡在连接中,先直接在Jmeter插件中测试吧。
2、telnet跟Jmeter中都提示连接超时(Jmeter报错ERROR: java.net.ConnectException: Connection timed out: connect serveragent
),如果服务端已经正常启动ServerAgent,而且端口也在正常监听,一般就是client-server的通讯问题,检查两个地方:一是服务端的防火墙,二如果是不在同一个网段,还需要检查一下路由器中的端口有没有被占用。
最开始我在本机和虚拟机中的服务器中测试,发现死都telnet超时,检查服务器端口没有被占用,服务器自身telnet也是正常,网上搜的基本都是说改端口,试了没用。后来又查了下防火墙设置,最开始以为是iptables,结果根本就没装,后面才发现Ubuntu自带的是ufw...关掉后就正常了,也是坑
虚拟机连接测试OK后,就试着连阿里云的测试服务器了,一样设置ufw防火墙后,发现又连不上= =,这次是真的找不到原因了,请教运维同事,查了一天才查到原来是路由器上的4444端口被占用了。。。真是坑大了,服务端重新开启ServerAgent指定另一个端口后,连接终于正常了。。。