基礎命令學習目錄首頁html
原文連接:https://www.cnblogs.com/wensiyang0916/p/6514820.htmllinux
vmstat 1 1表示每秒採集一次
vmstat 2 1 2表示2秒採集一次,1表示只採集一次ios

r 表示運行隊列(就是說多少個進程真的分配到CPU)
我測試的服務器目前CPU比較空閒,沒什麼程序在跑,當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關係,通常負載超過了3就比較高,超過了5就高,超過了10就不正常了,服務器的狀態很危險。top的負載相似每秒的運行隊列。若是運行隊列過大,表示你的CPU很繁忙,通常會形成CPU使用率很高。
b 表示阻塞的進程,這個很少說,進程阻塞,你們懂的。
swpd 虛擬內存已使用的大小
若是大於0,表示你的機器物理內存不足了,若是不是程序內存泄露的緣由,那麼你該升級內存了或者把耗內存的任務遷移到其餘機器。
free 空閒的物理內存的大小
buff 設備和設備之間的緩衝
Linux/Unix系統是用來存儲,目錄裏面有什麼內容,權限等的緩存
cache cpu和內存之間的緩衝
cache直接用來記憶咱們打開的文件,給文件作緩衝,我本機大概佔用300多M(這裏是Linux/Unix的聰明之處,把空閒的物理內存的一部分拿來作文件和目錄的緩存,是爲了提升 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。)
si 每秒從磁盤讀入虛擬內存的大小,若是這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。個人機器內存充裕,一切正常。
so 每秒虛擬內存寫入磁盤的大小,若是這個值大於0,同上。
bi 塊設備每秒接收的塊數量,這裏的塊設備是指系統上全部的磁盤和其餘塊設備,默認塊大小是1024byte
我本機上沒什麼IO操做,因此一直是0,可是我曾在處理拷貝大量數據(2-3T)的機器上看過能夠達到140000/s,磁盤寫入速度差很少140M每秒
bo 塊設備每秒發送的塊數量,例如咱們讀取文件,bo就要大於0。bi和bo通常都要接近0,否則就是IO過於頻繁,須要調整。
in 每秒CPU的中斷次數,包括時間中斷
cs 每秒上下文切換次數
例如咱們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,咱們通常作性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程能夠由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,咱們的代碼就會進入內核空間,致使上下文切換,這個是很耗資源,也要儘可能避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,致使CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。
us 用戶CPU時間
我曾經在一個作加密解密很頻繁的服務器上,能夠看到us接近100,r運行隊列達到80(機器在作壓力測試,性能表現不佳)。
sy 系統CPU時間,若是過高,表示系統調用時間長,例如是IO操做頻繁。
id 空閒 CPU時間,通常來講,id + us + sy = 100,通常我認爲id是空閒CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。
wa 等待IO CPU時間。nginx
重點參數 r,b,swpd,free,buff,cache,si,so,bi,boweb
性能分析信息:算法
IO/CPU/men連鎖反應
1.free急劇降低
2.buff和cache被回收降低,但也無濟於事
3.依舊須要使用大量swap交換分區swpd
4.等待進程數,b增多
5.讀寫IO,bi bo增多
6.si so大於0開始從硬盤中讀取
7.cpu等待時間用於 IO等待,wa增長
內存不足
1.開始使用swpd,swpd不爲0
2.si so大於0開始從硬盤中讀取
io瓶頸:
1.讀寫IO,bi bo增多超過2000
2.cpu等待時間用於 IO等待,wa增長 超過20
3.sy 系統調用時間長,IO操做頻繁會致使增長 >30%
4.wa io等待時間長
iowait% <20% 良好
iowait% <35% 通常
iowait% >50%
5.進一步使用iostat觀察
CPU瓶頸:load,vmstat中r列
1.反應爲CPU隊列長度
2.一段時間內,CPU正在處理和等待CPU處理的進程數之和,直接反應了CPU的使用和申請狀況。
3.理想的load average:核數*CPU數*0.7
CPU個數:grep 'physical id' /proc/cpuinfo | sort -u
核數:grep 'core id' /proc/cpuinfo | sort -u | wc -l
4.超過這個值就說明已是CPU瓶頸了
CPU瓶頸
1.us 用戶CPU時間高超過90%
涉及到web服務器,cs 每秒上下文切換次數
例如咱們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,咱們通常作性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程能夠由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,咱們的代碼就會進入內核空間,致使上下文切換,這個是很耗資源,也要儘可能避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,致使CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。
1.cs能夠對apache和nginx線程和進程數限制起到必定的參考做用
2.咱們通常作性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程能夠由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了
較好的趨勢:主要是 swap使用少,swpd數值低。si so分頁讀取寫入數值趨近於零sql
vmstat命令是最多見的Linux/Unix監控工具,能夠展示給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換狀況,IO讀寫狀況。這個命令是我查看Linux/Unix最喜好的命令,一個是Linux/Unix都支持,二是相比top,我能夠看到整個機器的CPU,內存,IO的使用狀況,而不是單單看到各個進程的CPU使用率和內存使用率(使用場景不同)。數據庫
通常vmstat工具的使用是經過兩個數字參數來完成的,第一個參數是採樣的時間間隔數,單位是秒,第二個參數是採樣的次數,如:apache
root@ubuntu:~# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0
2表示每一個兩秒採集一次服務器狀態,1表示只採集一次。ubuntu
實際上,在應用過程當中,咱們會在一段時間內一直監控,不想監控直接結束vmstat就好了,例如:
root@ubuntu:~# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0
0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0
1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
這表示vmstat每2秒採集數據,一直採集,直到我結束程序,這裏採集了5次數據我就結束了程序。
好了,命令介紹完畢,如今開始實戰講解每一個參數的意思。
r 表示運行隊列(就是說多少個進程真的分配到CPU),我測試的服務器目前CPU比較空閒,沒什麼程序在跑,當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關係,通常負載超過了3就比較高,超過了5就高,超過了10就不正常了,服務器的狀態很危險。top的負載相似每秒的運行隊列。若是運行隊列過大,表示你的CPU很繁忙,通常會形成CPU使用率很高。
b 表示阻塞的進程,這個很少說,進程阻塞,你們懂的。
swpd 虛擬內存已使用的大小,若是大於0,表示你的機器物理內存不足了,若是不是程序內存泄露的緣由,那麼你該升級內存了或者把耗內存的任務遷移到其餘機器。
free 空閒的物理內存的大小,個人機器內存總共8G,剩餘3415M。
buff Linux/Unix系統是用來存儲,目錄裏面有什麼內容,權限等的緩存,我本機大概佔用300多M
cache cache直接用來記憶咱們打開的文件,給文件作緩衝,我本機大概佔用300多M(這裏是Linux/Unix的聰明之處,把空閒的物理內存的一部分拿來作文件和目錄的緩存,是爲了提升 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。)
si 每秒從磁盤讀入虛擬內存的大小,若是這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。個人機器內存充裕,一切正常。
so 每秒虛擬內存寫入磁盤的大小,若是這個值大於0,同上。
bi 塊設備每秒接收的塊數量,這裏的塊設備是指系統上全部的磁盤和其餘塊設備,默認塊大小是1024byte,我本機上沒什麼IO操做,因此一直是0,可是我曾在處理拷貝大量數據(2-3T)的機器上看過能夠達到140000/s,磁盤寫入速度差很少140M每秒
bo 塊設備每秒發送的塊數量,例如咱們讀取文件,bo就要大於0。bi和bo通常都要接近0,否則就是IO過於頻繁,須要調整。
in 每秒CPU的中斷次數,包括時間中斷
cs 每秒上下文切換次數,例如咱們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,咱們通常作性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程能夠由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,咱們的代碼就會進入內核空間,致使上下文切換,這個是很耗資源,也要儘可能避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,致使CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。
us 用戶CPU時間,我曾經在一個作加密解密很頻繁的服務器上,能夠看到us接近100,r運行隊列達到80(機器在作壓力測試,性能表現不佳)。
sy 系統CPU時間,若是過高,表示系統調用時間長,例如是IO操做頻繁。
id 空閒 CPU時間,通常來講,id + us + sy = 100,通常我認爲id是空閒CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。
wt 等待IO CPU時間
原文連接:https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html
1、前言
vmstat命令: 用來得到有關進程、虛存、頁面交換空間及 CPU活動的信息。這些信息反映了系統的負載狀況
2、虛擬內存運行原理
在系統中運行的每一個進程都須要使用到內存,但不是每一個進程都須要每時每刻使用系統分配的內存空間。當系統運行所需內存超過實際的物理內存,內核會釋放某些進程所佔用但未使用的部分或全部物理內存,將這部分資料存儲在磁盤上直到進程下一次調用,並將釋放出的內存提供給有須要的進程使用。
在Linux內存管理中,主要是經過「調頁Paging」和「交換Swapping」來完成上述的內存調度。調頁算法是將內存中最近不常使用的頁面換到磁盤上,把活動頁面保留在內存中供進程使用。交換技術是將整個進程,而不是部分頁面,所有交換到磁盤上。
分頁(Page)寫入磁盤的過程被稱做Page-Out,分頁(Page)從磁盤從新回到內存的過程被稱做Page-In。當內核須要一個分頁時,但發現此分頁不在物理內存中(由於已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。
當系統內核發現可運行內存變少時,就會經過Page-Out來釋放一部分物理內存。經管Page-Out不是常常發生,可是若是Page-out頻繁不斷的發生,直到當內核管理分頁的時間超過運行程式的時間時,系統效能會急劇降低。這時的系統已經運行很是慢或進入暫停狀態,這種狀態亦被稱做thrashing(顛簸)。
3、使用vmstat
1.用法
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:顯示活躍和非活躍內存
-f:顯示從系統啓動至今的fork數量 。
-m:顯示slabinfo
-n:只在開始時顯示一次各字段名稱。
-s:顯示內存相關統計信息及多種系統活動數量。
delay:刷新時間間隔。若是不指定,只顯示一條結果。
count:刷新次數。若是不指定刷新次數,但指定了刷新時間間隔,這時刷新次數爲無窮。
-d:顯示磁盤相關統計信息。
-p:顯示指定磁盤分區統計信息
-S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別表明1000、102四、1000000、1048576字節(byte)。默認單位爲K(1024 bytes)
-V:顯示vmstat版本信息。
2.字段含義說明:
類別 |
項目 |
含義 |
說明 |
Procs(進程) |
r |
等待執行的任務數 |
展現了正在執行和等待cpu資源的任務個數。當這個值超過了cpu個數,就會出現cpu瓶頸。 |
B |
等待IO的進程數量 |
|
Memory(內存) |
swpd |
正在使用虛擬的內存大小,單位k |
|
free |
空閒內存大小 |
|
buff |
已用的buff大小,對塊設備的讀寫進行緩衝 |
|
cache |
已用的cache大小,文件系統的cache |
|
inact |
非活躍內存大小,即被標明可回收的內存,區別於free和active |
具體含義見:概念補充(當使用-a選項時顯示) |
active |
活躍的內存大小 |
具體含義見:概念補充(當使用-a選項時顯示) |
Swap |
si |
每秒從交換區寫入內存的大小(單位:kb/s) |
|
so |
每秒從內存寫到交換區的大小 |
|
IO |
bi |
每秒讀取的塊數(讀磁盤) |
如今的Linux版本塊的大小爲1024bytes |
bo |
每秒寫入的塊數(寫磁盤) |
|
system |
in |
每秒中斷數,包括時鐘中斷 |
這兩個值越大,會看到由內核消耗的cpu時間會越多 |
cs |
每秒上下文切換數 |
CPU(以百分比表示) |
Us |
用戶進程執行消耗cpu時間(user time) |
us的值比較高時,說明用戶進程消耗的cpu時間多,可是若是長期超過50%的使用,那麼咱們就該考慮優化程序算法或其餘措施了 |
Sy |
系統進程消耗cpu時間(system time) |
sys的值太高時,說明系統內核消耗的cpu資源多,這個不是良性的表現,咱們應該檢查緣由。 |
Id |
空閒時間(包括IO等待時間) |
|
wa |
等待IO時間 |
Wa太高時,說明io等待比較嚴重,這多是因爲磁盤大量隨機訪問形成的,也有多是磁盤的帶寬出現瓶頸。 |
4、常見問題處理
若是r常常大於4,且id常常少於40,表示cpu的負荷很重。
若是pi,po長期不等於0,表示內存不足。
若是disk常常不等於0,且在b中的隊列大於3,表示io性能很差。
1.)若是在processes中運行的序列(process r)是連續的大於在系統中的CPU的個數表示系統如今運行比較慢,有多數的進程等待CPU。
2.)若是r的輸出數大於系統中可用CPU個數的4倍的話,則系統面臨着CPU短缺的問題,或者是CPU的速率太低,系統中有多數的進程在等待CPU,形成系統中進程運行過慢。
3.)若是空閒時間(cpu id)持續爲0而且系統時間(cpu sy)是用戶時間的兩倍(cpu us)系統則面臨着CPU資源的短缺。
解決辦法:
當發生以上問題的時候請先調整應用程序對CPU的佔用狀況.使得應用程序可以更有效的使用CPU.同時能夠考慮增長更多的CPU. 關於CPU的使用狀況還能夠結合mpstat, ps aux top prstat –a等等一些相應的命令來綜合考慮關於具體的CPU的使用狀況,和那些進程在佔用大量的CPU時間.通常狀況下,應用程序的問題會比較大一些.好比一些sql語句不合理等等都會形成這樣的現象.
內存問題現象:
內存的瓶頸是由scan rate (sr)來決定的.scan rate是經過每秒的始終算法來進行頁掃描的.若是scan rate(sr)連續的大於每秒200頁則表示可能存在內存缺陷.一樣的若是page項中的pi和po這兩欄表示每秒頁面的調入的頁數和每秒調出的頁數.若是該值常常爲非零值,也有可能存在內存的瓶頸,固然,若是個別的時候不爲0的話,屬於正常的頁面調度這個是虛擬內存的主要原理.
解決辦法:
1.調節applications & servers使得對內存和cache的使用更加有效.
2.增長系統的內存.
3. Implement priority paging in s in pre solaris 8 versions by adding line "set priority paging=1" in /etc/system. Remove this line if upgrading from Solaris 7 to 8 & retaining old /etc/system file.
關於內存的使用狀況還能夠結ps aux top prstat –a等等一些相應的命令來綜合考慮關於具體的內存的使用狀況,和那些進程在佔用大量的內存.通常狀況下,若是內存的佔用率比較高,可是,CPU的佔用很低的時候,能夠考慮是有不少的應用程序佔用了內存沒有釋放,可是,並無佔用CPU時間,能夠考慮應用程序,對於未佔用CPU時間和一些後臺的程序,釋放內存的佔用。
5、概念補充
Free memory
This is RAM that's not being used.
Wired memory
Information in this memory can't be moved to the hard disk, so it must stay in RAM. The amount of Wired memory depends on the applications you are using.
Active memory
This information is currently in memory, and has been recently used.
Inactive memory
This information in memory is not actively being used, but was recently used.
For example, if you've been using Mail and then quit it, the RAM that Mail was using is marked as Inactive memory. This Inactive memory is available for use by another application, just like Free memory. However, if you open Mail before its Inactive memory is used by a different application, Mail will open quicker because its Inactive memory is converted to Active memory, instead of loading Mail from the slower hard disk.
原文連接:https://www.cnblogs.com/tommyli/p/3746187.html
1、前言
很顯然從名字中咱們就能夠知道vmstat是一個查看虛擬內存(Virtual Memory)使用情況的工具,可是怎樣經過vmstat來發現系統中的瓶頸呢?在回答這個問題前,仍是讓咱們回顧一下Linux中關於虛擬內存相關內容。
2、虛擬內存原理
在系統中運行的每一個進程都須要使用到內存,但不是每一個進程都須要每時每刻使用系統分配的內存空間。當系統運行所需內存超過實際的物理內存,內核會釋放某些進程所佔用但未使用的部分或全部物理內存,將這部分資料存儲在磁盤上直到進程下一次調用,並將釋放出的內存提供給有須要的進程使用。
在Linux內存管理中,主要是經過「調頁Paging」和「交換Swapping」來完成上述的內存調度。調頁算法是將內存中最近不常使用的頁面換到磁盤上,把活動頁面保留在內存中供進程使用。交換技術是將整個進程,而不是部分頁面,所有交換到磁盤上。
分頁(Page)寫入磁盤的過程被稱做Page-Out,分頁(Page)從磁盤從新回到內存的過程被稱做Page-In。當內核須要一個分頁時,但發現此分頁不在物理內存中(由於已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。
當系統內核發現可運行內存變少時,就會經過Page-Out來釋放一部分物理內存。經管Page-Out不是常常發生,可是若是Page-out頻繁不斷的發生,直到當內核管理分頁的時間超過運行程式的時間時,系統效能會急劇降低。這時的系統已經運行很是慢或進入暫停狀態,這種狀態亦被稱做thrashing(顛簸)。
3、vmstat詳解
1.用法
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:顯示活躍和非活躍內存
-f:顯示從系統啓動至今的fork數量 。
-m:顯示slabinfo
-n:只在開始時顯示一次各字段名稱。
-s:顯示內存相關統計信息及多種系統活動數量。
delay:刷新時間間隔。若是不指定,只顯示一條結果。
count:刷新次數。若是不指定刷新次數,但指定了刷新時間間隔,這時刷新次數爲無窮。
-d:顯示磁盤相關統計信息。
-p:顯示指定磁盤分區統計信息
-S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別表明1000、102四、1000000、1048576字節(byte)。默認單位爲K(1024 bytes)
-V:顯示vmstat版本信息。
2.使用說明
例子1:每3秒輸出一條結果

字段說明:
Procs(進程):
r: 運行隊列中進程數量,這個值也能夠判斷是否須要增長CPU。(長期大於1)
b: 等待IO的進程數量
Memory(內存):
swpd: 使用虛擬內存大小
注意:若是swpd的值不爲0,可是SI,SO的值長期爲0,這種狀況不會影響系統性能。
free: 空閒物理內存大小
buff: 用做緩衝的內存大小
cache: 用做緩存的內存大小
注意:若是cache的值大的時候,說明cache處的文件數多,若是頻繁訪問到的文件都能被cache處,那麼磁盤的讀IO bi會很是小。
Swap:
si: 每秒從交換區寫到內存的大小,由磁盤調入內存
so: 每秒寫入交換區的內存大小,由內存調入磁盤
注意:內存夠用的時候,這2個值都是0,若是這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。有些朋友看到空閒內存(free)不多的或接近於0時,就認爲內存不夠用了,不能光看這一點,還要結合si和so,若是free不多,可是si和so也不多(大多時候是0),那麼不用擔憂,系統性能這時不會受到影響的。
IO:(如今的Linux版本塊的大小爲1kb)
bi: 每秒讀取的塊數
bo: 每秒寫入的塊數
注意:隨機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。
系統:
in: 每秒中斷數,包括時鐘中斷。
cs: 每秒上下文切換數。
注意:上面2個值越大,會看到由內核消耗的CPU時間會越大。
CPU(以百分比表示):
us: 用戶進程執行時間百分比(user time)
注意: us的值比較高時,說明用戶進程消耗的CPU時間多,可是若是長期超50%的使用,那麼咱們就該考慮優化程序算法或者進行加速。
sy: 內核系統進程執行時間百分比(system time)
注意:sy的值高時,說明系統內核消耗的CPU資源多,這並非良性表現,咱們應該檢查緣由。
wa: IO等待時間百分比
注意:wa的值高時,說明IO等待比較嚴重,這可能因爲磁盤大量做隨機訪問形成,也有可能磁盤出現瓶頸(塊操做)。
id: 空閒時間百分比
例子2:顯示活躍和非活躍內存

使用-a選項顯示活躍和非活躍內存時,所顯示的內容除增長inact和active外,其餘顯示內容與例子1相同。
字段說明:
Memory(內存):
inact: 非活躍內存大小(當使用-a選項時顯示)
active: 活躍的內存大小(當使用-a選項時顯示)
總結:
目前說來,對於服務器監控有用處的度量主要有:
r(運行隊列)
pi(頁導入)
us(用戶CPU)
sy(系統CPU)
id(空閒)
注意:若是r常常大於4 ,且id常常少於40,表示cpu的負荷很重。若是bi,bo 長期不等於0,表示內存不足。
經過VMSTAT識別CPU瓶頸:
r(運行隊列)展現了正在執行和等待CPU資源的任務個數。當這個值超過了CPU數目,就會出現CPU瓶頸了。
Linux下查看CPU核心數的命令:
cat /proc/cpuinfo|grep processor|wc -l
當r值超過了CPU個數,就會出現CPU瓶頸,解決辦法大致幾種:
1. 最簡單的就是增長CPU個數和核數
2. 經過調整任務執行時間,如大任務放到系統不繁忙的狀況下進行執行,進爾平衡系統任務
3. 調整已有任務的優先級
經過vmstat識別CPU滿負荷:
首先須要聲明一點的是,vmstat中CPU的度量是百分比的。當us+sy的值接近100的時候,表示CPU正在接近滿負荷工做。但要注意的是,CPU 滿負荷工做並不能說明什麼,Linux老是試圖要CPU儘量的繁忙,使得任務的吞吐量最大化。惟一可以肯定CPU瓶頸的仍是r(運行隊列)的值。
經過vmstat識別RAM瓶頸:
數據庫服務器都只有有限的RAM,出現內存爭用現象是Oracle的常見問題。
首先用free查看RAM的數量:
[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
當內存的需求大於RAM的數量,服務器啓動了虛擬內存機制,經過虛擬內存,能夠將RAM段移到SWAP DISK的特殊磁盤段上,這樣會 出現虛擬內存的頁導出和頁導入現象,頁導出並不能說明RAM瓶頸,虛擬內存系統常常會對內存段進行頁導出,但頁導入操做就代表了服務器須要更多的內存了, 頁導入須要從SWAP DISK上將內存段複製回RAM,致使服務器速度變慢。
解決的辦法有幾種:
1. 最簡單的,加大RAM;
2. 改小SGA,使得對RAM需求減小;
3. 減小RAM的需求。(如:減小PGA)
原文連接:https://blog.csdn.net/wzyzzu/article/details/50395502