Linux通過(guò)uptime查看系統(tǒng)負(fù)載是否過(guò)高的方法
1. 什么是負(fù)載(load average)?
- 定義:?jiǎn)挝粫r(shí)間內(nèi)處于 可運(yùn)行(R) 或 不可中斷睡眠(D) 狀態(tài)的 平均任務(wù)數(shù)。
- 來(lái)源:內(nèi)核統(tǒng)計(jì),用戶態(tài)通過(guò)
/proc/loadavg讀取。 - 三個(gè)值依次代表 1 分鐘、5 分鐘、15 分鐘 的采樣結(jié)果。
- 可通過(guò):
uptime、top、htop等命令查看。
[root@k8s-node1 a]# uptime 17:16:23 up 49 days, 6:35, 4 users, load average: 1.04, 1.37, 1.65
2. 快速判斷負(fù)載是否過(guò)高公式
飽和度 = loadavg / 邏輯 CPU 核數(shù)
獲取CPU核數(shù)(以下命令都可):
nproc
grep -c ^processor /proc/cpuinfo
lscpu | grep -i cpu\(s\)\: | awk '{print $2}'
例如:
- cpu核數(shù):32 - loadavg:6.21 # 計(jì)算(保留一位即可,第二位可四舍五入) 6.21/32=0.2 # 0.2,屬于非??臻e的狀態(tài)
| 飽和度區(qū)間 | 經(jīng)驗(yàn)含義 | 建議 |
|---|---|---|
| < 0.5 | 空閑 | 資源充足 |
| 0.5–0.7 | 健康 | 正常業(yè)務(wù) |
| 0.7–1.0 | 繁忙 | 有排隊(duì),可接受 |
| 1.0–1.5 | 重載 | 需要觀察 |
| > 1.5 | 過(guò)載 | 立即排查 |
對(duì) 延遲敏感 服務(wù)(API、游戲)可把紅線降到 0.7。
3. 一條命令判斷當(dāng)前狀態(tài)
- ①、寫(xiě)個(gè)腳本來(lái)獲取當(dāng)前負(fù)載的百分比
- load_check.sh
#!/bin/bash
cores=$(nproc)
read one five fifteen < /proc/loadavg
sat1=$(awk -v c="$cores" -v l="$one" 'BEGIN{printf "%.0f%%",l/c*100}')
sat5=$(awk -v c="$cores" -v l="$five" 'BEGIN{printf "%.0f%%",l/c*100}')
sat15=$(awk -v c="$cores" -v l="$fifteen" 'BEGIN{printf "%.0f%%",l/c*100}')
printf "CPU飽和度:\n1 min\t5 min\t15 min\n%s\t%s\t%s\n" "$sat1" "$sat5" "$sat15"
- ②、配置別名
別名可以根據(jù)自己的喜好去自定義,定義之前請(qǐng)確保不要和命令沖突;
alias load="sh /路徑/load_check.sh"
- ③、并寫(xiě)到
~/.bashrc配置里
vim ~/.bashrc # 在最后一行追加 alias load="sh /路徑/load_check.sh" # 保存退出 # source使其生效 sorce ~/.bashrc
- ④、執(zhí)行別名進(jìn)行測(cè)試
[root@localhost ~]# load CPU飽和度: 1 min 5 min 15 min 1% 1% 2%
就可以很明顯的看到負(fù)載的飽和度,再結(jié)合上面的飽和度表,來(lái)判斷是否過(guò)載;
4. 場(chǎng)景舉例
例 1:4 核機(jī)器 load=6
飽和度 = 6/4 = 150 %(1.5) → 過(guò)載,需進(jìn)一步排查。
↑ ↑
百分比 小數(shù)點(diǎn)
例 2:64 核機(jī)器 load=32
飽和度 = 32/64 = 50 %(0.5) → 健康,但需確認(rèn)是否 IO 等待。
例 3:64 核機(jī)器 load=12
飽和度 = 12/64 = 18 %(0.18) → 空閑,不用管,資源很充足。
5. 如何肉眼來(lái)判斷負(fù)載是否過(guò)高?
- 1、首先需要記住此服務(wù)器的核心數(shù)
nproc
例:回顯 32 心里就記住 ≈30 這條線。
- 2、把 uptime 輸出切成三檔 肉眼標(biāo)尺
load average: 6.21, 7.50, 9.00
↑ ↑ ↑
1min 5min 15min
- 小于核數(shù)一半 → 空閑(32 核看 16)
- 接近核數(shù) → 滿載(32 核看 30~35)
- 明顯超過(guò)核數(shù) → 過(guò)載(>40 就紅)
所以 6.21 遠(yuǎn) < 16,秒判空閑。
- 3、口訣總結(jié)
load 數(shù)字小于核數(shù)一半 → 空;
接近核數(shù) → 滿;
遠(yuǎn)超核數(shù) → 爆。
6. 負(fù)載高 ≠ 問(wèn)題定界,可以繼續(xù)進(jìn)行深挖排查是什么導(dǎo)致的
| 工具 | 看啥 |
|---|---|
| top / htop | 按 1 展開(kāi)每核,觀察 CPU 是否跑滿 或者top P,查看哪個(gè)cpu占用最高。 |
| iostat -x 1 | 看 %util / await,確認(rèn) 磁盤(pán) IO 瓶頸 utils大于80磁盤(pán)io過(guò)高 await對(duì)SSD而言,1–2就很大了,但對(duì)機(jī)械盤(pán)大于10明顯感覺(jué)卡 |
| vmstat 1 | 觀察 r 列(運(yùn)行隊(duì)列) 與 b 列(阻塞隊(duì)列) r正在運(yùn)行 + 等待 CPU 的任務(wù)數(shù)(長(zhǎng)期) > 核數(shù) = cpu很堵 b處于不可中斷睡眠(D 狀態(tài))的任務(wù)數(shù) > 0 = 達(dá)到了磁盤(pán)/網(wǎng)絡(luò) IO 瓶頸 |
以上就是Linux通過(guò)uptime查看系統(tǒng)負(fù)載是否過(guò)高的方法的詳細(xì)內(nèi)容,更多關(guān)于Linux uptime查看系統(tǒng)負(fù)載的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
查看linux文件系統(tǒng)塊大小的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇查看linux文件系統(tǒng)塊大小的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
CentOS 7.2部署郵件服務(wù)器(Postfix)
這篇文章主要為大家詳細(xì)介紹了CentOS 7.2如何部署郵件服務(wù)器Postfix,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
詳解Linux下crontab的使用與注意事項(xiàng)
這篇文章主要介紹了詳解Linux下crontab的使用與注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
CentOS下Lighttpd Web服務(wù)器安裝與配置方法
CentOS下Lighttpd Web服務(wù)器安裝與配置方法,需要的朋友可以參考下。2011-04-04
linux 不改變目錄結(jié)構(gòu)移動(dòng) home 目錄到新分區(qū)的操作方法
這篇文章主要介紹了linux 不改變目錄結(jié)構(gòu)移動(dòng) home 目錄到新分區(qū)的操作方法,需要的朋友可以參考下2017-12-12
Linux內(nèi)核中的設(shè)計(jì)模式之全面理解與示例代碼
這篇文章主要介紹了Linux內(nèi)核中的設(shè)計(jì)模式之全面理解與示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02

