2012年2月6日 星期一

讓你一眼區分瓶頸是Memory、processor OR disk


各項硬體的資源,如CPU、記憶體、硬碟輸入輸出、網路頻寬等等。在實際查看架構之前,先強調一個觀念,不管是使用系統上哪一種資源,當使用率持續超過80%時,系統的性能一定會急速下滑,而不會顯示線性關係,如下圖所示:
 回應時間, 使用率        80%
           資源使用率與系統回應時間的關係
注:從《作業系統》的知識來理解,如果在多用戶環境中cup的使用率大於80%,進程就會在運行佇列中花費大量的等待時間,回應時間和輸送量就會下降。
3.1,記憶體Memory
      通常系統中所發生的問題是由於記憶體不足所導致,這是較常見的。所以我們應該先監視記憶體,確認我們的伺服器有足夠的記憶體。若要執行 windows 2000 上的 iis 5.0(MODweb服務),一個專用web 伺服器所需 ram 的最小容量是 128mb,但最好是 256mb 1gb。因為「iis 檔緩存」默認是使用最多一半可用的記憶體,因此備有的記憶體越多,「iis 檔緩存」就越多。

  附注:windows 2000 advanced server 最多可支援 8gb ram,但是「iis檔緩存」將不會利用 4gb 以上的 ram
     所有在Windows系統執行的應用程式都以為自已最起碼有2GB的連續記憶體(稱之為虛擬記憶體),當應用程式的執行緒在存取記憶體時,作業系統會將其映射(mapping)到某塊實體記憶體,若實體記憶體不足,作業系統就把實體記憶體中某些較少用到的區塊寫至硬碟,以空出該實體記憶體給當前需要的程式。
Available MBytes 可用實體記憶體數 
     說明:Available MBytes 是電腦上運行進程可用的實體記憶體數量,以百萬位元組為單位。通過計算清零、空閒和待命記憶體清單的記憶體空間總數而得到。空閒記憶體可以馬上使用; 清零記憶體是由零值填滿的記憶體頁,用來防止後續進程獲得舊進程使用的資料; 待命記憶體是從進程工作(其實體記憶體)中刪除然後進入磁片的記憶體,但是該記憶體仍然可以收回。該計數器僅顯示最後一次觀察到的值; 不是平均值。
     技 術 :一般要保留10%的可用記憶體。最低最低不能<4M,此值過小可能是記憶體不足或記憶體洩漏;
     原 因 :因為IIS預設最多會使用50%的可用記憶體供檔緩存使用,所以要保留10%的可用記憶體(以供尖峰時間使用)
     知識點:實體記憶體、虛擬記憶體、IIS檔緩存、清0記憶體(程式常發生的錯誤)、待命記憶體。

      
Page Faults/secPages Input/secPage Reads/sec
    (重要):導致嚴重的延遲原因:是因為硬體分頁錯誤。
     說 明: Page Faults/sec 是指處理器處理錯誤頁的綜合速率。用錯誤頁數/秒來計算。當處理器請求一個不在其工作集(在實體記憶體中的空間)內的代碼或資料時出現的頁錯誤。這個計數器包括硬錯誤(那些需要磁片訪問的)和軟錯誤(在實體記憶體的其它地方找到的錯誤頁)。許多處理器可以在有大量軟錯誤的情況下繼續操作。但是,硬錯誤可以導致明顯的拖延。
      Pages Input/sec 指為解決頁錯誤從磁片上讀取的頁數。(當處理需要不在其工作集或實體記憶體的任何地方的代碼或資料,而需要從磁片上檢索時出現硬頁錯誤)
             Page Reads/sec 是指為解析硬頁錯誤而讀取磁片的次數。(當處理請求的硬 頁錯誤不在工作集和實體記憶體其它地方中的代碼或資料,而必須從磁片上檢索時 就會出現硬頁錯誤)。如果 Page Reads/Sec 比率持續保持為 5,表示可能記憶體不足(閾值為>5.越小越好)

     可能引起分頁錯誤的操作:應用程式向記憶體請求一個分頁,但系統無法在所需的位置上找到它,就構成了一個分頁錯誤。
     技 術:
         總述:可能涉及到1,由於頁交換而導致記憶體不足;2,由於頁交換而導致磁片瓶頸;
               當這些值很低時,伺服器應該可以很快地回應請求;當這些值較高時,是因為你花了太多的記憶體在緩存處理上,而沒有留足夠的記憶體供系統的其它部份使用。可以增加記憶體或降低緩存的ram大小來解決;
         詳細:
              page Faults/sec:只表明資料不能在記憶體的指定工作集中立即使用;
              page Input/sec: page input/sec > page reads/sec;
              page Reads/sec: 閾值為>5.越小越好,大數值表示磁片讀而不是緩存讀;
Page/sec:指為解析硬頁錯誤從磁片讀取或寫入磁片的頁數(Pages Input/sec Pages Output/sec 的總和)。其值推薦00-20如果伺服器沒有足夠的記憶體處理其工作負荷,此數值將一直很高。如果大於80,表示有問題(太多的讀寫資料操作要訪問磁片,可考慮增加記憶體或優化讀寫資料的演算法),如果值比較低,說明Web 伺服器回應請求比較快,否則可能是伺服器系統記憶體短缺引起( 也可能是緩存太大,導致系統記憶體太少)。

