uptime命令:
top命令:可以知道每個進程佔CPU的情況
total 進程總數 running 正在運行的進程數 sleeping 睡眠的進程數 stopped 停止的進程數 zombie 殭屍進程數 Cpu(s): 0.1% us 用戶空間佔用CPU百分比 0.2% sy 內核空間佔用CPU百分比 0.0% ni 用戶進程空間內改變過優先級的進程佔用CPU百分比 98.8% id 空閒CPU百分比 0.0% wa 等待輸入輸出的CPU時間百分比 0.0%hi:硬件CPU中斷佔用百分比 0.0%si:軟中斷佔用百分比 0.0%st:虛擬機佔用百分比
vmstat命令:可以統計系統的CPU,內存,swap,io等情況
Procs r: The number of processes waiting for run time. 等待運行的進程數。如果等待運行的進程數越多,意味着CPU非常繁忙。另外,如果該參數長期大於和等於邏輯cpu個數,則CPU資源可能存在較大的瓶頸。 b: The number of processes in uninterruptible sleep. 處在非中斷睡眠狀態的進程數。意味着進程被阻塞。主要是指被資源阻塞的進程對列數(比如IO資源、頁面調度等),當這個值較大時,需要根據應用程序來進行分析,比如數據庫產品,中間件應用等。 Memory swpd: the amount of virtual memory used. 已使用的虛擬內存大小。如果虛擬內存使用較多,可能系統的物理內存比較吃緊,需要採取合適的方式來減少物理內存的使用。swapd不爲0,並不意味物理內存吃緊,如果swapd沒變化,si、so的值長期爲0,這也是沒有問題的 free: the amount of idle memory. 空閒的物理內存的大小 buff: the amount of memory used as buffers. 用來做buffer(緩存,主要用於塊設備緩存)的內存數,單位:KB cache: the amount of memory used as cache. 用來做cache(緩存,主要用於緩存文件)的內存,單位:KB inact: the amount of inactive memory. (-a option) inactive memory的總量 active: the amount of active memory. (-a option) active memroy的總量。 Swap si: Amount of memory swapped in from disk (/s). 從磁盤交換到swap虛擬內存的交換頁數量,單位:KB/秒。如果這個值大於0,表示物理內存不夠用或者內存泄露了 so: Amount of memory swapped to disk (/s). 從swap虛擬內存交換到磁盤的交換頁數量,單位:KB/秒,如果這個值大於0,表示物理內存不夠用或者內存泄露了 內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。 當看到空閒內存(free)很少的或接近於0時,就認爲內存不夠用了,這個是不正確的。不能光看這一點,還要結合si和so, 如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。 當內存的需求大於RAM的數量,服務器啓動了虛擬內存機制,通過虛擬內存,可以將RAM段移到SWAP DISK的特殊磁盤段上, 這樣會 出現虛擬內存的頁導出和頁導入現象,頁導出並不能說明RAM瓶頸,虛擬內存系統經常會對內存段進行頁導出, 但頁導入操作就表明了服務器需要更多的內存了, 頁導入需要從SWAP DISK上將內存段複製回RAM,導致服務器速度變慢。 IO bi: Blocks received from a block device (blocks/s). 每秒從塊設備接收到的塊數,單位:塊/秒 也就是讀塊設備。 bo: Blocks sent to a block device (blocks/s). 每秒發送到塊設備的塊數,單位:塊/秒 也就是寫塊設備。 System in: The number of interrupts per second, including the clock. 每秒的中斷數,包括時鐘中斷 cs: The number of context switches per second. 每秒的環境(上下文)切換次數。比如我們調用系統函數,就要進行上下文切換,而過多的上下文切換會浪費較多的cpu資源,這個數值應該越小越好。 CPU These are percentages of total CPU time. us: Time spent running non-kernel code. (user time, including nice time) 用戶CPU時間(非內核進程佔用時間)(單位爲百分比)。 us的值比較高時,說明用戶進程消耗的CPU時間多 sy: Time spent running kernel code. (system time) 系統使用的CPU時間(單位爲百分比)。sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。 id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time. 空閒的CPU的時間(百分比),在Linux 2.5.41之前,這部分包含IO等待時間。 wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero. 等待IO的CPU時間,在Linux 2.5.41之前,這個值爲0 .這個指標意味着CPU在等待硬盤讀寫操作的時間,用百分比表示。wait越大則機器io性能就越差。說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。 st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
pidstat命令:需要安裝(sudo apt-get install sysstat), 可以細緻觀察進程,監控CPU,監控IO,監控內存
示例1:
PID:進程ID %usr:進程在用戶空間佔用cpu的百分比 %system:進程在內核空間佔用cpu的百分比 %guest:進程在虛擬機佔用cpu的百分比 %CPU:進程佔用cpu的百分比 CPU:處理進程的cpu編號 Command:當前進程對應的命令
示例2:
示例3: