使用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 退出該界面
相關文章
相關標籤/搜索