JMeterPlugin性能監(jiān)控

GUI界面中的plugins manager中的jpgc-Standard set遭垛,其中共包含以下的文件:
  jpgc-dummy
  jpgc-fifo
  jpgc-graphs-basic
  jpgc-perfmon
  jpgc-tst
  jpgc-sense
  jpgc-functions
  jpgc-casutg
  jpgc-ffw

界面

線程組

image.png

jp@gc - Stepping Thread Group扰魂,如下圖
建立壓力模型禽笑,持續(xù)加壓


image.png

This Group will start 100 threads:這次的測試總共會起100個線程抚恒。
First , wait for 10 seconds:等待10s后開始起線程渊额,也就是不等待直接起線程。
Then start 1 threads :最開始啟動1個線程
Next add:10 threads every:10 using ramp-up:5 每10秒在5秒內(nèi)啟動10個線程
Then hold load for 12 seconds. :全部的線程起來后咐蚯,運行12s 后開始停止(跟loadrunner類似,從jmeter聚合報告里面可以看出來弄贿,這里的hold load 的意思春锋,其實是這些線程,一直在請求差凹,相當(dāng)于jmeter普通線程組里面的循環(huán)運行)期奔。
Finally , stop 5 threads every 10 seconds:每隔10秒停止5個線程

jp@gc - Ultimate Thread Group,如下圖

image.png

跟上面那個線程組有些類似危尿,不過這個是幾個設(shè)置的結(jié)合呐萌,像這里有設(shè)置兩個線程組(1、不延遲谊娇,20s內(nèi)起100個線程肺孤,hold 60s后,10s內(nèi)停止济欢;)赠堵,執(zhí)行的時候,這兩個線程組是同時按照自己的規(guī)則開始執(zhí)行的船逮,每一時刻顾腊,得到的結(jié)果都是兩個線程組的疊加。

監(jiān)控器

jp@gc - Active Threads Over Time
不同時間活動用戶數(shù)量展示(圖表)

image.png

jp@gc - Flexible File Writer
這個插件允許你靈活記錄測試結(jié)果
Filename:結(jié)果記錄的地方
Overwirte existing file:是否覆蓋這個文件
Write File Header:文件的頭(即文件的第一行)
Record each sample:記錄不同的sample(記錄哪些內(nèi)容挖胃,什么順序杂靶,如何隔開不同的值)
Write File Footer:文件的結(jié)尾(即文件的最后一行)

image.png

jp@gc - PerfMon Metrics Collector
服務(wù)器性能監(jiān)測控件,包括CPU酱鸭,Memory吗垮,Network,I/O等等(此功能用到在需監(jiān)聽的服務(wù)器上啟動startAgent)
Add Row 可以添加需要監(jiān)控的服務(wù)器ip凹髓,端口號默認(rèn)為4444烁登,監(jiān)控內(nèi)容CPU/MEMORY/DISKS I/O等

image.png

jp@gc - Response Times Over Time
響應(yīng)時間超時,顯示每個采樣以毫秒為單位的平均響應(yīng)時間
展示響應(yīng)時間曲線

image.png

jp@gc - Transactions per Second
每秒事務(wù)數(shù)蔚舀,服務(wù)器每秒處理的事務(wù)數(shù)
用于展示TPS曲線

image.png

ServerAgent

下載解壓ServerAgent-2.2.1.zip文件饵沧,將解壓后的文件夾放在需要監(jiān)控的服務(wù)器端,Linux和windows通用赌躺,只需啟動服務(wù)即可
默認(rèn)端口是4444狼牺,如果占用需要修改

image.png

windows平臺運行ServerAgent.jar文件

linux服務(wù)器上首先將startAgent.sh設(shè)定為可執(zhí)行文件:
chmod 777 startAgent.sh
./startAgent.sh執(zhí)行文件
如果要將該文件設(shè)置為后臺執(zhí)行不關(guān)閉
Nohup ./startAgent.sh &

在服務(wù)器上開啟startAgent服務(wù)后,再在jmeter上運行腳本礼患,可以在jp@gc - PerfMon Metrics Collector上查看監(jiān)控的圖形結(jié)果

性能測試中服務(wù)器關(guān)鍵性能指標(biāo)

- 業(yè)務(wù)指標(biāo):如吞吐量(QPS是钥、TPS)掠归、響應(yīng)時間(RT)、并發(fā)數(shù)悄泥、業(yè)務(wù)成功率等
- 資源指標(biāo):如CPU虏冻、內(nèi)存、Disk I/O弹囚、Network I/O等資源的消耗情況

一. CPU

關(guān)于CPU資源厨相,有三個重要概念:使用率、運行隊列和上下文切換余寥,這里借助一張描述進(jìn)程狀態(tài)的圖來進(jìn)行簡要說明:

image.png
  • Running:正在運行的進(jìn)程
  • Waiting:已準(zhǔn)備就緒领铐,等待運行的進(jìn)程
  • Blocked:因為等待某些事件完成而阻塞的進(jìn)程悯森,通常是在等待I/O宋舷,如Disk I/O,Network I/O等瓢姻。

這里的Running和Waiting共同構(gòu)成Linux進(jìn)程狀態(tài)中的可運行狀態(tài)(task_running)祝蝠,而Blocked狀態(tài)可以對應(yīng)Linux進(jìn)程狀態(tài)中的不可中斷睡眠狀態(tài)(task_uninterruptible)

在Linux可以使用vmstat來獲取這些數(shù)據(jù):

[hbase@ecs-097 ~]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 6  0      0 4591436 176804 1185380    0    0     0     0 7915 10357 83  5 12  0  0

CPU使用率(CPU Utilization Percentages):有進(jìn)程處于Running狀態(tài)的時間/總時間。在vmstat主要通過us幻碱、syid三列數(shù)據(jù)來體現(xiàn):

  • us:用戶占用CPU的百分比
  • sy:系統(tǒng)(內(nèi)核和中斷)占用CPU的百分比
  • id:CPU空閑的百分比

性能測試指標(biāo)中绎狭,CPU使用率通常用us + sy來計算,其可接受上限通常在70%~80%褥傍。另外需要注意的是儡嘶,在測試過程中,如果sy的值長期大于25%恍风,應(yīng)該關(guān)注in(系統(tǒng)中斷)和cs(上下文切換)的數(shù)值蹦狂,并根據(jù)被測應(yīng)用的實現(xiàn)邏輯來分析是否合理。

運行隊列進(jìn)程數(shù)(Processes on run queue):Running狀態(tài) + Waiting狀態(tài)的進(jìn)程數(shù)朋贬,展示了正在運行和等待CPU資源的任務(wù)數(shù)凯楔,可以看作CPU的工作清單,是判斷CPU資源是否成為瓶頸的重要依據(jù)锦募。vmstat通過r的值來體現(xiàn):

  • r: 可運行進(jìn)程數(shù)摆屯,包括正在運行(Running)和已就緒等待運行(Waiting)的古今。

如果r的值等于系統(tǒng)CPU總核數(shù)嚷兔,則說明CPU已經(jīng)滿負(fù)荷。在負(fù)載測試中鉴裹,其可接受上限通常不超過CPU核數(shù)的2倍赎线。

上下文切換(Context Switches):簡單來說廷没,context指CPU寄存器和程序計數(shù)器在某時間點的內(nèi)容,(進(jìn)程)上下文切換即kernel掛起一個進(jìn)程并將該進(jìn)程此時的狀態(tài)存儲到內(nèi)存氛驮,然后從內(nèi)存中恢復(fù)下一個要執(zhí)行的進(jìn)程原來的狀態(tài)到寄存器腕柜,從其上次暫停的執(zhí)行代碼開始繼續(xù)執(zhí)行至頻繁的上下文切換將導(dǎo)致sy值增長。vmstat通過cs的值來體現(xiàn):

  • cs:每秒上下文切換次數(shù)。

另外還有一個指標(biāo)用來作為系統(tǒng)在一段時間內(nèi)的負(fù)載情況的參考:

