小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

linux服務(wù)器的性能分析與優(yōu)化

 海漩渦 2016-03-30

轉(zhuǎn)自:http://www.cnblogs.com/suihui/p/3799669.html

linux服務(wù)器的性能分析與優(yōu)化(十三)

【教程主題】:1.linux服務(wù)器的性能分析與優(yōu)化

【主要內(nèi)容】

1影響Linux服務(wù)器性能的因素

操作系統(tǒng)級(jí)

 CPU

目前大部分CPU在同一時(shí)間只能運(yùn)行一個(gè)線程,超線程的處理器可以在同一時(shí)間處理多個(gè)線程,因此可以利用超線程特性提高系統(tǒng)性能。

linux系統(tǒng)下只有運(yùn)行SMP內(nèi)核才能支持超線程,但是安裝的CPu數(shù)量越多,從超線程獲得的性能提升越少。

另外linux內(nèi)核會(huì)將多核的處理器當(dāng)做多個(gè)單獨(dú)的CPU來(lái)識(shí)別,例如,兩個(gè)4核的CPU會(huì)被當(dāng)成8個(gè)單個(gè)CPU,從性能角度講,兩個(gè)4核的CPU整體性能要比8個(gè)單核CPU25%-30%

可能出現(xiàn)CPU瓶頸的應(yīng)用有郵件服務(wù)器、動(dòng)態(tài)web服務(wù)器等。

 

 內(nèi)存

內(nèi)存太小,系統(tǒng)進(jìn)程將被阻塞,應(yīng)用也將變得緩慢,甚至失去響應(yīng);內(nèi)存太大,導(dǎo)致資源浪費(fèi)。

虛擬內(nèi)存可以緩解物理內(nèi)存的不足,但是虛擬內(nèi)存的過(guò)多占用會(huì)導(dǎo)致應(yīng)用程序的性能明顯下降。

在一個(gè)32位處理器的linux系統(tǒng)中超過(guò)8GB的物理內(nèi)存都將被浪費(fèi),因此要使用更大的內(nèi)存,建議安裝64位的操作系統(tǒng),同時(shí)開啟linux的大內(nèi)存內(nèi)核支持。

由于處理器尋址范圍的限制,在32linux操作系統(tǒng)上,應(yīng)用程序單個(gè)進(jìn)程最大只能使用2GB的內(nèi)存。

可能出現(xiàn)內(nèi)存瓶頸的有打印服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、靜態(tài)web服務(wù)器等。

 

 磁盤I/O性能

磁盤RAID技術(shù),Redundant Array of Independent Disk,即獨(dú)立磁盤冗余陣列,簡(jiǎn)稱磁盤陣列。

RAID通過(guò)將多塊獨(dú)立的磁盤(物理硬盤)按不同的方式組合起來(lái)形成一個(gè)磁盤組(邏輯硬盤),從而提供比單個(gè)磁盤更高的IO性能和數(shù)據(jù)冗余。

根據(jù)磁盤組合方式不同,分為RAID0RAID1、RAID2、RAID3、RAID4RAID5、RAID6、RAID7、RAID0+1RAID10等,常用的有RAID0RAID1、RAID5、RAID0+1

RAID0:通過(guò)把多塊硬盤粘合成一個(gè)容量更大的硬盤組,提高磁盤的性能和吞吐量,成本低,至少兩塊磁盤,但是沒有容錯(cuò)和數(shù)據(jù)修復(fù)功能,只能用在對(duì)數(shù)據(jù)安全性要求不高的環(huán)境中。

RAID1:也就是磁盤鏡像,通過(guò)把一個(gè)磁盤的數(shù)據(jù)鏡像到另外一個(gè)磁盤上,最大限度的保證磁盤數(shù)據(jù)的可靠性和可修改性,具有很高的數(shù)據(jù)冗余能力,但是磁盤利用率只有50%,成本較高,多用在保存重要數(shù)據(jù)的場(chǎng)合。

RAID5:磁盤分段加奇偶校驗(yàn)技術(shù),提高了系統(tǒng)的可靠性。讀出效率很高,寫效率一般,至少需要3塊磁盤,允許一塊磁盤故障,不影響數(shù)據(jù)的可用性。

