相信全部的linux管理員最經常使用的命令就是這個 w 了,該命令顯示的信息仍是蠻豐富的。第一行從左面開始顯示的信息依次爲:時間,系統運行時間,登陸用戶數,平均負載。第二行開始以及下面全部的行,告訴咱們的信息是,當前登陸的都有哪些用戶,以及他們是從哪裏登陸的等等。其實,在這些信息當中,咱們最應該關注的應該是第一行中的 ‘load average:’ 後面的三個數值。linux
第一個數值表示1分鐘內系統的平均負載值;第二個數值表示5分鐘內系統的平均負載值;第三個數值表示15分鐘系統的平均負載值。這個值的意義是,單位時間段內CPU活動進程數。固然這個值越大就說明服務器壓力越大。通常狀況下這個值只要不超過服務器的cpu數量就沒有關係,若是服務器cpu數量爲8,那麼這個值若小於8,就說明當前服務器沒有壓力,不然就要關注一下了。那麼如何查看服務器有幾個cpu?shell
‘/proc/cpuinfo’ 這個文件記錄了cpu的詳細信息。目前市面上的服務器一般都是2顆4核cpu,在linux看來,它就是8個cpu。查看這個文件時則會顯示8段相似的信息,而最後一段信息中processor : 後面跟的是 ‘7’ 因此查看當前系統有幾個cpu,咱們可使用這個命令: grep -c 'processor' /proc/cpuinfo 而如何看幾顆物理cpu呢,須要查看關鍵字 「physical id」, 因爲此虛擬機只有一個cpu因此並未顯示關於 「physical id」 的信息。數據庫
上面講的 w 查看的是系統總體上的負載,經過看那個數值能夠知道當前系統有沒有壓力,可是具體是哪裏(CPU, 內存,磁盤等)有壓力就沒法判斷了。經過 vmstat 就能夠知道具體是哪裏有壓力。vmstat命令打印的結果共分爲6部分:procs, memory, swap, io, system, cpu. 請重點關注一下r b si so bi bo幾列。緩存
1)procs 顯示進程相關信息服務器
r :表示運行和等待cpu時間片的進程數,若是長期大於服務器cpu的個數,則說明cpu不夠用了;工具
b :表示等待資源的進程數,好比等待I/O, 內存等,這列的值若是長時間大於1,則須要關注一下了;性能
2)memory 內存相關信息ui
swpd :表示切換到交換分區中的內存數量 ;spa
free :當前空閒的內存數量;對象
buff :緩衝大小,(即將寫入磁盤的);
cache :緩存大小,(從磁盤中讀取的);
3)swap 內存交換狀況
si :由交換區寫入到內存的數據量;
so :由內存寫入到交換區的數據量;
4)io 磁盤使用狀況
bi :從塊設備讀取數據的量(讀磁盤);
bo: 從塊設備寫入數據的量(寫磁盤);
bi bo上5千 就應該注意了
5)system 顯示採集間隔內發生的中斷次數
in :表示在某一時間間隔中觀測到的每秒設備中斷數;
cs :表示每秒產生的上下文切換次數;
6)CPU 顯示cpu的使用狀態
us :顯示了用戶下所花費 cpu 時間的百分比;
sy :顯示系統花費cpu時間百分比;
id :表示cpu處於空閒狀態的時間百分比;
wa :表示I/O等待所佔用cpu時間百分比;
st :表示被偷走的cpu所佔百分比(通常都爲0,不用關注);
以上所介紹的各個參數中,經常會關注r列,b列,和wa列,三列表明的含義在上邊說得已經很清楚。IO部分的bi以及bo也是要常常參考的對象。若是磁盤io壓力很大時,這兩列的數值會比較高。另外當si, so兩列的數值比較高,而且在不斷變化時,說明內存不夠了,內存中的數據頻繁交換到交換分區中,這每每對系統性能影響極大。
咱們使用 vmstat 查看系統狀態的時候,一般都是使用這樣的形式來看的:
[root@localhost ~]# vmstat 1 5
or
[root@localhost ~]# vmstat 1
前面表示,每隔一秒鐘打印一次狀態,共打印5次,然後面的表示每隔1秒打印一次狀態,一直打印,除非咱們按 Ctrl + c 結束
這個命令用於動態監控進程所佔系統資源,每隔3秒變一次。這個命令的特色是把佔用系統資源(CPU,內存,磁盤IO等)最高的進程放到最前面。top命令打印出了不少信息,包括系統負載(loadaverage)、進程數(Tasks)、cpu使用狀況、內存使用狀況以及交換分區使用狀況。其實上面這些內容能夠經過其餘命令來查看,因此用top重點查看的仍是下面的進程使用系統資源詳細情況。這部分東西反映的東西仍是比較多的,不過須要關注的也就是幾項:%CPU, %MEM, COMMAND,RES 這一項爲進程所佔內存大小,而 %MEM 爲使用內存百分比。在 top 狀態下,按 「shift + m」, 能夠按照內存使用大小排序。按數字 ‘1’ 能夠列出各顆cpu的使用狀態。
另外,常常用的一個命令 top -bn1 它表示非動態打印系統資源使用狀況,能夠用在shell腳本中:
和 top 命令惟一的區別就是,它一次性所有把全部信息輸出出來而非動態顯示。
sar 命令很強大,它能夠監控系統全部資源狀態,好比平均負載、網卡流量、磁盤狀態、內存使用等等。它不一樣於其餘系統狀態監控工具的地方在於,它能夠打印歷史信息,能夠顯示當天從零點開始到當前時刻的系統狀態信息。若是系統沒有安裝這個命令,請使用 yum install -y sysstat 命令安裝。初次使用sar命令會報錯,那是由於sar工具尚未生成相應的數據庫文件(時時監控就不會了,由於不用去查詢那個庫文件)。它的數據庫文件在 「/var/log/sa/」 目錄下,默認保存一個月。
1)查看網卡流量歷史 sar -n DEV 以及時時查看網卡流量 sar -n DEV 1 5
IFACE這列表示設備名稱,rxpck/s 表示每秒進入收取的包的數量,txpck/s 表示每秒發送出去的包的數量,rxbyt/s 表示每秒收取的數據量(單位Byte),txbyt/s表示每秒發送的數據量。後面幾列不須要關注。若是有一天所管理的服務器丟包很是嚴重,那麼就應該看一看這個網卡流量是否異常了,若是rxpck/s 那一列的數值大於4000,或者rxbyt/s那列大於5,000,000則頗有多是被攻擊了,正常的服務器網卡流量不會高於這麼多,除非是本身在拷貝數據。
另外也能夠查看某一天的網卡流量歷史,使用-f選項,後面跟文件名,若是系統格式Redhat或者CentOS那麼sar的庫文件必定是在/var/log/sa/目錄下的。
sar -n DEV -f /var/log/sa/sa24
2)查看歷史負載 sar -q
sar -q
這個命令有助於咱們查看服務器在過去的某個時間的負載情況。
sar雖然能夠查看網卡流量,但不夠直視,還有一個更好用的工具就是nload,系統沒有默認安裝,安裝方法:yum install -y epel-release;yum install -y nload
nload