平均負(fù)載Load Average:在UNIX系統(tǒng)中盏缤,Load是對系統(tǒng)工作量的度量砰蠢。Load取值有兩種情況,多數(shù)UNIX系統(tǒng)取運行隊列的值(vmstat輸出的r)唉铜,而Linux系統(tǒng)取運行隊列的值 + 處于task_uninterruptible狀態(tài)的進(jìn)程數(shù)(vmstat輸出的b)台舱,所以會出現(xiàn)CPU使用率不高但Load值很高的情況。Load Average就是在一段時間內(nèi)的平均負(fù)載潭流,系統(tǒng)工具top竞惋、uptime等提供1分鐘、5分鐘和15分鐘的平均負(fù)載值灰嫉。

[hbase@ecs-097 ~]$ top
top - 19:23:28 up 18:05,  3 users,  load average: 0.80, 0.60, 0.53

上面示例中的0.80即是1分鐘內(nèi)的Load average拆宛,以此類推。
當(dāng)我們需要了解當(dāng)前系統(tǒng)負(fù)載情況時讼撒,可以先查看Load average的值浑厚,如果系統(tǒng)持續(xù)處于高負(fù)載(如15分鐘平均負(fù)載大于CPU總核數(shù)的兩倍),則查看vmstat的r值和b值來確認(rèn)是CPU負(fù)荷重還是等待I/O的進(jìn)程太多根盒。

二. Memory

Memory資源也有三方面需要關(guān)注:可用內(nèi)存钳幅,swap占用,頁面交換(Paging)炎滞,仍然借助一張圖來說明:

image.png

這里講到的內(nèi)存敢艰,包括物理內(nèi)存和虛擬內(nèi)存,如上圖所示册赛,物理內(nèi)存和硬盤上的一塊空間(SWAP)組合起來作為虛擬內(nèi)存(Virtual Memory)為進(jìn)程的運行提供一個連續(xù)的內(nèi)存空間钠导,這樣的好處是進(jìn)程可用的內(nèi)存變大了,但需要注意的是击奶,SWAP的讀寫速度遠(yuǎn)低于物理內(nèi)存辈双,并且物理內(nèi)存和swap之間的數(shù)據(jù)交換會增加系統(tǒng)負(fù)擔(dān)。虛擬內(nèi)存被分成頁(x86系統(tǒng)默認(rèn)頁大小為4k)柜砾,內(nèi)核讀寫虛擬內(nèi)存以頁為單位湃望,當(dāng)物理內(nèi)存空間不足時,內(nèi)存調(diào)度會將物理內(nèi)存上不常使用的內(nèi)存頁數(shù)據(jù)存儲到磁盤的SWAP空間痰驱,物理內(nèi)存與swap空間之間的數(shù)據(jù)交換過程稱為頁面交換(Paging)证芭。

可用內(nèi)存(free memory):內(nèi)存占用的直觀數(shù)據(jù),vmstat輸出free的值担映,可用內(nèi)存過小將影響整個系統(tǒng)的運行效率废士,對于穩(wěn)定運行的系統(tǒng),free可接受的范圍通常應(yīng)該大于物理內(nèi)存的20%蝇完,即內(nèi)存占用應(yīng)該小于物理內(nèi)存的80%官硝。在壓力測試時矗蕊,系統(tǒng)內(nèi)存資源的情況應(yīng)該用可用內(nèi)存結(jié)合頁面交換情況來判斷,如果可以內(nèi)存很少氢架,但頁面交換也很少傻咖,此時可以認(rèn)為內(nèi)存資源還對系統(tǒng)性能構(gòu)成嚴(yán)重影響。

頁面交換(Paging):頁面交換包括從SWAP交換到內(nèi)存和從內(nèi)存交換到SWAP岖研,如果系統(tǒng)出現(xiàn)頻繁的頁面交換卿操,需要引起注意∷镌可以從vmstat的si和so獲群τ佟:

  • si:每秒從SWAP讀取到內(nèi)存的數(shù)據(jù)大小
  • so:每秒從內(nèi)存寫入到SWAP的數(shù)據(jù)大小