RAID0+1:把RAID0RAID1技術(shù)結(jié)合起來(lái),至少需要4塊硬盤,每個(gè)盤都有其鏡像盤,提高全冗余能力,并具有快速讀寫能力。

 

 網(wǎng)絡(luò)帶寬

程序應(yīng)用級(jí)

2系統(tǒng)性能評(píng)估標(biāo)準(zhǔn)

 

其中:

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

%sys:表示CPU處在系統(tǒng)模式下的時(shí)間百分比。

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

swap in:即si,表示虛擬內(nèi)存的頁(yè)導(dǎo)入,即從SWAP DISK交換到RAM

swap out:即so,表示虛擬內(nèi)存的頁(yè)導(dǎo)出,即從RAM交換到SWAP DISK。

3系統(tǒng)性能分析工具 

常用系統(tǒng)命令

Vmstat、sar、iostat、netstatfree、pstop

常用組合方式

vmstat、sariostat檢測(cè)是否是CPU瓶頸

free、vmstat檢測(cè)是否是內(nèi)存瓶頸

iostat檢測(cè)是否是磁盤I/O瓶頸

netstat檢測(cè)是否是網(wǎng)絡(luò)帶寬瓶頸

 

1:系統(tǒng)整體性能評(píng)估(uptime命令)

[root@web1 ~]# uptime

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

    這里需要注意的是:load average這個(gè)輸出值,這三個(gè)值的大小一般不能大于系統(tǒng)CPU的個(gè)數(shù),例如,本輸出中系統(tǒng)有8個(gè)CPU,如果load average的三個(gè)值長(zhǎng)期大于8時(shí),說(shuō)明CPU很繁忙,負(fù)載很高,可能會(huì)影響系統(tǒng)性能,但是偶爾大于8時(shí),倒不用擔(dān)心,一般不會(huì)影響系統(tǒng)性能。相反,如果load average的輸出值小于CPU的個(gè)數(shù),則表示CPU還有空閑的時(shí)間片,比如本例中的輸出,CPU是非??臻e的。

2cpu性能評(píng)估

1)利用vmstat命令監(jiān)控系統(tǒng)CPU

   該命令可以顯示關(guān)于系統(tǒng)各種資源之間相關(guān)性能的簡(jiǎn)要信息,這里我們主要用它來(lái)看CPU一個(gè)負(fù)載情況。

   下面是vmstat命令在某個(gè)系統(tǒng)的輸出結(jié)果:

 


[root@node1 ~]# vmstat 2 3    #2秒更新信息,統(tǒng)計(jì)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

Procs

r列表示運(yùn)行和等待cpu時(shí)間片的進(jìn)程數(shù),這個(gè)值如果長(zhǎng)期大于系統(tǒng)CPU的個(gè)數(shù),說(shuō)明CPU不足,需要增加CPU。

b列表示在等待資源的進(jìn)程數(shù),比如正在等待I/O、或者內(nèi)存交換等。

Cpu

us列顯示了用戶進(jìn)程消耗的CPU 時(shí)間百分比。us的值比較高時(shí),說(shuō)明用戶進(jìn)程消耗的cpu時(shí)間多,但是如果長(zhǎng)期大于50%,就需要考慮優(yōu)化程序或算法。

sy列顯示了內(nèi)核進(jìn)程消耗的CPU時(shí)間百分比。Sy的值較高時(shí),說(shuō)明內(nèi)核消耗的CPU資源很多。

    根據(jù)經(jīng)驗(yàn),us+sy的參考值為80%,如果us+sy大于 80%說(shuō)明可能存在CPU資源不足。

2) 利用sar命令監(jiān)控系統(tǒng)CPU 

sar功能很強(qiáng)大,可以對(duì)系統(tǒng)的每個(gè)方面進(jìn)行單獨(dú)的統(tǒng)計(jì),但是使用sar命令會(huì)增加系統(tǒng)開銷,不過(guò)這些開銷是可以評(píng)估的,對(duì)系統(tǒng)的統(tǒng)計(jì)結(jié)果不會(huì)有很大影響。

 下面是sar命令對(duì)某個(gè)系統(tǒng)的CPU統(tǒng)計(jì)輸出:

[root@webserver ~]# sar -u 3 5 #u顯示系統(tǒng)所有cpu在采樣時(shí)間內(nèi)的負(fù)載狀態(tài)

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


對(duì)上面每項(xiàng)的輸出解釋如下:

%user列顯示了用戶進(jìn)程消耗的CPU 時(shí)間百分比。

%nice列顯示了運(yùn)行正常進(jìn)程所消耗的CPU 時(shí)間百分比。

%system列顯示了系統(tǒng)進(jìn)程消耗的CPU時(shí)間百分比。

%iowait列顯示了IO等待所占用的CPU時(shí)間百分比

%steal列顯示了在內(nèi)存相對(duì)緊張的環(huán)境下pagein強(qiáng)制對(duì)不同的頁(yè)面進(jìn)行的steal操作 。

%idle列顯示了CPU處在空閑狀態(tài)的時(shí)間百分比。

3:內(nèi)存性能評(píng)估 
1)利用free指令監(jiān)控內(nèi)存

free是監(jiān)控linux內(nèi)存使用狀況最常用的指令,看下面的一個(gè)輸出:

[root@webserver ~]# free  -m  #查看以M為單位的內(nèi)存使用情況

                total         used       free     shared    buffers     cached

Mem:       8111       7185        926          0        243           6299

-/+ buffers/cache:     643       7468

Swap:       8189          0         8189

     一般有這樣一個(gè)經(jīng)驗(yàn)公式:應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存>70%時(shí),表示系統(tǒng)內(nèi)存資源非常充足,不影響系統(tǒng)性能,應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<20%時(shí),表示系統(tǒng)內(nèi)存資源緊缺,需要增加系統(tǒng)內(nèi)存,20%<應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<70%時(shí),表示系統(tǒng)內(nèi)存資源基本能滿足應(yīng)用需求,暫時(shí)不影響系統(tǒng)性能。 

2) 利用vmstat命令監(jiān)控內(nèi)存 

[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

memory

swpd列表示切換到內(nèi)存交換區(qū)的內(nèi)存數(shù)量(以k為單位)。如果swpd的值不為0,或者比較大,只要siso的值長(zhǎng)期為0,這種情況下一般不用擔(dān)心,不會(huì)影響系統(tǒng)性能。

free列表示當(dāng)前空閑的物理內(nèi)存數(shù)量(以k為單位)

buff列表示buffers cache的內(nèi)存數(shù)量,一般對(duì)塊設(shè)備的讀寫才需要緩沖。 

cache列表示page cached的內(nèi)存數(shù)量,一般作為文件系統(tǒng)cached,頻繁訪問(wèn)的文件都會(huì)被cached,如果cache值較大,說(shuō)明cached的文件數(shù)較多,如果此時(shí)IObi比較小,說(shuō)明文件系統(tǒng)效率比較好。

swap

si列表示由磁盤調(diào)入內(nèi)存,也就是內(nèi)存進(jìn)入內(nèi)存交換區(qū)的數(shù)量。

so列表示由內(nèi)存調(diào)入磁盤,也就是內(nèi)存交換區(qū)進(jìn)入內(nèi)存的數(shù)量。 

一般情況下,siso的值都為0,如果si、so的值長(zhǎng)期不為0,則表示系統(tǒng)內(nèi)存不足。需要增加系統(tǒng)內(nèi)存。

4:磁盤I/O性能評(píng)估 

1)磁盤存儲(chǔ)基礎(chǔ)

熟悉RAID存儲(chǔ)方式,可以根據(jù)應(yīng)用的不同,選擇不同的RAID方式。

