簡介
壓力測試過程中,也需要對被測服務(wù)器的負(fù)載情況進(jìn)行監(jiān)控,以便分析出服務(wù)器的性能瓶頸。這里要講的就是Jmeter提供的PerfMon插件,通過PerfMon,你可以對服務(wù)器的CPU、內(nèi)存、Swap、磁盤I/O、網(wǎng)絡(luò)I/O等進(jìn)行監(jiān)控。原理什么的網(wǎng)上很多,這里就不再多講了,簡單講一下安裝使用,以及記錄一下自己最開始用時(shí)碰到的連接不上的坑和解決過程吧。
安裝
客戶端(Jmeter端)
1、首先給Jmeter安裝插件管理器,下載plugins-manager.jar,復(fù)制到Jmeter文件夾的lib/ext路徑下,重啟Jmeter后,在選項(xiàng)菜單中就可以看到plugins-manager了

2、然后打開插件管理器,查找PerfMon勾上勾選,再點(diǎn)擊右下角的Apply Changes...按鈕即可

安裝重啟完成后,在監(jiān)聽器那里就能找到該服務(wù)器監(jiān)聽器

服務(wù)器端
1、下載ServerAgent,把下載的ServerAgent-2.2.*.zip復(fù)制到服務(wù)器端,解壓即可
2、windows的服務(wù)器,運(yùn)行文件夾中的startAgent.bat即可,linux的服務(wù)器是運(yùn)行startAgent.sh(需要jar環(huán)境支持,沒有安裝的自行安裝)
使用方法
服務(wù)器端
運(yùn)行startAgent.sh/bat啟動(dòng)ServerAgent,默認(rèn)是使用4444的TCP/UDP端口,若需要指定端口,如1234則添加如下參數(shù):
./startAgent.sh --udp-port 0 --tcp-port 1234 0代表不開啟該端口
出現(xiàn)如下提示則表示已經(jīng)正常開啟

客戶端(Jmeter端)
1、隨便添加一個(gè)HTTP請求的sampler,把線程組設(shè)為無限循環(huán)
2、添加“jp@gc - PerfMon Metrics Collector”監(jiān)聽器
3、添加要監(jiān)控的項(xiàng)目,如CPU、內(nèi)存等,一行選擇一種

4、最后運(yùn)行jmx測試計(jì)劃就行啦
碰到的幾個(gè)坑
網(wǎng)上相關(guān)的教程其實(shí)很多了,寫這篇主要還是記錄一下自己碰到的坑吧,前幾天一直連接不上,搜了幾天都沒找到解決辦法。。。這里就給需要的人參考一下
我的測試環(huán)境——客戶端:win10(64位),服務(wù)端:Ubuntu Server 16.04(64位)
1、網(wǎng)上包括官方教程都有說開啟服務(wù)端后,要在客戶端telnet一下確定是否連上,但我這里用telnet一直都是連接中,不知道是不是個(gè)例。雖然telnet一直是連接中,不過Jmeter插件還是可以正常連上并返回監(jiān)控?cái)?shù)據(jù)的,所以如果測試時(shí)看到telnet卡在連接中,先直接在Jmeter插件中測試吧。
2、telnet跟Jmeter中都提示連接超時(shí)(Jmeter報(bào)錯(cuò)ERROR: java.net.ConnectException: Connection timed out: connect serveragent),如果服務(wù)端已經(jīng)正常啟動(dòng)ServerAgent,而且端口也在正常監(jiān)聽,一般就是client-server的通訊問題,檢查兩個(gè)地方:一是服務(wù)端的防火墻,二如果是不在同一個(gè)網(wǎng)段,還需要檢查一下路由器中的端口有沒有被占用。
最開始我在本機(jī)和虛擬機(jī)中的服務(wù)器中測試,發(fā)現(xiàn)死都telnet超時(shí),檢查服務(wù)器端口沒有被占用,服務(wù)器自身telnet也是正常,網(wǎng)上搜的基本都是說改端口,試了沒用。后來又查了下防火墻設(shè)置,最開始以為是iptables,結(jié)果根本就沒裝,后面才發(fā)現(xiàn)Ubuntu自帶的是ufw...關(guān)掉后就正常了,也是坑
虛擬機(jī)連接測試OK后,就試著連阿里云的測試服務(wù)器了,一樣設(shè)置ufw防火墻后,發(fā)現(xiàn)又連不上= =,這次是真的找不到原因了,請教運(yùn)維同事,查了一天才查到原來是路由器上的4444端口被占用了。。。真是坑大了,服務(wù)端重新開啟ServerAgent指定另一個(gè)端口后,連接終于正常了。。。