vmstat

vmstat介紹
通過STATSPACK收集服務器信息,主要通過收集VMSTAT的信息來展現服務器狀況。VMSTAT工具是最常見的UNIX監控工具,可以展現給定時間間隔的服務器的狀態值。
一般VMSTAT工具的使用是通過兩個數字參數來完成的,第一個參數是採樣的時間間隔數,單位是秒,第二個參數是採樣的次數。如:
[oracle@localhost oracle]$vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b  swpd     free   buff      cache    si so  bi bo in  cs     us      sy id wa
0 0 195804 3812 40616 1598656 0 0     0      0 1024 66976 0  0 100 0
0 0 195804 3812 40616 1598656 0 0     0 12    1048 66961 0  0 100 0
0 0 195804 3812 40616 1598656 0 0     0 28    1054 67067 0  0 100 0
0 0 195804 3812 40616 1598656 0 0     0      0 1020 66988 0  0 100 0
(注:目前系統幾乎空閒,並且不同操作系統VMSTAT輸出內容有所不同)
目前說來,對於服務器監控有用處的度量主要有:
r------運行隊列
b------表示阻塞的進程的數量。
swpd-----代表虛擬內存使用的數量。
free -------代表空閒內存的數量。
buff--------代表作爲緩衝區的內存的數量。
cache-------文件系統緩存使用的RAM數量。
si ------------從磁盤分頁到內存的數量。
so----------從內存分頁到磁盤的數量。
bi----------代表從硬盤讀出的塊數量。
bo---------代表寫入硬盤的塊數量。
us---------代表用戶的進程所佔的cpu百分比。
sy---------代表系統進程所佔的cpu的百分比。
id----------系統空閒的cpu所佔的百分比。
(如果r經常大於4 ,且id經常少於40,表示cpu的負荷很重。)
(如果bi,bo 長期不等於0,表示內存不足)

通過VMSTAT識別CPU瓶頸
r(運行隊列)展示了正在執行和等待CPU資源的任務個數。當這個值超過了CPU數目,就會出現CPU瓶頸了

獲得CPU個數的命令(LINUX環境):
cat /proc/cpuinfo|grep processor|wc -l
當r值超過了CPU個數,就會出現CPU瓶頸,解決辦法大體幾種:
1. 最簡單的就是增加CPU個數
2. 通過調整任務執行時間,如大任務放到系統不繁忙的情況下進行執行,進爾平衡系統任務
3. 調整已有任務的優先級

通過VMSTAT識別CPU滿負荷
首先需要聲明一點的是,vmstat中CPU的度量是百分比的。當us+sy的值接近100的時候,表示CPU正在接近滿負荷工作。但要注意的是,CPU 滿負荷工作並不能說明什麼,UNIX總是試圖要CPU儘可能的繁忙,使得任務的吞吐量最大化。唯一能夠確定CPU瓶頸的還是r(運行隊列)的值。

free
通過VMSTAT識別RAM瓶頸
數據庫服務器都只有有限的RAM,出現內存爭用現象是Oracle的常見問題。
首先察看RAM的數量,命令如下(LINUX環境):
[oracle@oracle-db02 ~]$ free
         total    used    free     shared buffers     cached
Mem:    2074924 2071112    3812       0    40616 1598656
-/+ buffers/cache:     431840 1643084
Swap:    3068404     195804 2872600

當然可以使用top等其他命令來顯示RAM。
當內存的需求大於RAM的數量,服務器啓動了虛擬內存機制,通過虛擬內存,可以將RAM段移到SWAP DISK的特殊磁盤段上,這樣會 出現虛擬內存的頁導出和頁導入現象,頁導出並不能說明RAM瓶頸,虛擬內存系統經常會對內存段進行頁導出,但頁導入操作就表明了服務器需要更多的內存了, 頁導入需要從SWAP DISK上將內存段複製回RAM,導致服務器速度變慢。

解決的辦法有幾種:
1. 最簡單的,加大RAM
2. 改小SGA,使得對RAM需求減少
3. 減少RAM的需求(如:減少PGA)

loadavg
利用/proc/loadavg監控CPU的平均負載文件內容如下:
[root@supersun ~]# cat /proc/loadavg
0.43 0.26 0.29 1/125 4133
這裏的平均負載也就是可運行的進程的平均數
前三個值分別對應系統在5分鐘、10分鐘、15分鐘內的平均負載
第四個值的分子是正在運行的進程數,分母是進程總數,最後一個是最近運行的進程ID號
現在我們將平均負載的值寫到虛擬終端的標題欄上。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章