1. 程式人生 > >使用w檢視系統負載,vmstat 命令,sar命令,nload命令

使用w檢視系統負載,vmstat 命令,sar命令,nload命令

使用w檢視系統負載

  • 如圖,使用 w 命令可以顯示系統負載資訊
  • 第一個時間是使用w命令時,系統當前的時間
  • 第二個時間,也就是up後面的時間,是系統運行了多長的時間
  • 這裡是 9 days, 22:43 說明系統運行了9天22分鐘
  • 2 users 表示有兩個使用者登入了系統
  • load averagge 後面的三列數字表示系統負載的數值
  • 第一列是過去1分鐘的平均負載,第二列是過去5分鐘的平均負載,第三列是過去15分鐘的平均負載
  • 比如每個cpu有有一個預設負載極限
  • 過去一分鐘實際執行的程序比預設的負載極限少
  • 那麼 過去一分鐘的程序數/極限程序負載數 就會小於 1
  • 如果過去一分鐘的程序數等於極限程序負載數
  • 這兩個值相除,就等於1
  • 如果1分鐘內的程序數大於極限負載數,兩個值相除,就會大於1
  • 這個值最好是 小於等於1,如果大於1,說明負載太高
  • 對於多核cpu負載極限也不同
  • 比如,單核cpu負載極限是1,雙核就是2,8核就是8
  • 負載極限是按照邏輯cpu來算的,而不是物理cpu
  • 想檢視邏輯cpu數量,可以 cat /proc/cpuinfo
  • 如圖,可以看 processor 這一行資料
  • 這裡是 0 ,就表示有一個邏輯cpu
  • 這一行資料是從0開始的,實際上 0 就表示1個邏輯cpu
  • 如果這一行數值是7,那就表示有8個邏輯cpu
  • 這一行的數值加 1 就是邏輯cpu的個數
  • 所以 processor 這一行的值+1乘以1就是伺服器的極限負載能力值
  • load average 小於或者等於這個值就說明伺服器負載沒有問題
  • 大於這個值說明實際負載大於伺服器極限負載值
  • 使用 uptime 命令也可以檢視系統負載資訊,不過一般都使用 w

vmstat 命令

  • vmstat 可以檢視當前系統cpu,磁碟,記憶體等的使用狀況
  • 如圖,使用命令 vmstat 可以檢視一次當前狀況
  • 如果想不斷的更新使用狀況,可以使用 vmstat 1
  • 這樣系統每過1秒,就會顯示一次當前的系統使用狀況
  • 也可以使用 vmstat 1 5
  • 這條命令意思是 每秒顯示一次資訊,總共顯示5次
  • 這樣就可以看到接下來5秒的系統使用狀況

  • vmstat 顯示的資訊主要分為幾部分,常用部分有
  • procs 代表 cpu
  • memory 代表記憶體
  • swap 代表交換分割槽
  • io 代表磁碟
  • cpu cpu使用時間百分比

  • procs 下面有 r 跟 b 兩列
  • r 是 run 的意思
  • 意思是cpu在處理的程序數量
  • 一般正在處理和等待處理的程序數量都在 r 顯示
  • b 是 block 的意思
  • 下面是數值也是程序數量
  • 跟r的區別是,由於網路,或者磁碟等原因卡死等待的程序數量
  • 會顯示在這裡,比如一個程序需要網路傳輸資料
  • 但是網路太慢,資料沒有傳輸完成,導致cpu不能處理該程序
  • 這個程序就會進入等待,因為是網路卡導致的等待
  • 會顯示在 b 這一列裡面

  • memory下面的 swpd 是交換分割槽的意思
  • 如果記憶體不夠用了,系統會將記憶體裡面的一部分資料放到交換分割槽裡面
  • 交換分割槽一般是在磁碟上面
  • 這個分割槽如果頻繁變動
  • 說明記憶體在不斷的與交換分割槽交換資料
  • 也就表示記憶體是不夠用的

  • swap 下面的 si,so 跟swpd有關係
  • si,so就表示交換分割槽的讀寫狀況,單位是kb
  • 所以 swpd 有變動的話
  • si,so也一定有資料變化
  • i表示in,o表示out,目標物件都是記憶體
  • 所以 si 是資料 in 記憶體,也就是從swap 讀資料進入記憶體
  • so 是資料 out 記憶體,也就是從記憶體出來,寫入swap
  • si 表示資料從交換分割槽寫入記憶體
  • so 表示資料從記憶體寫入交換分割槽

  • io下面的 bi,bo 代表磁碟讀寫
  • 目標物件也是記憶體
  • 所以 bi 表示 in 記憶體,從磁碟讀取資料寫入記憶體
  • bo 表示 out 記憶體,從記憶體讀取資料寫入磁碟
  • bi 資料從磁碟到記憶體
  • bo 資料從記憶體到磁碟

  • cpu 下面常用的是 us,單位是百分比
  • us 表示使用者的程序佔用cpu使用時間的百分比
  • 舉例說明,cpu 開啟了 10秒
  • 有 5秒 都在處理使用者的程序
  • 那麼 us 就是 50
  • sy 是系統自己的程序佔用的cpu使用時間百分比
  • id 表示cpu空閒的時間的百分比
  • cpu從啟動開始,一般就是兩種狀態,空閒 或者處理程序
  • 那麼 空閒時間 + 處理程序的時間 = 總的時間
  • us 就是 處理使用者程序的時間 除以 總的時間 的百分比
  • sy 就是 處理系統程序的時間 除以 總的時間 的百分比
  • id 就是 空閒時間 除以 總的時間 的百分比
  • 所以 us + sy + id = 100(百分百)
  • 一般 us 超過 50 說明 cpu 可能效能不足以應付當前任務
  • wa 是程序等待數的百分比,表示在等待狀態的程序佔總程序數的百分比

