性能監控是性能測試過程中非常重要的一個環節,當在壓測過程中出現性能瓶頸時,需要綜合詳細的監控數據對問題進行分析。整個系統架構中的每一個環節都需要做監控(壓力機、網絡、各中間件、各服務器硬件資源等)。性能監控做好了,就能幫助你快速的定位問題,找到系統的性能瓶頸。
操作系統級別監控
cpu監控
Top命令:
Top命令是Linux下一個實時的、交互式的,對操作系統整體監控的命令,可以對CPU、內存、進程監控。 是Linux下最常用的監控命令。
起一個項目,給點壓力,看看效果
一個並發,永遠跑,看一下
load average:過去某段時間內CPU平均的負載情況,(排隊要執行的的進程數)
第一個值所在的位置:過去一分鍾的
第二個值所在的位置:過去五分鍾的
第三個值所在的位置:過去十五分鍾的
一般來說,排隊的數量最好不要超過cpu的核數,比如4核,但是數字大於4,則代表有進程在排隊,等待執行
Task:當前有多少個任務
Cpu(s):反映cpu的一些數據:
us:用戶使用(用戶進程,如myslq、tomcat、qq)的cpu的百分比
sy:系統使用的cpu的百分比
ni:指進程的優先級,一般都是0,不用管
id:idle,空閑的:=1-us-sy
wa:wait,因為有些任務是需要些磁盤的(如tomcat需要寫日志),而CPU的速度比磁盤寫入的速度更快,所以有了這個等待寫入數據的狀態,如果這個值比較大的話,說明磁盤寫入速度比較慢,壓力比較大,磁盤那塊很可能就有問題
hi、si、st:跟中斷相關的,不用關注
按1會展示每個核的具體情況,由於我的是單核,所以按了1也只有這一個
以下截圖為16核的
Mem:memory,內存,一般如果是要看內存不使用top命令,下面有一個專門看內存的命令
Swap:交換分區,磁盤上的一塊區域,當內存滿時,可以充當臨時內存,但是速度還是比真實的內存滿很多,比如,系統一直運行中,到某個時候,內存已經滿了,這個時候還想啟動一個程序,cpu會檢測,有哪些程序已經長時間沒活動了,但是還占用着內存,這個時候,會把這些程序占用的內存,轉移到swap空間中,騰出一些空間保證用戶能繼續啟動程序(如WPS啟動着最小化過一段時間不用,再切換回來的時候,會很卡),所以說這個指標反映出內存是否足夠的情況,若used數據一直在漲,則說明內存不足
RES:當前進程所占的真實內存的大小
%CPU:指當前進程占cpu使用的比例,為所有核占用之和,比如8核,這里有可能統計出來是800
%MEM:當前進程占用內存的百分比
top命令默認是以占用cpu的比例降序排列的,若想以占用內存的比例來排序,按M即可,按P切回cpu
內存監控
free命令可以查看當前系統內存的使用情況
free -m 以MB為單位顯示系統內存的使用情況,同理,也可以使用-k、-g等其他的單位顯示,此處換算單位精度的問題,檢測為1006M,實際為1G
free命令從兩個維度統計了內存的使用情況
第一行Mem:
從操作系統角度統計內存的total(總共)、used(已使用)、free(剩余)、buffers(往內存寫內容的時候的緩存)、cached(讀內存的時候的緩存,類似於Redis和Mysql的關系)
所以,實際剩余內存=free+buffer+cached
第二行-/+buffers:
從應用程序角度統計內存的total、used、free、buffers、cached
buffer和cache
兩者都是Linux下的緩存機制,其中buffer為寫操作的緩存,cache為讀操作的緩存
swap
交換空間,磁盤上的一塊空間,當系統內存不足時,會使用交換空間
磁盤監控
iostat命令可以查看當前機器磁盤io的數據
命令:iostat -x -k 1
-x:展示磁盤的擴展信息
-k:以k為單位展示磁盤數據
1:每1秒刷新一次
avg-cpu:監控cpu的指標
Device:真正監控磁盤的數據,一般數據庫服務器消耗磁盤比較多,應用程序一般消耗磁盤不多,消耗cpu比較多
展示結果
util:磁盤IO使用率,單位%,反映磁盤的繁忙程度,上限100%,一般達到90%就代表磁盤壓力非常大了,已經達到瓶頸了, 當看到util比較大 的時候,看看rkb和wkb的情況,看看是那個造成的
r/s:每秒讀請求數
w/s:每秒寫請求數
rkb/s:每秒讀磁盤字節數
wkb/s:每秒寫磁盤字節數
df命令可以查看當前系統磁盤空間的使用情況
命令:df -h
磁盤速度測試,如果磁盤讀寫的性能極差,那么壓測出來的結果極有可能不准,比如我的2.7M,肯定太小了,一般至少是50多MB/秒
命令:dd if=/dev/zero of=/export/ddtest bs=8k count=1000000 oflag=direct
過幾秒鍾后Ctrl+c結束