[轉]性能測試指標分析-內存

總體思路:

1)先執行free命令,確認系統整體內存使用情況;【如果內存使用率大於80%,可能存在問題】

2)再通過vmstat命令來進一步確認內存瓶頸;【重點關注:swpd、si、so、bi、bo】

3)缺頁錯誤判斷(寫的很粗略);

一、free

free命令顯示了Linux系統中物理內存、交換分區的使用統計信息。

total:總計物理內存的大小 used:已使用內存大小 free:可用內存 shared:多個進程共享的內存總額

buff/cache:磁盤緩存的大小

空閒內存=free+buffers+cached=total-used

free -m:以MB爲單位顯示內存數據 (下圖我發現有時存在不同,used有時候包含buffers/cached,有時不包含buffers/cached,此文以不包含爲例講解,具體情況請具體分析)

可用內存 = free + buffers + cached

第一行 物理內存使用:

物理內存總量(total)= used+可用內存 = 3317+(330+4162)=7809

第二行 交換分區使用:

交換分區內存總量 = 正在使用的交換分區內存+空閒交換分區內存 = used+free=478+3489=3967

分析:

注意>50% 告警>70% 嚴重>80%

需要注意的是在下面這些情況下,系統是正常的,不需要擔心:

空閒內存free接近於0【注:還有buffers/cache可用】
可用內存(free+buffers/cache)佔total的 20% 以上
下面情況說明內存過低,需要注意:

可用內存(free+buffers/cache)過低,接近於0的時候 或 used接近total【也有說法爲內存使用率大於80%或85%或90%】
dmesg | grep oom-killer顯示有OutOfMemory-killer正在運行(不理解)

二、vmstat

通過free初步瞭解內存可用情況後,需結合vmstat進一步查看交換情況

vmstat 1 2:1秒鐘刷新顯示一次,共刷新顯示2次

重點關注 swpd、si、so 3個指標;

分析:

1)si、so(si:從磁盤交換的內存大小;so:交換到磁盤的內存大小)

si、so2個值長期爲0,則無內存方面性能問題;
如果si、so這2個值長期大於0,此時系統性能會受到影響,磁盤IO和CPU資源都會被消耗;需要考慮增加系統內存;
如果so數值大,且swpd佔比很高,表示內存已經飽和;需要考慮增加系統內存;
如果swpd(虛擬內存)不斷增加,而且存在着大量的頁面交換(si和so),證明系統的物理內存已經不能滿足系統需求,系統必須把物理內存的頁面交換到磁盤中去;
ps:當看到空閒內存(free)很少的或接近於0時,就認爲內存不夠用了,這個是不正確的。不能光看這一點,還要結合si和so;如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。(存疑,free本來就不能斷定內存不夠,還得關注buffers/cache的值)

2)bi、bo(bi:從塊設備接受的塊;bo:發送給塊設備的塊)

如果bi、bo這個值長期不爲0,說明內存可能有問題,因爲沒有用到緩存(當然不排除直接I/O的情況,但一般很少直接I/O的)
如果用作緩衝區(buff)和快速緩存(cache)的物理內存不斷增加,而空閒的物理內存(free)不斷減少,證明系統中運行的進程正在不斷消耗物理內存;

三、缺頁

1、sar -W 查看次缺頁數

頁面發生交換時,服務器的吞吐量會大幅下降;服務器狀況不良時,如果懷疑因爲內存不足而導致

了頁面交換的發生,可以使用這個命令來確認是否發生了大量的交換

說明:sar命令,次缺頁多意味已經在不停地和swap打交道,證明內存已經飽和;

pswpin/s:每秒系統換入的交換頁面(swap page)數量

pswout/s:每秒系統換出的交換頁面(swap page)數量

四、內存OOM

內存不夠用會觸發內核的OOM機制;

查看內核日誌有無OOM機制kill進程;

參考

[1] https://blog.csdn.net/xiaona0523/article/details/107855669

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章