[轉]Linux服務器性能評估與優化(一)

一、影響Linux服務器性能的因素 

1. 操作系統級

 

Ø       CPU

Ø       內存

Ø       磁盤I/O帶寬

Ø       網絡I/O帶寬

 

2.        程序應用級

 

二、系統性能評估標準

影響性能因素

評判標準

糟糕

CPU

user% + sys%< 70%

user% + sys%= 85%

user% + sys% >=90%

內存

Swap In(si)=0

Swap Out(so)=0

Per CPU with 10 page/s

More Swap In & Swap Out

磁盤

iowait % < 20%

iowait % =35%

iowait % >= 50%


 

其中:

       %user:表示CPU處在用戶模式下的時間百分比。

       %sys:表示CPU處在系統模式下的時間百分比。

       %iowait:表示CPU等待輸入輸出完成時間的百分比。

       swap in:即si,表示虛擬內存的頁導入,即從SWAP DISK交換到RAM

       swap out:即so,表示虛擬內存的頁導出,即從RAM交換到SWAP DISK

 

三、系統性能分析工具

 

1.常用系統命令 

Vmstatsariostatnetstatfreepstop

 

2.常用組合方式 

           vmstatsariostat檢測是否是CPU瓶頸

           freevmstat檢測是否是內存瓶頸

           iostat檢測是否是磁盤I/O瓶頸

           netstat檢測是否是網絡帶寬瓶頸

 

四、Linux性能評估與優化

 

1. 系統整體性能評估(uptime命令)

 

[root@web1 ~]# uptime

16:38:00 up 118 days, 3:01, 5 users, load average: 1.22, 1.02, 0.91

這裏需要注意的是:load average這個輸出值,這三個值的大小一般不能大於系統CPU的個數,例如,本輸出中系統有8個CPU,如果load average的三個值長期大於8時,說明CPU很繁忙,負載很高,可能會影響系統性能,但是偶爾大於8時,倒不用擔心,一般不會影響系統性能。相反,如果load average的輸出值小於CPU的個數,則表示CPU還有空閒的時間片,比如本例中的輸出,CPU是非常空閒的。

 

2. CPU性能評估

 

(1)利用vmstat命令監控系統CPU

   該命令可以顯示關於系統各種資源之間相關性能的簡要信息,這裏我們主要用它來看CPU一個負載情況。

   下面是vmstat命令在某個系統的輸出結果:

 

[root@node1 ~]# 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

 0 0    0    162240   8304 67032   0    0    13    21   1007   23     0 1   98   0   0

 0 0    0    162240   8304 67032   0    0     1     0     1010   20     0 1   100 0   0

 0 0    0    162240   8304 67032   0    0     1     1     1009   18     0 1    99 0   0

l        Procs

     r列表示運行和等待cpu時間片的進程數,這個值如果長期大於系統CPU的個數,說明CPU不足,需要增加CPU。

     b列表示在等待資源的進程數,比如正在等待I/O、或者內存交換等。

l        Cpu

    us列顯示了用戶進程消耗的CPU 時間百分比。us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大於50%,就需要考慮優化程序或算法。

     sy列顯示了內核進程消耗的CPU時間百分比。Sy的值較高時,說明內核消耗的CPU資源很多。

    根據經驗,us+sy的參考值爲80%,如果us+sy大於 80%說明可能存在CPU資源不足。

 

(2)利用sar命令監控系統CPU

 

sar功能很強大,可以對系統的每個方面進行單獨的統計,但是使用sar命令會增加系統開銷,不過這些開銷是可以評估的,對系統的統計結果不會有很大影響。

 下面是sar命令對某個系統的CPU統計輸出:

[root@webserver ~]# sar -u 3 5

Linux 2.6.9-42.ELsmp (webserver)        11/28/2008      _i686_ (8 CPU)

11:41:24 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle

11:41:27 AM     all      0.88      0.00      0.29      0.00      0.00     98.83

11:41:30 AM     all      0.13      0.00      0.17      0.21      0.00     99.50

