1. 程式人生 > >w命令 vmstat命令 top命令 sar命令 nload命令

w命令 vmstat命令 top命令 sar命令 nload命令

nice 資源 線程 進程 睡眠狀態 設值 內存大小 套接字 比較

一 w查看當前系統的負載

-f  開啟或關閉顯示用戶從何處登入系統。

-h  不顯示各欄位的標題信息列。

-l  使用詳細格式列表,此為預設值。

-s  使用簡潔格式列表,不顯示用戶登入時間,終端機階段作業和程序所耗費的CPU時間。

-u  忽略執行程序的名稱,以及該程序耗費CPU時間的信息。

-V  顯示版本信息。

第一行從左面開始顯示的信息依次為:時間,系統運行時間,登錄用戶數,平均負載。

USER:登錄用戶名

TTY:登陸後系統分配的終端號

FROM:遠程主機名,即從哪裏登陸的

LOGIN@:何時登陸

IDLE:用戶空閑時間。這是個計時器,一旦用戶執行任何操作,該計時器便會被重置。

JCPU:和該終端連接的所有進程占用時間。包括當前正在運行的後臺作業占用時間。

PCPU:當前進程所占用時間。

WHAT:當前正在運行進程的命令行。

load average: 後面的三個數值。

第一個數值表示1分鐘內系統的平均負載值;

第二個數值表示5分鐘內系統的平均負載值;

第三個數值表示15分鐘系統的平均負載值。

這個值的意義是,單位時間段內CPU活動進程數。值越大就說明服務器壓力越大。一般情況下這個值只要不超過服務器的cpu數量就沒有關系,如果服務器cpu數量為8,那麽這個值若小於8,就說明當前服務器沒有壓力。

用cat /proc/cpuinfo查看服務器有幾個CPU

查看當前系統有幾個cpu,使用命令: grep -c ‘processor‘ /proc/cpuinfo

查看幾顆物理cpu,grep -c ‘physical id‘ /proc/cpuinfo

二 vmstat 監控系統的狀態

vmstat工具的使用是通過兩個數字參數來完成的,第一個參數是采樣的時間間隔數,單位是秒,第二個參數是采樣的次數

1表示每隔一秒采集一次服務器狀態,2表示只采集一次。

1)procs 顯示進程相關信息

r :(run)表示運行和等待cpu時間片的進程數,如果長期大於服務器cpu的個數,則說明cpu不夠用了;

b :(block)表示等待資源的進程數,比如等待I/O, 內存等,這列的值如果長時間大於1,則需要關註一下了;

2)memory 內存相關信息

swpd :表示切換到交換分區中的內存數量 ;

free :當前空閑的內存數量;

buff :緩沖大小,(即將寫入磁盤的);

cache :緩存大小,(從磁盤中讀取的);

3)swap 內存交換情況

si :(in)由交換區寫入到內存的數據量;每秒從磁盤讀入虛擬內存的大小,如果這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。

so :(out)由內存寫入到交換區的數據量;每秒虛擬內存寫入磁盤的大小,如果這個值大於0,同上。

4)io 磁盤使用情況

bi :(in)從塊設備讀取數據的量(讀磁盤);塊設備每秒接收的塊數量,這裏的塊設備是指系統上所有的磁盤和其他塊設備,默認塊大小是1024byte

bo: (out)從塊設備寫入數據的量(寫磁盤);塊設備每秒發送的塊數量,例如我們讀取文件,bo就要大於0。bi和bo一般都要接近0,不然就是IO過於頻繁,需要調整。

5)system 顯示采集間隔內發生的中斷次數

in :表示在某一時間間隔中觀測到的每秒設備中斷數;

cs :表示每秒產生的上下文切換次數;例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,我們一般做性能測試時會進行幾千並發甚至幾萬並發的測試,選擇web服務器的進程可以由進程或者線程的峰值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核空間,導致上下文切換,這個是很耗資源,也要盡量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。

6)CPU 顯示cpu的使用狀態

us :顯示了用戶下所花費 cpu 時間的百分比;

sy :顯示系統花費cpu時間百分比;系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁。

id :(idle)表示cpu處於空閑狀態的時間百分比;空閑 CPU時間,一般來說,id + us + sy = 100,一般認為id是空閑CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。

wa :(wait)表示I/O等待所占用cpu時間百分比;