top 命令

  • top 可以檢視系統程序使用狀況
  • top 命令每3秒更新一次資訊
  • 如圖,第一行的資訊跟 w 第一行一樣
  • 第二行有幾列資訊,分別是
  • total,runningg,sleeping,stopped,zombie
  • total表示總共有幾個程序,這裡總共有95個程序
  • running就是正在執行的程序,也就是cpu正在處理的程序
  • 也是 vmstat 中 r 狀態的程序
  • sleeping 表示程序在休眠狀態,可以過一段時間才會執行
  • stopped 表示程序在停止狀態的程序數
  • zombie 意思是主程序因為某種原因已經終止了
  • 但是留下的子程序並沒有被終止,這些子程序就沒人管了
  • 還在自動執行,但是是沒用的,這些子程序就是zombie狀態

  • 第三行是cpu的資訊
  • 可以在第三行看到 us sy id wa st 的資訊
  • 主要要看的也是這幾個
  • 其中,st 代表 cpu 被偷走的時間百分比
  • 如果伺服器做了虛擬化,就會產生虛擬機器
  • 而虛擬機器的cpu利用的資源實際來自於伺服器的真實cpu
  • st 也就是 cpu 被虛擬機器拿去使用的時間的佔比
  • 主要還是觀察 us 的使用情況
  • 儘量保證 us 佔比在 60 一下
  • 因為 cpu 常年滿負荷運轉的話,會縮短使用壽命
  • 所以一般在60以下比較好
  • us 和 load average 不一定有關係
  • 因為系統負載跟程序數佔用cpu有關
  • 但是佔用cpu的程序不一定是 r 狀態
  • 如果不是 r 狀態,那麼 us 就不高

  • Mem 是記憶體資訊
  • 第一列是總記憶體大小
  • 第二列是空閒記憶體大小
  • 第三列是已經使用的記憶體大小
  • 如圖,下面顯示的是程序的資訊
  • 一般來說,預設是按照 cpu 的佔用率來進行排序
  • cpu 佔用高的程序會在上面
  • %MEM是記憶體的佔用率
  • RES 是程序使用的實際記憶體,單位是kb
  • RES 除以 上面的total 就可以得到 %MEM 記憶體佔用率

  • 除了按照cpu佔用率排序之外
  • 還可以按照記憶體佔用率排序,使用 大寫M 就可以按照記憶體佔用率排序
  • 也就是按 大寫的M鍵
  • 如果想切換回來,按照cpu佔用率排序,可以使用 大寫P 鍵
  • 還可以切換不同的cpu檢視程序,使用按鍵 1
  • 按 1 就可以在不同的cpu之間進行切換

  • 使用命令 top -c
  • 如圖,c 引數可以在 COMMAND 列 顯示詳細的命令資訊,如這個命令的地址等

  • 還可以使用 top -bn1 命令
  • 這樣可以一次性把所有的程序資訊都列出來,適合在寫指令碼時使用
  • 如果想kill一個程序,可以使用 kill命令 + PID 來殺死一個程序