盡可能用內(nèi)存的讀寫代替直接磁盤I/O,使頻繁訪問(wèn)的文件或數(shù)據(jù)放入內(nèi)存中進(jìn)行操作處理,因?yàn)閮?nèi)存讀寫操作比直接磁盤讀寫的效率要高千倍。

 將經(jīng)常進(jìn)行讀寫的文件與長(zhǎng)期不變的文件獨(dú)立出來(lái),分別放置到不同的磁盤設(shè)備上。

  對(duì)于寫操作頻繁的數(shù)據(jù),可以考慮使用裸設(shè)備代替文件系統(tǒng)。


       使用裸設(shè)備的優(yōu)點(diǎn)有:

ü  數(shù)據(jù)可以直接讀寫,不需要經(jīng)過(guò)操作系統(tǒng)級(jí)的緩存,節(jié)省了內(nèi)存資源,避免了     內(nèi)存資源爭(zhēng)用。

ü    避免了文件系統(tǒng)級(jí)的維護(hù)開銷,比如文件系統(tǒng)需要維護(hù)超級(jí)塊、I-node等。

ü    避免了操作系統(tǒng)的cache預(yù)讀功能,減少了I/O請(qǐng)求。

ü     使用裸設(shè)備的缺點(diǎn)是:

ü     數(shù)據(jù)管理、空間管理不靈活,需要很專業(yè)的人來(lái)操作。

2)利用iostat評(píng)估磁盤性能

[root@webserver ~]#   iostat -d 2 3  #-d 顯示磁盤的使用情況

Linux 2.6.9-42.ELsmp (webserver)        12/01/2008      _i686_  (8 CPU)

 

Device:         tps   Blk_read/s   Blk_wrtn/s   Blk_read      Blk_wrtn

sda               1.87         2.58       114.12        6479462     286537372

 

Device:         tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda               0.00         0.00         0.00              0                0

 

Device:         tps   Blk_read/s   Blk_wrtn/s   Blk_read    Blk_wrtn

sda               1.00         0.00        12.00             0                24

對(duì)上面每項(xiàng)的輸出解釋如下:

Blk_read/s表示每秒讀取的數(shù)據(jù)塊數(shù)。

Blk_wrtn/s表示每秒寫入的數(shù)據(jù)塊數(shù)。

Blk_read表示讀取的所有塊數(shù)。

Blk_wrtn表示寫入的所有塊數(shù)。

      可以通過(guò)Blk_read/sBlk_wrtn/s的值對(duì)磁盤的讀寫性能有一個(gè)基本的了解,如果Blk_wrtn/s值很大,表示磁盤的寫操作很頻繁,可以考慮優(yōu)化磁盤或者優(yōu)化程序,如果Blk_read/s值很大,表示磁盤直接讀取操作很多,可以將讀取的數(shù)據(jù)放入內(nèi)存中進(jìn)行操作。

      對(duì)于這兩個(gè)選項(xiàng)的值沒有一個(gè)固定的大小,根據(jù)系統(tǒng)應(yīng)用的不同,會(huì)有不同的值,但是有一個(gè)規(guī)則還是可以遵循的:長(zhǎng)期的、超大的數(shù)據(jù)讀寫,肯定是不正常的,這種情況一定會(huì)影響系統(tǒng)性能。

3)利用sar評(píng)估磁盤性能

         通過(guò)“sar –d”組合,可以對(duì)系統(tǒng)的磁盤IO做一個(gè)基本的統(tǒng)計(jì),請(qǐng)看下面的一個(gè)輸出:

[root@webserver ~]# sar -d 2 3

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

 

11:09:33 PM  DEV     tps   rd_sec/s   wr_sec/s  avgrq-sz  avgqu-sz   await  svctm   %util

11:09:35 PM dev8-0  0.00  0.00            0.00        0.00          0.00         0.00   0.00     0.00

 

11:09:35 PM  DEV     tps  rd_sec/s    wr_sec/s  avgrq-sz  avgqu-sz  await   svctm   %util

11:09:37 PM dev8-0  1.00  0.00         12.00        12.00         0.00        0.00    0.00     0.00

 

11:09:37 PM   DEV    tps    rd_sec/s  wr_sec/s   avgrq-sz  avgqu-sz  await  svctm   %util