11:41:33 AM     all      0.04      0.00      0.04      0.00      0.00     99.92

11:41:36 AM     all      90.08     0.00      0.13      0.16      0.00     9.63

11:41:39 AM     all      0.38      0.00      0.17      0.04      0.00     99.41

Average:        all      0.34      0.00      0.16      0.05      0.00     99.45

                           

對上面每項的輸出解釋如下:

l        %user列顯示了用戶進程消耗的CPU 時間百分比。

l        %nice列顯示了運行正常進程所消耗的CPU 時間百分比。

l        %system列顯示了系統進程消耗的CPU時間百分比。

l        %iowait列顯示了IO等待所佔用的CPU時間百分比

l        %steal列顯示了在內存相對緊張的環境下pagein強制對不同的頁面進行的steal操作 

l        %idle列顯示了CPU處在空閒狀態的時間百分比。

 

問題

1.你是否遇到過系統CPU整體利用率不高,而應用緩慢的現象?

       在一個多CPU的系統中,如果程序使用了單線程,會出現這麼一個現象,CPU的整體使用率不高,但是系統應用卻響應緩慢,這可能是由於程序使用單線程的原因,單線程只使用一個CPU,導致這個CPU佔用率爲100%,無法處理其它請求,而其它的CPU卻閒置,這就導致了整體CPU使用率不高,而應用緩慢現象的發生。

 

3. 內存性能評估

1)利用free指令監控內存

free是監控linux內存使用狀況最常用的指令,看下面的一個輸出:

[root@webserver ~]# free -m

                total         used       free     shared    buffers     cached

Mem:       8111       7185        926          0        243           6299

-/+ buffers/cache:     643       7468

Swap:       8189          0         8189

     一般有這樣一個經驗公式:應用程序可用內存/系統物理內存>70%時,表示系統內存資源非常充足,不影響系統性能,應用程序可用內存/系統物理內存<20%時,表示系統內存資源緊缺,需要增加系統內存,20%<應用程序可用內存/系統物理內存<70%時,表示系統內存資源基本能滿足應用需求,暫時不影響系統性能。

3.內存性能評估

 

1)利用free指令監控內存

free是監控linux內存使用狀況最常用的指令,看下面的一個輸出:

[root@webserver ~]# free -m

                total         used       free     shared    buffers     cached

Mem:       8111       7185        926          0        243           6299

-/+ buffers/cache:     643       7468

Swap:       8189          0         8189

     一般有這樣一個經驗公式:應用程序可用內存/系統物理內存>70%時,表示系統內存資源非常充足,不影響系統性能,應用程序可用內存/系統物理內存<20%時,表示系統內存資源緊缺,需要增加系統內存,20%<應用程序可用內存/系統物理內存<70%時,表示系統內存資源基本能滿足應用需求,暫時不影響系統性能。

  

2利用vmstat命令監控內存

 

[root@node1 ~]# 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

 0 0    0    162240   8304 67032   0    0    13    21   1007   23     0 1 98   0 0

 0 0    0    162240   8304 67032   0    0     1     0     1010   20     0 1 100 0 0

 0 0    0    162240   8304 67032   0    0     1     1     1009   18     0 1 99   0 0

l        memory

         swpd列表示切換到內存交換區的內存數量(以k爲單位)。如果swpd的值不爲0,或者比較大,只要siso的值長期爲0,這種情況下一般不用擔心,不會影響系統性能。

         free列表示當前空閒的物理內存數量(以k爲單位)

         buff列表示buffers cache的內存數量,一般對塊設備的讀寫才需要緩衝。

         cache列表示page cached的內存數量,一般作爲文件系統cached,頻繁訪問的文件都會被cached,如果cache值較大,說明cached的文件數較多,如果此時IObi比較小,說明文件系統效率比較好。

l        swap

si列表示由磁盤調入內存,也就是內存進入內存交換區的數量。

so列表示由內存調入磁盤,也就是內存交換區進入內存的數量。

一般情況下,siso的值都爲0,如果siso的值長期不爲0,則表示系統內存不足。需要增加系統內存。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章