sar命令

  • 如果系統沒有sar命令,就需要安裝一個包
  • yum install -y sysstat 就可以安裝sar命令的包
  • 安裝完包,直接使用 sar 命令,出現錯誤
  • 因為在不加引數的情況下使用 sar 命令
  • sar 會呼叫 /var/log/sa 目錄裡面的歷史檔案
  • sar 每隔10分鐘,會自動儲存一個歷史檔案在這個目錄裡面
  • 因為現在剛剛安裝完包,這個目錄裡面還沒有歷史檔案,所以調用出現錯誤

  • 沒有歷史檔案的情況下,想使用sar 就需要加上引數使用
  • 如圖,sar -n DEV 1 3 可以檢視網絡卡資訊
  • 引數 -n 是網路裝置的意思
  • 引數 DEV 是 -n 的引數,指網路裝置的統計資訊
  • 網路裝置有不同型別的統計資訊,DEV是裝置基本的統計資訊
  • 引數 1 是指 每秒統計一次,引數 3 是指 總共統計三次
  • 也就是 3 秒後sar命令會自動結束
  • 使用命令後,下面出現的資訊
  • 第一列是統計資訊的時間
  • 第二列是網絡卡的名字,這裡有兩個網絡卡,分別是 lo 和 ens33
  • 第三列 rxpck/s 是每秒接收到的資料包,單位是個
  • 第四列 txpck/s 是每秒傳送出去的資料包,單位是個
  • 第五列 rxkB/s 是每秒接收的資料量,單位是kb
  • 第六列 txkB/s 是每秒傳送出去的資料量,單位是kb
  • 最後三列不怎麼用到,主要看資料包跟資料量的列
  • 接收的資料包,如果是每秒幾千個,算是正常的
  • 如果每秒上萬個,可能是被攻擊了

  • 使用這條命令,可以檢視 /var/log/sa/ 目錄下的歷史檔案
  • 歷史檔案生成名稱是有規律的,一般是 sa+當天的日期的日
  • 比如,今天是10月01日,那麼今天生成的歷史檔名稱就是 sa01
  • 如果是10月20日生成的歷史檔案,那麼檔名就是 sa20
  • 當天的歷史檔案,每隔10分鐘會更新一次
  • 這個資料夾下面的歷史檔案最多保留1個月就會自動刪除
  • 這條命令裡面,使用 -f 引數才可以開啟檔案,後面接檔案地址
  • 目錄 /var/log/sa/sa01 這個歷史檔案是 二進位制檔案,不能 cat 檢視
  • sa目錄下面除了sa01,還會生成 sar01 這個檔案
  • 不過 sar01 要到第二天才會出現,sar01 是文字檔案
  • 直接使用 cat 就可以讀取內容

  • sar -q 1 10 檢視每秒的負載,總共看10秒,不過每秒負載意義不大
  • 直接 sar -q 系統自動分為 每10分鐘的負載
  • 或者使用 sar -q -f /var/log/sa/sa01 檢視當天的負載
  • 這裡,ldavg-1就是前1分鐘的負載情況
  • ldavg-5就是前5分鐘,ldavg-15就是前15分鐘負載

  • sar -b 1 5 檢視磁碟讀寫情況,每秒統計1次,總共5次
  • 下面的資訊就是磁碟的讀寫情況,可以用 sar -b 檢視

nload命令

  • nload 也可以監控網絡卡流量
  • nload 也是需要安裝包的
  • 安裝 nload 包之前,需要先安裝 epel-release 包
  • 安裝好之後,再使用 yum install -y nload 安裝 nload 包

  • 安裝好包之後,輸入 nload 回車,就會出現上圖介面
  • 可以實時看到網絡卡的流量資訊
  • Curr 是當前值,Avg是平均值,Min是最小值,Max是最大值
  • 第一行資料,ens33就是網絡卡名稱
  • 後面是 ip 地址,然後(1/2)表示總共有2個網絡卡,這是其中一個
  • 使用 右方向鍵,可以切換到第二個網絡卡,如上圖,可以看到第二個網絡卡的資訊
  • 右方向鍵可以切換網絡卡,看到不同網絡卡的資訊
  • 也可以使用左方向鍵向左切換
  • 右方向鍵可以來回切換,左方向鍵只能向左切換
  • 按 q