SWAP空間占用:可以從vmstat的swpd來獲取當(dāng)前SWAP空間的使用情況,應(yīng)該和頁面交換結(jié)合來分析拓售,比如當(dāng)swpd不為0窥摄,但si,so持續(xù)保持為0時邻辉,內(nèi)存資源并沒有成為系統(tǒng)的瓶頸溪王。

三. Disk

磁盤通常是系統(tǒng)中最慢的一環(huán)腮鞍,一是其自身速度慢值骇,即使是SSD,其讀寫速度與內(nèi)存都還存在數(shù)量級的差距移国,二是其離CPU最遠(yuǎn)吱瘩。另外需要說明的是磁盤IO分為隨機IO順序IO兩種類型,在性能測試中應(yīng)該先了解被測系統(tǒng)是偏向哪種類型迹缀。

  • 隨機IO:隨機讀寫數(shù)據(jù)使碾,讀寫請求多,每次讀寫的數(shù)據(jù)量較小祝懂,其IO速度更依賴于磁盤每秒能IO次數(shù)(IOPS)票摇。

  • 順序IO:順序請求大量數(shù)據(jù),讀寫請求個數(shù)相對較少砚蓬,每次讀寫的數(shù)據(jù)量較大矢门,順序IO更重視每次IO的數(shù)據(jù)吞吐量。

對于磁盤灰蛙,首要關(guān)注使用率祟剔,IOPS和數(shù)據(jù)吞吐量,在Linux服務(wù)區(qū)摩梧,可以使用iostat來獲取這些數(shù)據(jù)物延。

[hbase@ecs-097 ~]$ iostat -dxk 1
Linux 2.6.32-504.3.3.el6.x86_64 (ecs-097)     08/01/2016     _x86_64_    (4 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.52    0.00    0.13    0.06    0.00   99.28
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.10     6.63    0.40    2.57     6.22    36.80    29.00     0.04   14.63   1.19   0.35

(設(shè)備)使用率:統(tǒng)計過程中處理I/O請求的時間與統(tǒng)計時間的百分比,即iostat輸出中的%util仅父,如果該值大于60%叛薯,很可能降低系統(tǒng)的性能表現(xiàn)浑吟。

IOPS:每秒處理讀/寫請求的數(shù)量,即iostat輸出中的r/s和w/s耗溜,個人PC的機械硬盤IOPS一般在100左右买置,而各種公有云/私有云的普通服務(wù)器,也只在百這個數(shù)量級强霎。預(yù)先獲取到所用服務(wù)區(qū)的IOPS能力忿项,然后在性能測試中監(jiān)控試試的IOPS數(shù)據(jù),來衡量當(dāng)前的磁盤是否能滿足系統(tǒng)的IO需求城舞。

數(shù)據(jù)吞吐量:每秒讀/寫的數(shù)據(jù)大小轩触,即iostat輸出中的rkB/s和wkB/s,通常磁盤的數(shù)據(jù)吞吐量與IO類型有直接關(guān)系家夺,順序IO的吞吐能力明顯優(yōu)與隨機讀寫脱柱,可以預(yù)先測得磁盤在隨機IO和順序IO下的吞吐量,以便于測試時監(jiān)控到的數(shù)據(jù)進(jìn)行比較衡量拉馋。

四. Network

網(wǎng)絡(luò)本身是系統(tǒng)中一個非常復(fù)雜的部分榨为,但常規(guī)的服務(wù)端性能測試通常放在一個局域網(wǎng)進(jìn)行,因為我們首先關(guān)注被測系統(tǒng)自身的性能表現(xiàn)煌茴,并且需要保證能在較少的成本下發(fā)起足夠大的壓力随闺。因此對于多數(shù)系統(tǒng)的性能測試,我們主要關(guān)注網(wǎng)絡(luò)吞吐量即可蔓腐,對于穩(wěn)定運行的系統(tǒng)矩乐,需要為被測場景外的業(yè)務(wù)流出足夠的帶寬;在壓力測試過程中回论,需要注意瓶頸可能來自于帶寬散罕。
在Linuxf服務(wù)器,可以使用iptraf來查看本機網(wǎng)絡(luò)吞吐量傀蓉,如:

[root@ecs-097 ~]# iptraf -d eth0
x Total rates:         67.8 kbits/sec        Broadcast packets:            0x
x                      54.2 packets/sec      Broadcast bytes:              0                                                                                                                x
x                                                                                                                                                                                           x
x Incoming rates:      19.2 kbits/sec                                                                                                                                                       x
x                      25.4 packets/sec                                                                                                                                                     x
x                                            IP checksum errors:           0                                                                                                                x
x Outgoing rates:      48.7 kbits/sec                                                                                                                                                       x
x                      28.8 packets/sec

五. 總結(jié)

性能測試中欧漱,數(shù)據(jù)收集很重要,但是更重要的是快速抓住關(guān)鍵數(shù)據(jù)葬燎,讀懂?dāng)?shù)據(jù)的含義误甚。
本文主要介紹服務(wù)端性能測試中,對于CPU萨蚕、內(nèi)存等各種系統(tǒng)資源靶草,通常首要關(guān)注的數(shù)據(jù),以及這些數(shù)據(jù)在Linux服務(wù)器上的獲取方式岳遥。
在實際測試中奕翔,通常會持續(xù)收集這些數(shù)據(jù),如使用nmon浩蓉,JMeter的PerfMon插件派继,以及zabbix等專門的系統(tǒng)監(jiān)控工具

參考資料
Load (computing)
Process state
Linux Performance Analysis in 60,000 Milliseconds

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宾袜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子驾窟,更是在濱河造成了極大的恐慌庆猫,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绅络,死亡現(xiàn)場離奇詭異月培,居然都是意外死亡,警方通過查閱死者的電腦和手機恩急,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門杉畜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衷恭,你說我怎么就攤上這事此叠。” “怎么了随珠?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵灭袁,是天一觀的道長。 經(jīng)常有香客問我窗看,道長茸歧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任烤芦,我火速辦了婚禮举娩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘构罗。我一直安慰自己,他們只是感情好智玻,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布遂唧。 她就那樣靜靜地躺著,像睡著了一般吊奢。 火紅的嫁衣襯著肌膚如雪盖彭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天页滚,我揣著相機與錄音召边,去河邊找鬼。 笑死裹驰,一個胖子當(dāng)著我的面吹牛隧熙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播幻林,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼贞盯,長吁一口氣:“原來是場噩夢啊……” “哼音念!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躏敢,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤闷愤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后件余,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讥脐,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年啼器,在試婚紗的時候發(fā)現(xiàn)自己被綠了攘烛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡镀首,死狀恐怖坟漱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情更哄,我是刑警寧澤芋齿,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站成翩,受9級特大地震影響觅捆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜麻敌,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一栅炒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧术羔,春花似錦赢赊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寥殖,卻和暖如春玩讳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嚼贡。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工熏纯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粤策。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓樟澜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親掐场。 傳聞我的和親對象是個殘疾皇子往扔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 基本概念 QPS:query per second, 1秒內(nèi)完成的請求數(shù)RT:response time, 1個請...
    PennyWong閱讀 7,459評論 0 18
  • 這篇文章主要介紹一些常用的linux服務(wù)器性能監(jiān)控命令贩猎,包括命令的常用參數(shù)、指標(biāo)的含義以及一些交互操作萍膛。 幾個問題...
    dancingking閱讀 8,361評論 6 22
  • Java 應(yīng)用性能優(yōu)化是一個老生常談的話題吭服,典型的性能問題如頁面響應(yīng)慢、接口超時蝗罗,服務(wù)器負(fù)載高艇棕、并發(fā)數(shù)低,數(shù)據(jù)庫頻...
    Rick617閱讀 7,343評論 1 9
  • 用戶響應(yīng)時間=服務(wù)器響應(yīng)時間+網(wǎng)絡(luò)時間 系統(tǒng)性能分析思路 (1)整體系統(tǒng)CPU利用率 (2)內(nèi)存利用率 (3)磁盤...
    是小亦啊閱讀 1,841評論 0 8
  • my youth like nothing my youth love nothing all the time ...
    北幼安閱讀 118評論 0 0