概述
性能測試過程中,對服務器資源的監控是必不可少的。這里的資源又分了兩塊,windows和linux
linux下監控資源
訪問網址http://jmeter-plugins.org/downloads/all/,下載三個文件。其中JMeterPlugins-Standard和JMeterPlugins-Extras是客戶端的,ServerAgent是服務端的。

前兩個是jmeter擴展插件,解壓后將jar拷貝包到jmeter的lib/ext目錄下,最后一個是服務器監控插件,解壓到服務器上
將ServerAgent-2.2.1.zip解壓后放在需要監控的服務器上,並執行
chmod 777 startAgent.sh 賦權
./startAgent.sh 啟動監控

配置端口和ip,端口默認4444
服務器上可以修改默認端口--./startAgent.sh –udp-port 0 –tcp-port XXXX
如果配置正確,但是始終無法監控到服務器,需要考慮 4444 端口是否在服務器防火牆中被禁用!
運行查看結果
jmeter隱藏功能:指定進程號進行監控。需要雙擊空白的地方,右邊會出現三個點。這邊可以根據服務器的pid進程號來監控資源


監控CPU
數值都是代表百分比,比如默認配置下在曲線圖中看到某個時間的數值是30,即代表此時總的cpu使用時間占比為30%。
兩點比較有用的地方值得說明:
1:在Scope區域,可以通過Per Process選項來獲取指定進程的CPU使用情況
2:在CPU Cores區域,我們可以選擇監控指定的單個Core。
監控Memory
usedperc(默認)和freeperc兩項的數值代表與總內存的百分比,其余指標項的數值都是指內存大小,選中對應項,可以看到Metric Unit區域單位配置將變為可用,通常Mb會比較適合觀察。同樣,也可以選擇監控指定進程的數據
監控Disk I/O
queue(默認)的數值代表等待I/O隊列長度,reads、writes分別代表每秒處理的讀/寫次數,readbytes、writebytes顧名思義,代表每秒讀/寫的數據量,單位同樣在Metric Unit區域配置,通常Mb會比較適合觀察。如果有掛載多個存儲設備,可以在Filesystem Filter區域指定要監控的設備
windows下的資源監控1---jconsole
jdk目錄下面有自帶的資源監控平台--jconsole.exe

雙擊jconsole.exe,啟動監控平台,可以選擇需要監控的服務。可以是本地的tomcat進程,也可以是遠程的服務器。這里我選擇了監控jmeter進程。

在上方的概覽中,我們可以看到堆內存,線程,類,cpu四個監控模塊。時間可以自由選擇。

在內存選項中,我們可以選擇分別監控新生代,老年代,eden,space這些堆內存空間。同時可以手動gc內存。

在線程中,我們可以監控所有已加載的線程,同時一鍵檢測線程死鎖。

在類中,我們可以直觀的看到各種性能數據。包括jmeter分配的線程池大小。

windows下的資源監控2---jmc工具,可以監控本地和遠程機器

jmc的功能類似於jconsole,不過儀表盤式的外觀和色彩看起來更加漂亮。
在底部的按鈕可以針對堆內存,cpu,線程等進行性能診斷

windows下的資源監控2---jvisualvm工具,可以監控本地和遠程機器


jvisualvm的功能更加強大一些,除了常規的數據監控之外,還可以對線程進行dump(只能針對本地,不能對遠程服務進行dump)

jdk自帶的監控工具是豐富多彩的,我們可以根據自己的需求去選擇不同的工具。
內存瓶頸分析
內存資源成為系統性能的瓶頸的征兆 :
-
很高的換頁率 (high pageout rate);
-
進程進入不活動狀態 ;
-
交換區所有磁盤的活動次數可高 ;
-
可高的全局系統 CPU 利用率 ;
-
內存不夠出錯 (out of memory errors)
cpu瓶頸分析
CPU 資源成為系統性能的瓶頸的征兆 :
-
很慢的響應時間 (slow response time)
-
CPU 空閑時間為零 (zero percent idle CPU)
-
過高的用戶占用 CPU 時間 (high percent user CPU)
-
過高的系統占用 CPU 時間 (high percent system CPU)
-
長時間的有很長的運行進程隊列 (large run queue size sustained over time)
