聊一聊Load Average
背景
前段時間,由于有幾個應(yīng)用引入了 prometheus-net.DotNetRuntime 這個組件,導(dǎo)致系統(tǒng) CPU 間歇性飆升。這是這個組件一個已知的雷。。
同樣也引發(fā)了系統(tǒng)的 Load Average (平均負(fù)載) 十分不正常。
這是一臺 4C8G 的服務(wù)器,Load Average 卻是達(dá)到了 15。這也是有點離譜!修復(fù)之后的是穩(wěn)定在 4 以下的。
關(guān)于平均負(fù)載,其實里面的學(xué)問很多,只要候選人簡歷上提到過 Linux 相關(guān)的,老黃是一定會問 Load Average 相關(guān)的內(nèi)容的。
所有也花點時間梳理一下吧。
查看平均負(fù)載的N種方式
w
?12:02:29?up?25?days,?19:53,??1?user,??load?average:?1.28,?0.68,?0.49 USER?????TTY??????FROM?????????????LOGIN@???IDLE???JCPU???PCPU?WHAT root?????pts/0????10.10.2.219????12:02????1.00s??0.01s??0.00s?wtop
Tasks:?142?total,???1?running,?141?sleeping,???0?stopped,???0?zombie %Cpu(s):??4.7?us,??2.9?sy,??0.0?ni,?91.3?id,??0.0?wa,??0.3?hi,??0.8?si,??0.0?st MiB?Mem?:??15604.6?total,????170.4?free,???1771.2?used,??13663.0?buff/cache MiB?Swap:??????0.0?total,??????0.0?free,??????0.0?used.??13522.4?avail?Mem?PID?USER??????PR??NI????VIRT????RES????SHR?S??%CPU??%MEM?????TIME+?COMMAND?????????????287467?root??????20???0???22.1g?241512??20400?S???7.3???1.5???1029:52?dotnet287675?root??????20???0???22.1g?233568??20616?S???7.3???1.5???1043:36?dotnet???uptime
?12:04:08?up?25?days,?19:55,??1?user,??load?average:?0.58,?0.61,?0.49上面的輸出結(jié)果,都可以看到 load average 的字樣,后面還帶了三個數(shù)據(jù)。
load?average:?0.58,?0.61,?0.49三個數(shù)字怎么理解
既然提供了三個數(shù)字,那么這三個數(shù)字分別代表什么呢?
從左到右,依次是過去 1分鐘、 5分鐘、 15分鐘,系統(tǒng)的平均負(fù)載。
通過這三個數(shù)字,就可以比較簡單的判斷系統(tǒng)的負(fù)載趨勢,上升或下降。
舉幾個例子來看看。
例子一
1.30?0.90?0.55這三個數(shù)字在告訴我們系統(tǒng)的負(fù)載在慢慢上升,運行效率可能會減慢。
因為三個數(shù)字依次降低,說明在過去的 1 分鐘系統(tǒng)的負(fù)載比過去 15 分鐘系統(tǒng)的負(fù)載大。
例子二
0.45?0.40?0.43這三個數(shù)字在告訴我們系統(tǒng)的負(fù)載比較平穩(wěn),沒有太大的波動。
因為這三個數(shù)字相差不大,比較接近。
例子三
0.45?0.70?1.43這三個數(shù)字在告訴我們系統(tǒng)的負(fù)載在慢慢下降,運行效率可能會有所提高。
因為三個數(shù)字依次上升,說明在過去的 1 分鐘系統(tǒng)的負(fù)載比過去 15 分鐘系統(tǒng)的負(fù)載小。
上面的三個例子分析也只是能看出趨勢,但是并不確定更加具體一點的信息。
下面看看單個數(shù)字的含義。
負(fù)載含義
拿 1.43 來說,它是什么意思呢?
如果是單核的機(jī)器,比如 1C1G,1C2G,說明系統(tǒng)已經(jīng)在超負(fù)荷運作了,這一個 CPU 已經(jīng)被完全占用了。
如果是多核的機(jī)器,比如 2C4G,4C8G,說明還有空閑的 CPU。
對于 2C 的來說,雖然沒有滿載,但也超過 70% 了,該留意一下了,因為很可能馬上會出現(xiàn)問題。
對于 4C的來說,占用還沒有 50%,基本可以不用太擔(dān)心。
據(jù)說有一個經(jīng)驗值,CPU 數(shù)量的 0.7 !
當(dāng) Load Average 超過這個經(jīng)驗值的時候,就應(yīng)該分析排查負(fù)載高的問題了。一旦負(fù)載過高,就可能導(dǎo)致進(jìn)程響應(yīng)變慢,進(jìn)而影響服務(wù)的正常功能。
總結(jié)
Load Average 提供了一個快速查看系統(tǒng)整體性能的手段,反映了整體的負(fù)載情況。
要分析系統(tǒng)的負(fù)載情況,是離不開這三個不同時間間隔的平均值。
總結(jié)
以上是生活随笔為你收集整理的聊一聊Load Average的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起学习设计模式--02.简单工厂模式
- 下一篇: Newbe.Claptrap 0.9.4