3.2,Processor
隨著用戶請求從網站獲得快速的回應時間,以及在這些網站上不斷增加的動態內容,需要利用到快速、有效的處理器用量。當一個或多個進程幾乎耗盡所有處理器時,就會發生瓶頸,這會迫使準備好執行的進程執行緒必須在佇列中等待處理器時間。
(web方面) windows 2000 iis 5.0 的最大性能增益來自於解決記憶體問題。在決定改變web 伺服器上處理器的個數之前,請先排除記憶體問題,再監視下列「效能計數器」。
% Processor Time 指處理器執行非閒置執行緒時間的百分比;通俗一點講就是CPU 使用率。這是監視處理器活動的主要指示器。它通過在每個範例間隔中衡量處理器用於執行閒置處理執行緒的時間,並且用100%減去該值得出。(每台處理器有一個閒置執行緒,該執行緒在沒有其它執行緒可以運行時消耗週期)。可將其視為範例間隔用於做有用工作的百分比。
正常值<90,此值過大表示處理器的性能已經不能應付程式的要求,要換更快的處理器。該數值持續超過 90%,則表示此測試的負載對於目前的硬體過於沉重。排除記憶體因素,如果該計數器的值比較大,而同時網卡和硬碟的值比較低,那麼可以確定CPU 瓶頸。

Processor Queue Length:是指處理列隊中的執行緒數。顯示在由 Web伺服器所有處理器共用的佇列中等待執行的執行緒數。如果處理器列隊中總是有2個以上的執行緒通常表示處理器堵塞。
參考值:小於2。處理器瓶頸會導致該值持續大於 2


3.3, Physical Disk:
    因為 MODWEB(iis 5.0) 會將記錄檔寫入磁片上,所以在一般磁片活動中,甚至會有高達 100 % 的用戶端緩存存取次數。一般來說,如果有記錄以外的大量磁片讀取活動,即表示系統上有其它區域需要調整。例如,硬體分頁錯誤會導致大量的磁片活動,但它們表示 ram 不足。

%Disk Time %:  指所選磁碟機忙於為讀或寫入請求提供服務所用的時間的百分比。如果三個計數器都比較大,那麼硬碟不是瓶頸。如果只有%Disk Time比較大,另外兩個都比較適中,硬碟可能會是瓶頸。在記錄該計數器之前,請在Windows 2000 的命令列視窗中運行diskperf -yD。正常值<10,此值過大表示耗費太多時間來訪問磁片,可考慮增加記憶體、更換更快的硬碟、優化讀寫資料的演算法。若數值持續超過80 (此時處理器及網路連接並沒有飽和),則可能是記憶體洩漏。

Pages per second :  每秒鐘檢索的頁數。該數字應少於每秒一頁。


如果這三個計數器(processor: % processor time, network interface connection: bytes total/secphysicaldisk: % disk time)的值都很高,則硬碟不會引起網站的瓶頸。

補充:
  Avg. Disk Queue Length 指讀取和寫入請求(為所選磁片在實例間隔中列隊的)的平均數。正常值<0.5,此值過大表示磁片IO太慢,要更換更快的硬碟。
  Disk Transfers/sec 指在此盤上讀取/寫入操作速率。正常值<(Disk Bytes/sec)/3,此值過大表示系統要求的IO速度已接近硬碟的最大速度,要更換更快的硬碟。
    磁片使用情況計數器和記憶體計數器(磁片瓶頸or記憶體不足?)
Physical Disk\ % Disk Time Physical Disk\ Avg.Disk Queue Length 例如,包括 Page Reads/sec % Disk Time Avg.Disk Queue Length。如果頁面讀取操作速率很低,同時 % Disk Time Avg.Disk Queue Length的值很高,則可能有磁片瓶徑。但是,如果佇列長度增加的同時頁面讀取速率並未降低,則記憶體不足。

   3.4, 網路容量、等待時間及頻寬 
  測試目標:在系統試運行之後,需要及時準確地瞭解網路上正在發生什麼事;什麼應用在運行,如何運行;多少PC正在訪問LANWAN;哪些應用程式導致系統瓶頸或資源競爭
作用
1,分析關鍵應用程式的性能
2,定位問題的根源是在用戶端、伺服器、應用程式還是網路
3,哪些應用程式佔用大量頻寬
  基本上,網路是用戶端向伺服器傳送請求的線路。它花在您的伺服器上來回傳遞這些請求及回應的時間,對使用者能察覺的伺服器性能來說是個最大限制因素之一。這種請求-回應的迴圈時間就稱為等待時間,等待時間對於web 伺服器管理員來說幾乎是無法控制的。例如,您對 internet 上速度緩慢的路由器,或是用戶端及伺服器之間的物理距離所能作的處理實在不多。
   在主要是由靜態內容組成的網站上,網路頻寬最有可能是性能瓶頸的來源。即使是一般的伺服器也可能用滿一條 t3 連接 (45mbps) 100mbps fast ethernet 連接。測量有效頻寬最簡單的方法是判定您的伺服器是以哪個速度傳送及接收資料的。
Network Interface Bytes Total/sec: 為發送和接收位元組的速率,包括幀字元在內。判定網路連接是否存在瓶頸。若要在傳送量中留些空間供尖峰時間用,則不應常使用超過 50% 的容量。如果這個數位十分接近連接的容量,而處理器及記憶體的使用都很適中,則此連接也會是個問題。參考值:該計數器的值和目前網路的頻寬相除,結果應該小於50%
如果您正在電腦上執行的其他服務也使用網路連接,請監視「web service: maximum connections」及「web service: total connection attempts」計數器,以檢查您的web伺服器是否能夠盡可能地使用它需要的連接數目。請記得將這些數位與記憶體及處理器使用量作比較,如此才能確定連接就是問題,而不是其它元件有問題。
Connection Attempts/secWeb服務嘗試連接的頻率。
Maximun Connections最大連接數是和Web服務同時建立起來的最大連接數。

沒有留言: