Linux伺服器效能評估與優化

2022-11-01 15:36:03 字數 4353 閱讀 7410

1. 作業系統級

cpu記憶體

磁碟i/o頻寬

網路i/o頻寬

2.程式應用級

其中: %user:表示cpu處在使用者模式下的時間百分比。

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

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

swap in:即si,表示虛擬記憶體的頁匯入,即從swap disk交換到ram

swap out:即so,表示虛擬記憶體的頁匯出,即從ram交換到swap disk。

vmstat、sar、iostat、netstat、free、ps、top等

用vmstat、sar、iostat檢測是否是cpu瓶頸

用free、vmstat檢測是否是記憶體瓶頸

用iostat檢測是否是磁碟i/o瓶頸

用netstat檢測是否是網路頻寬瓶頸

[root@web1 ~]# uptime

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

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

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

該命令可以顯示關於系統各種資源之間相關效能的簡要資訊,這裡我們主要用它來看cpu乙個負載情況。

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

[root@node1 ~]# vmstat 2 3

procsmemoryswap-- -----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

●procs

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

b列表示在等待資源的程序數,比如正在等待i/o、或者記憶體交換等。

●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 (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

**erage: all 0.34 0.00 0.16 0.05 0.00 99.45

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

●%user列顯示了使用者程序消耗的cpu 時間百分比。

●%nice列顯示了執行正常程序所消耗的cpu 時間百分比。

●%system列顯示了系統程序消耗的cpu時間百分比。

●%iowait列顯示了io等待所占用的cpu時間百分比

●%steal列顯示了在記憶體相對緊張的環境下pagein強制對不同的頁面進行的steal操作。

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

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

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

free是監控linux記憶體使用狀況最常用的指令,看下面的乙個輸出:

[root@webserver ~]# free -m

total used free shared buffers cached

mem: 8111 7185 9260 2436299

-/+ buffers/cache: 643 7468

swap: 81890 8189

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

[root@node1 ~]# vmstat 2 3

procsmemoryswap-- -----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

●memory

swpd列表示切換到記憶體交換區的記憶體數量(以k為單位)。如果swpd的值不為0,或者比較大,只要si、so的值長期為0,這種情況下一般不用擔心,不會影響系統效能。

free列表示當前空閒的物理記憶體數量(以k為單位)

buff列表示buffers cache的記憶體數量,一般對塊裝置的讀寫才需要緩衝。

cache列表示page cached的記憶體數量,一般作為檔案系統cached,頻繁訪問的檔案都會被cached,如果cache值較大,說明cached的檔案數較多,如果此時io中bi比較小,說明檔案系統效率比較好。

●swap

si列表示由磁碟調入記憶體,也就是記憶體進入記憶體交換區的數量。

Linux1 DNS伺服器構建從網域名稱伺服器

從網域名稱伺服器作為主網域名稱伺服器的冗餘備份,可以與主網域名稱伺服器一起,同時提供本域內計算機名到ip位址的解析,從網域名稱伺服器的位址資料庫需要從主網域名稱伺服器中定期更新。從網域名稱伺服器的主配置檔案也是 etc 也需要設定伺服器的 options 主語句和根區域,方法與配置主網域名稱伺服器的...

linux下MySQL伺服器的啟動與停止工作

網際網路作者 佚名時間 09 08 17 06 46 大中小 點評 一 以非特權使用者執行mysql伺服器在討論如何啟動mysql伺服器之前,讓我們考慮一下應該以什麼使用者身份執行mysql伺服器。伺服器可以手動或自動啟動。如果你手動啟動它,伺服器以你登入unix linux 的使用者身份啟動,即如...

Linux伺服器儲存空間巧妙管理

對於linux使用者而言,在安裝一台linux機器的時候,遇到的問題之一就是給各分割槽估計和分派足夠的硬碟空間。無論對乙個正在為伺服器尋找空間的系統管理員,還是乙個磁碟即將用盡的普通使用者來說,這都是乙個非常常見的問題。一般我們會想到解決的方法是 1.掛接乙個新的硬碟,然後使用符號鏈結,鏈結到新的硬...