有過運維Linux服務器的選手,想必對於系統平均負載(load averages)參數不會陌生吧,我們可以通過top, htop, uptime
這些命令找到它們(如下圖),那么我們又改如何理解它們呢,今天這篇就來一起看看應該如何讀懂這個load averages
參數。
系統平均負載的取值分別來自1分,5分,15分這三個時間區間,對於單核CPU而言,當平均負載為0時,表示CPU完全空閑,當平均負載為1時,表示CPU為滿負荷狀態,但兩個極端都不應出現在我們的服務器上,前者說明系統沒有被充分利用到,后者說明系統瀕臨奔潰,都不是什么好事情。
關於負載的含義,網上最廣泛的示例,是通過橋梁的通過率來解釋的。講的真心好,所以直接「借鑒」過來,需要看原文的直接從參考引用處自行穿越。注意這里的比喻是基於單核CPU的。
系統負荷為0,意味着大橋上一輛車也沒有
系統負荷為0.5,意味着大橋一半的路段有車。
系統負荷為1.0,意味着大橋的所有路段都有車,但任然可以順次通行
系統負荷為1.7,除了橋滿之外,在橋的入口處還有70%的車輛在等待
就目前情況來說,單核的個人PC是不應該的,當然服務器就是另一回事兒了,比如可能你買了某雲主機商的單核廉價套餐來搭梯子,但實際的真實環境中單核真的是很少,所以光知道單核的表現還不行,還得會換算到多核處理器上,其實這也簡單,直接在單核的負載上乘以核數就可以了,換到剛才的大橋示例,多核就是多車道(下圖),車道多了通過率自然就嘎嘎滴。
好了,知道了數值的含義,我們再來看看恰當的經驗值該是多少,到底應該以三個值中的哪個位准,以及預告系統奔潰的經驗值該設置成多少?
前面說到平均負載是1,5,15這三個時間區間的均值。因為偶爾系統負載會出現峰值,短時間1,5分鍾的負載都不夠客觀存在抖動,所以最可靠的肯定是第三個,15分鍾內的均值,如果系統平均負載的第三個值長時間居高不下,那么就應該考慮提升配置或者給系統進程做做減法了。
第二個問題,知道了基准值的位置,那么基准值該是多少呢?其實這個值完全是靠個人經驗的,只能是種預判,就像陰天不一定下雨一樣,好了不賣關子,實際中最好能讓負載保持在滿負載的75%左右,長時間高於這個值就應該考慮做出調整了,當然也恭喜你業務得到拓展了(2333~),另外在生產環境中,你可以通過Monit,Nagios等這樣的監控軟件來監控系統性能指標,從而做到「早發現,早治療」。
如何獲取CPU的核數
Mac
sysctl -n hw.ncpu
Linux
cat /proc/cpuinfo
-完-
你還可以看:
參考引用
http://www.wtoutiao.com/p/1faPwo8.html