11:09:39 PM dev8-0  1.99   0.00         47.76         24.00       0.00        0.50    0.25     0.05

 

Average:  DEV          tps    rd_sec/s   wr_sec/s  avgrq-sz  avgqu-sz    await  svctm   %util

Average:  dev8-0      1.00   0.00          19.97         20.00       0.00         0.33    0.17     0.02

      需要關(guān)注的幾個(gè)參數(shù)含義:

await表示平均每次設(shè)備I/O操作的等待時(shí)間(以毫秒為單位)。

svctm表示平均每次設(shè)備I/O操作的服務(wù)時(shí)間(以毫秒為單位)。

%util表示一秒中有百分之幾的時(shí)間用于I/O操作。

 

對(duì)以磁盤IO性能,一般有如下評(píng)判標(biāo)準(zhǔn):

正常情況下svctm應(yīng)該是小于await值的,而svctm的大小和磁盤性能有關(guān),CPU、內(nèi)存的負(fù)荷也會(huì)對(duì)svctm值造成影響,過(guò)多的請(qǐng)求也會(huì)間接的導(dǎo)致svctm值的增加。

await值的大小一般取決與svctm的值和I/O隊(duì)列長(zhǎng)度以及I/O請(qǐng)求模式,如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠(yuǎn)高于svctm的值,則表示I/O隊(duì)列等待太長(zhǎng),系統(tǒng)上運(yùn)行的應(yīng)用程序?qū)⒆兟藭r(shí)可以通過(guò)更換更快的硬盤來(lái)解決問(wèn)題。

%util項(xiàng)的值也是衡量磁盤I/O的一個(gè)重要指標(biāo),如果%util接近100%,表示磁盤產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷的在工作,該磁盤可能存在瓶頸。長(zhǎng)期下去,勢(shì)必影響系統(tǒng)的性能,可以通過(guò)優(yōu)化程序或者通過(guò)更換更高、更快的磁盤來(lái)解決此問(wèn)題。

5:網(wǎng)絡(luò)性能評(píng)估.

1)通過(guò)ping命令檢測(cè)網(wǎng)絡(luò)的連通性

2)通過(guò)netstat i組合檢測(cè)網(wǎng)絡(luò)接口狀況

3)通過(guò)netstat r組合檢測(cè)系統(tǒng)的路由表信息

4)通過(guò)sar n組合顯示系統(tǒng)的網(wǎng)絡(luò)運(yùn)行狀態(tài)  sar -n DEV 5 3

5常用分析

 

netstat -an|awk '/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}'   查看tcp鏈接數(shù)

netstat -pant |grep ":80"|awk '{print $5}' | awk -F: '{print $1}'|sort|uniq -c|sort -nr    查看連接數(shù)最多的ip

cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -n10

提取日志  分別是訪問(wèn)URLURL訪問(wèn)來(lái)源  排序

awk '{print $7}' access.log | sort | uniq -c |sort -nr | head -n10 > test.txt

6shell分析nginx日志

 

178.255.215.86 - - [04/Jul/2013:00:00:31 +0800] "GET /tag/316/PostgreSQL HTTP/1.1" 200 4779 "-" "Mozilla/5.0 (compatible; Exabot/3.0 (BiggerBetter); +http://www./go/robot)" "-"- 178.255.215.86 - - [04/Jul/2013:00:00:34 +0800] "GET /tag/317/edit HTTP/1.1" 303 5 "-" "Mozilla/5.0 (compatible; Exabot/3.0 (BiggerBetter); +http://www./go/robot)" "-"- 103.29.134.200 - - [04/Jul/2013:00:00:34 +0800] "GET /code-snippet/2022/edit HTTP/1.0" 303 0 "-" "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/17.0 Firefox/17.0" "-"- 103.29.134.200 - - [04/Jul/2013:00:00:35 +0800] "GET /user/login?url=http%3A//outofmemory.cn/code-snippet/2022/edit HTTP/1.0" 200 4748 "-" "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/17.0 Firefox/17.0" "-"-

 

下腳本都是基于上面日志格式的,如果你的日志格式不同需要調(diào)整awk后面的參數(shù)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多