st :(steal)表示被偷走的cpu所占百分比(一般都為0,不用關註);

三top命令

第一行:

當前系統時間

系統已經運行的時間(在這期間沒有重啟過)
2 users — 當前有2個用戶登錄系統
load average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。

load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。

第二行:
Tasks — 任務(進程),系統現在共有103個進程,其中處於運行中的有2個,101個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有0個。

第三行:cpu狀態
us — 用戶空間占用CPU的百分比。
sy — 內核空間占用CPU的百分比。
ni — 改變過優先級的進程占用CPU的百分比
id — 空閑CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比
0.0% si — 軟中斷(Software Interrupts)占用CPU的百分比

第四行:內存狀態
total — 物理內存總量1.78G
used — 使用中的內存總量112M
free — 空閑內存總量1.6G
buffers — 緩存的內存量 152M

第五行:swap交換分區
total — 交換區總量
used — 使用的交換區總量
free — 空閑交換區總量
cached — 緩沖的交換區總量

第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閑內存總量(free)是內核還未納入其管控範圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重復利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用為此擔心。

如果出於習慣去計算可用內存數,這裏有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached。

對於內存監控,在top裏我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。

第七行以下:各進程(任務)的狀態監控
PID — 進程id
USER — 進程所有者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
%CPU — 上次更新到現在的CPU時間占用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)

在 top 狀態下,按 "shift + m", 可以按照內存使用大小排序。

按數字 ‘1‘ 可以列出各顆cpu的使用狀態,監控每個邏輯CPU的狀況

top -bn1 它表示非動態打印系統資源使用情況,可以用在shell腳本中,和 top 命令唯一的區別就是,它一次性全部把所有信息輸出出來而非動態顯示。

top –c可以查看具體命令。

四 sar命令

sar(System ActivityReporter系統活動情況報告),它可以監控系統幾乎所有資源狀態,比如平均負載、網卡流量、磁盤狀態、內存使用等。它不同於其他系統狀態監控工具的地方在於,它可以打印歷史信息,可以顯示當天從零點開始到當前時刻的系統狀態信息。

yum install -y sysstat 命令安裝。初次使用sar命令會報錯,那是因為sar工具還沒有生成相應的數據庫文件(時時監控就不會了,因為不用去查詢那個庫文件)。

它的數據庫文件在 "/var/log/sa/" 目錄下,默認保存一個月。

用法: sar [ 選項 ] [ <時間間隔> [ <次數> ] ]

查看網卡流量 sar –n DEV

IFACE這列表示設備名稱,本地網卡接口的名稱

rxpck/s 表示每秒進入收取的包的數量

txpck/s 表示每秒發送出去的包的數量

rxkb/s 表示每秒收取的數據量(單位Byte)

txkb/s表示每秒發送的數據量。

後面幾列不需要關註。如果有一天所管理的服務器丟包非常嚴重,那麽就應該看一看這個網卡流量是否異常了,如果rxpck/s 那一列的數值大於4000,或者rxkbs/s那列大於5,000,000則很有可能是被×××了,正常的服務器網卡流量不會高於這麽多,除非是自己在拷貝數據。

sar -n DEV 1 1: 每間隔1秒統計一次,總計統計1次

也可以查看某一天的網卡流量歷史,使用-f選項,後面跟文件名,在系統格式Redhat或者CentOS版本中,sar的庫文件一定是在/var/log/sa/目錄下的。

例如:sar -n DEV -f /var/log/sa/sa30

sa30是二進制文件不能使用cat查看。

查看歷史負載 sar -q

sar補充:用法很多,只學有用的。

-n 使用總結

-n DEV : 網絡接口統計信息。

-n EDEV : 網絡接口錯誤。

-n IP : IP數據報統計信息。

-n EIP : IP錯誤統計信息。

-n TCP : TCP統計信息。

-n ETCP : TCP錯誤統計信息。

-n SOCK : 套接字使用。

五 nload命令

安裝:yum install –y epel-release;yum install –y nload

nload依賴於epel-release包。

以實時地監控網卡的流量,分Incoming,Outgoing兩部分,也就是流入與流出的流量,同時統計當前,平均,最小,最大,總流量的值,使人看了一目了然,直接用nload回車即可,也可以指定網卡,如nload eth1。向右箭頭查看其它網卡的網絡流量。q退出。

w命令 vmstat命令 top命令 sar命令 nload命令