工具使用:php
vmstat 查看cpu時間、內存、IO的狀況。html
參考:http://linuxcommand.org/man_pages/vmstat8.htmllinux
基本用法:ios
[root@root ~]# vmstat 2 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 64964 129796 267304 16371808 0 0 43 26 0 0 3 0 96 0 0 1 0 64964 129684 267304 16371804 0 0 0 68 1281 366 14 0 86 0 0 1 0 64964 129924 267304 16371808 0 0 0 0 1390 490 13 0 87 0 0
//其中2和3分別表示,間隔3秒獲取一次數據,共獲取3次,因此你能夠看到有三條數據在上面。
Procs
r: 等待cpu時間片的進程個數,若是等待cpu的進程個數長期比機器上的cpu個數大,那你是時候加cpu了,固然前提不是寫的很爛的程序一直在吃cpu,若是是的話,殺了那個程序員吧。
b: 等待資源的進程數(這個資源多是IO、網絡設備、或是其餘外設),這裏的進程是沒有辦法進行kill掉的,由於它們處於uninterruptible sleep狀態(也就是不容許中斷的等待狀態,它們不接收任何的信號)。若是這裏有不少的進程,那說明可能你機器磁盤,網卡,或是文件系統等出了問題,須要檢查一下。
Memory
swpd: 虛擬內存的使用大小,咱們知道爲了防止物理內存裝滿數據以後,內存沒法接着工做,咱們須要在內存快用完的時間把不經常使用的內存數據置換到磁盤裏(交換區),好讓內存騰出空間來接納新的數據。這個數據就是表示如今有多少內存數據跑到磁盤裏。當這個數據比於0時,並不表示內存就不夠用了,須要觀察下面si和so。單位爲K
free: 可用內存大小(真實的內存)
buff: buffer cache的內存使用量,通常塊設備纔會使用到buffer cache
cache: cache的內存使用量,通常用於文件系統緩存文件內容,文件句柄數據。 Swap si: 每秒從磁盤調入到內存的數據量,單位是K/s。
so: 每秒從內存調出到磁盤的數據量,單位爲K/s。若是發現si和so長期不爲0並且每秒置換的數據量大,說明內存不夠用了。
IO bi: 每秒讀取磁盤多少數據量,是一個檢查磁盤/硬盤讀取是否頻繁的指標,如:專門提供下載的服務,若是沒有設置好緩存和中間緩存層,這個數值就會比較高了。
bo: 每秒寫入磁盤的數據量。提示:頻繁的sql insert或update操做,會致使大量的寫操做。
System in: 在一段時間內每秒設備中斷次數
cs: 每秒進行上下文切換(如環境變量、進程切換、數據段切換和恢復等)的次數。
CPU us: 用戶使用cpu時間百分比,像應用程序,shell命令等
sy: 內核消耗的cpu時間百分比。
id: cpu空閒時間百分比。
wa: cpu等待io設備時間百分比。
Top查看負載
交互命令:
c: 切換command項的顯示,切換顯示任務命令的完整路徑與簡稱。簡單說就是若是你想查看列表裏任務的命令路徑,按這個就對了。如:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15459 root 22 2 15140 1400 988 R 0.7 0.3 0:05.94 top 8074 root 20 0 134m 316 216 S 0.3 0.1 12:04.04 ./redis-server *:6379 13197 root 20 0 321m 1320 216 S 0.3 0.3 3:38.03 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
z: 運行top以後,按下z,正在執行的進程(也就是正使用cpu的進程)會以特殊的顏色標示出來。
d: 設置top刷新間隔,默認top是3秒,按下d以後,再輸入數字而後回車,新的間隔就設置好了。
top - 09:03:44 up 485 days, 20:22, 2 users, load average: 0.08, 0.06, 0.01 ....... Mem: 24676696k total, 23276508k used, 1400188k free, 325740k buffers Swap: 26738680k total, 64868k used, 26673812k free, 15243460k cached Change delay from 3.0 to: //注意這裏,默認是3秒 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10572 nobody 15 0 171m 78m 5356 S 0.7 0.3 177:49.32 php-cgi 10586 nobody 15 0 157m 65m 5508 S 0.7 0.3 142:08.80 php-cgi 12338 root 15 0 12860 1212 812 R 0.7 0.0 0:00.68 top 10529 nobody 15 0 171m 78m 5536 S 0.3 0.3 105:09.29 php-cgi
shift+w: 保存當前top快照,能夠在/root/.toprc下找到所保存的快照(其實就是保存當前top顯示的配置,保存之後打開top顯示的字段及顏色等就會跟保存時的設置一個樣。)。
h: 很是實用的命令,顯示全部命令的幫助,有用吧。
Help for Interactive Commands - procps version 3.2.7 Window 1:Def: Cumulative mode Off. System: Delay 3.0 secs; Secure mode Off. Z,B Global: 'Z' change color mappings; 'B' disable/enable bold l,t,m Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info 1,I Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode f,o . Fields/Columns: 'f' add or remove; 'o' change display order F or O . Select sort field <,> . Move sort field: '<' next col left; '>' next col right R,H . Toggle: 'R' normal/reverse sort; 'H' show threads c,i,S . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time x,y . Toggle highlights: 'x' sort field; 'y' running tasks z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y') u . Show specific user only n or # . Set maximum tasks displayed k,r Manipulate tasks: 'k' kill; 'r' renice d or s Set update interval W Write configuration file q Quit ( commands shown with '.' require a visible task display window ) Press 'h' or '?' for help with Windows, any other key to continue
參考:http://linux.about.com/od/commands/l/blcmdl1_top.htm程序員
free查看內存的使用redis
total used free shared buffers cached Mem: 469452 463528 5924 0 592 33716 -/+ buffers/cache: 429220 40232 Swap: 950264 950264 0
Mem: 內存總大小、已使用、未使用、共享內存大小、緩衝區使用大小、緩存使用大sql
-/+ buffers/cache: 緩衝和緩存已使用、和未使用shell
Swap: 交換區大小、已經使用、未使用數據庫
說明1: 首先解釋一下緩衝與緩存的區別:緩衝區裏的數據是不可複用的,當數據流由快設備流向慢設備時,爲了使得這個過程正常工做,須要一個緩衝區來暫時保存數據,好比說程序的內存數據要寫入硬盤,因爲內存的讀寫速度比較硬盤快的多,若是無論硬盤的速度,一個勁的輸出數據到硬盤,硬盤確定來不及寫,那數據就丟掉了。因此這時系統會先把內存數據寫入緩衝區內(其實也是內存的一部分),而後再由緩衝區慢慢寫入硬盤中。而緩存則是數據可複用的,對於頻繁使用的數據,能夠放入緩存區內,下次使用的時候,直接從緩存區內獲取。緩衝區還有一種用途,像數據庫的排序操做,須要把數據都取出來放在內存裏,在內存中進行排序,其實用的就是緩衝區。緩存
說明2:-/+ buffers/cache 的兩個值是這樣得來的: 463528 (Mem used) - 592 (Mem buffers) - 33716 (Mem cached) 及 5924 + 592 + 33716。從這兩個公式就能夠看出Mem used顯示的數據是包含了buffers 和 cached使用大小的。
參考:http://www.linuxnix.com/2013/05/find-ram-size-in-linuxunix.html
htop代替top
參考:http://www.cnblogs.com/mchina/archive/2013/03/15/2858041.html
其餘工具:iostat ps iftop nethogs netstat sar