原文:http://blog.sina.com.cn/s/blog_68f1c17001016uvy.html
Linux提供了很多用于監控系統的工具,使用這些工具可以找到導致系統性能降低的瓶頸。系統反應慢并不總是由于CPU慢,它也可能是因為磁盤速度太慢、系統中安裝的內存較少、網絡擁擠或其他反應較慢的系統部件導致。
一、top –進程活動監控最廣泛使用的系統性能監控工具是top,你啟動top后,它每隔五秒顯示一屏信息,動態實時地顯示系統狀態。
top的輸出顯示如下:

在最頂行顯示了系統名和信息被收集和顯示的時間。Top命令的輸出被分為3個主要部分。這3個部分是CPU、內存和進程。
CPU部分顯示如下信息:
內存區部分顯示如下信息:
進程的數據構成很多列,這些列根據CPU的利用率降序排列,使用CPU最多的進程在最上面。
進程區部分顯示如下信息:
退出使用top,按q鍵
二、vmstat – 收集系統活動,硬件和系統信息vmstat命令可以顯示虛擬內存的統計數據,它顯示有關進程、頁的錯誤,同時這個命令也可以用來看CPU和磁盤I/O的信息
![image_thumb[1] image_thumb[1]](http://s1.vevb.com/20150728/2xye0vvbcv049.png)
a.在procs子標題下的域:
·r 在運行的進程數量
·b 被資源阻塞的進程數,(可能在等待I/O或內存)
·w 正在等待運行的進程,它們已經從主內存中被交換出去(由于內存短缺)
需要注意的是w域,它表示進程被交換(swap out)出去的數量,如果這個列的值不為0,則表示你的內存有問題。
b.在memory子標題下的域: ·avm 活動的虛擬內存,指分配給進程的內存頁 ·free 表示實際的可用內存頁大小
c.在page子標題下的域:
·re 回收的頁,一個很大的數字表示內存不足
·at 地址轉換錯誤
·pi 換入的頁(page in)
·po 換出的頁
·fr 每秒釋放的頁
·de 短期預計的內存不足
·sr 指page后臺程序在找到可用內存空間時需要掃描檢查的頁數(san rate)。
在這些域中最重要的是pi、po、de和sr域,當程序開始時,可以看到在pi下有page in的活動,這種活動是正常的。但是,如果是在程序啟動后,仍然發現進程有從磁盤page in的活動,這說明情況不太好。po是指系統把進程移出,以便給其它進程留出內存空間,如果有活動,也是一個不好的信號。如果你發現在de項的數值不為0,這表明有很大的問題,這個值表示預期會有內存短缺
d.在fault子標題下的域(顯示了最近5秒鐘每秒的陷阱和中斷率):
·in 每秒的設備中斷
·sy 每秒鐘的系統調用
·cs CPU上下文的轉換速率
e.在cpu子標題下的域
·us 正常或低優先級進程的用戶時間
·sy 系統時間
·id 空閑時間
可以使用下面的vmstat命令方式,每5秒鐘收集一次性能數據,共顯示3次
![image_thumb[2] image_thumb[2]](http://s1.vevb.com/20150728/y4kwwh2cq3j49.png)
最簡單看系統load的命令是 uptime,它通常用來看機器已經運行了多久時間:
![]()
它給出了三個方面的信息,首先你可以了解服務器已經運行了多久,如果你發現服務器運行的時間很短,而最近并沒有安排服務器重啟,可能服務器有存在問題,導致系統在最近自動重啟。下一個信息是用戶的數量,由于應用和數據庫用戶并沒給直接通過操作系統訪問服務器,因此并不能真實的反映有多少人在使用這個服務器,但是你還是可以了解下,對特別大或特別小的數要注意。最后是系統的平均負載load average,如上圖所示,系統過去1分鐘的負載是0.04,過去5分鐘的平均負載是0.11,過去15分鐘的平均負載是0.14,
四、w – 找出哪些用戶在訪問系統,在干什么W命令顯示當前機器上用戶的信息和他們的進程。
![image_thumb[4] image_thumb[4]](http://s1.vevb.com/20150728/xhbvurfbkb449.png)
使用ps命令列出進程,ps命令不帶參數將列出調用該命令用戶的所有進程。該命令的典型輸出如下:
為了列出所有的進程,你可以使用ps命令帶-ef選項。
iostat 命令可以用于監控磁盤驅動器的I/O行為:
![image_thumb[6] image_thumb[6]](http://s1.vevb.com/20150728/tda203sjjtz49.png)
如下命令顯示3次IO的統計信息,每5秒一次。
![image_thumb[7] image_thumb[7]](http://s1.vevb.com/20150728/czlp1v5vezd49.png)
可以用sar(System Activity Report)系統行為報告來檢查磁盤的I/O。
下面的sar命令,每3秒鐘顯示一次磁盤IO的統計信息,共收集5次。
![image_thumb[8] image_thumb[8]](http://s1.vevb.com/20150728/aepdahfrpd149.png)
![image_thumb[9] image_thumb[9]](http://s1.vevb.com/20150728/rwake0lncka50.png)
有磁盤的%busy值經常大于50嗎?對于該磁盤,是否同時存在其avwait>avserv
的現象?(因為涉及到physical IO 和logical IO 的配置平衡,以及buffer page/swap空間/異步讀寫等問題,磁盤瓶頸很難通過單一因素判斷,50%只是一個大概的評估標準,要結合具體情況綜合分析。有時候,%busy僅僅為20 就已經是磁盤瓶頸,而另外的我們認為磁盤工作正常的系統,%busy值很可能已達到80)。
還可以用sar命令監控CPU的負載,sar命令的-u選項顯示CPU的統計信息,輸出顯示了諸如用戶、系統、等待I/O和空閑狀態的CPU時間分配。如下命令顯示5次CPU的統計信息,每3秒一次。
![image_thumb[10] image_thumb[10]](http://s1.vevb.com/20150728/vekp3ywaslu50.png)
報告CPU的利用率是以百分率的形式給的,看系統進程%sys、用戶進程%usr和空閑進程%idel各自所占的百分率,此外還有%wio表示有多少時間在等待磁盤的I/O。如果CPU的空閑很高,那你可以不用做什么,但如果長時間內%idle值<5 ,表明CPU利用率很高,說明CPU很可能有瓶頸,,你需要進一步分析。
一般來說,我們不希望系統進程占用了很高的CPU負載,,CPU應當更多的服務用戶進程,就一般而言,我希望看到系統進程占20%或30%,用戶進程占70%或80%。
如果長時間內%usr>80說明CPU資源基本上被用戶進程占用,CPU存在明顯瓶頸。
如果%usr 值很少>80,系統可能的瓶頸存在于CPU、memory或I/O 中間。
如果%wio值>15,這是磁盤有瓶頸的信號。
八、netstat –網絡狀態統計用于監控諸如接受和發出的網絡流量、協議的使用、指定到接口卡適配器的ip地址等的網絡行為。
netstat -i 輸出網卡狀態報告.
netstat -in顯示Address列的是IP地址而非主機名.
![image_thumb[11] image_thumb[11]](http://s1.vevb.com/20150728/q22flkar1vt50.png)
新聞熱點
疑難解答