趙 攀 殷啟超
(甘肅省蘭州石化公司研究院,甘肅 蘭州 730060)
在一個軟件應用系統中,不管是C/S架構還是B/S架構,服務器都扮演著舉足輕重的角色。它象一個交通系統的樞紐,所以系統對服務器的要求都非常高,而在實際工作中對服務器的測試目的就是為了能夠找出服務器的性能瓶頸并進行優化。一個完整的服務器系統,是由硬件和軟件共同組成的。軟件和硬件是相輔相成的,只有做到“軟硬兼施”才能更大的發揮服務器的性能,提高服務器的穩定性。一般的應用軟件都是以系統軟件為基礎來運行的,而操作系統是系統軟件中最基礎、最核心的部分。當談及“性能瓶頸”這個術語時,映入腦海的主要熱點詞匯就是中央處理器,內存和網絡問題阻礙服務器性能。這些都是探尋性能瓶頸問題的主要方面,但是它們并非性能問題產生的唯一原因。
中央處理器是服務器的大腦,是進行計算和指令運行的所在。中央處理器可以處理數百萬條計算和指令,但是當所運行的計算數量超出了中央處理器的容量就會導致性能問題。中央處理器所承受的計算負載數量超過75%時就將讓整個系統運轉緩慢。當系統負荷在短期內達到100%時,中央處理器需要一些空間來應付爆炸性的高峰。中央處理器負荷是導致性能瓶頸的主要原因之一。
當性能問題指向內存時,解決性能平靜的共識就是增加更多的內存。不過這種做法只在短期內是有效的。因內存導致的性能瓶頸通常源于設計欠缺的軟件(內存缺口)或者其他由內存反映出來的系統漏洞。解決內存性能問題的關鍵是在再增加更多的隨機存儲器之前找到性能癥狀的根源。內存使用情況可能是系統性能中最重要的因素。如果系統“頁交換”頻繁,說明內存不足。“頁交換”是使用稱為“頁面”的單位,將固定大小的代碼和數據塊從 RAM移動到磁盤的過程,其目的是為了釋放內存空間。盡管某些頁交換使Windows 2003能夠使用比 實際更多的內存,也是可以接受的,但頻繁的頁交換將降低系統性能。減少頁交換將顯著提高系統響應速度。
網絡往往被大家認為是一種常見的性能瓶頸來源,但是事實上并非如此。除非有一個網絡組件發生硬件故障。所以在你懷疑“網絡”性能出現問題的時候最好檢查一下其它地方。網絡上感知到的運行緩慢問題通常應該指CPU、內存、惡意軟件、工作負載、系統文件等其他問題。撇開網絡的吞吐總量以及響應速度不講,在高負載的環境下,系統的突發傳輸速率是非常重要的。盡管通過單一的T1或T3傳輸速率提供的總帶寬對一個特定的站點而言也許綽綽有余,但其最大的傳輸速率(T1下為1.5mbit/s,T3下為4.5mbit/s)也可能不足以應付系統的高峰傳輸負載。在用戶訪問的高峰期,某些站點也許根本無法訪問。這樣的站點在用戶企圖訪問它時顯得慢如蝸牛,而服務器自身卻仍舊非常空閑。
2.1.1 首先看SystemTotal Processor Time性能計數器的計數值
該計數器的值體現服務器整體處理器利用率,對多處理器的系統而言,該計數器提醒所有CPU的平均利用率。如果該值持續超過90%,則說明整個系統面臨著處理器方面的瓶頸,需要通過增加處理器來提高性能。
2.1.2 其次查看每個CPU的ProcessorProcessor Time和ProcessorUser Time和ProcessorPrivileged Time
ProcessorUser Time是系統非核心操作消耗的CPU時間,如果該值較大,可以考慮是否能通過友好算法等方法降低這個值。如果該服務器是數據庫服務器,ProcessorUser Time值大的原因很可能是數據庫的排序或是函數操作消耗了過多的CPU時間,此時可以考慮對數據庫系統進行優化。
2.1.3 研究系統處理器瓶頸
查看 SystemProcessor Queue Length計數器的值,當該計數器的值大于CPU數量的總數+1時,說明產生了處理器阻塞。在處理器的Process Time很高時,一般都隨處理器阻塞,但產生處理器阻塞時,ProcessorProcess Time計數器的值并不一定很大,此時就必須查找處理器阻塞的原因。
內存分析用于判斷系統有無內存瓶頸,是否需要通過增加內存等手段提高系統性能表現。內存分析需要使用的計數器:Memory類別和Physical Disk類別的計數器。內存分析的主要方法和步驟:
2.2.1 首先查看MemoryAvailable Mbytes指標
如果該指標的數據比較小,系統可能出現了內存方面的問題,需要繼續下面步驟進一步分析。
2.2.2 注意Pages/sec、Pages Read/sec和Page Faults/sec的值
操作系統會利用磁盤較好的方式提高系統可用內存量或者提高內存的使用效率。這三個指標直接反應了操作系統進行磁盤交換的頻度。如果Pages/sec的計數持續高于幾百,可能有內存問題。但Pages/sec值不一定就表明有內存問題,可能是運行使用內存映射文件的程序所致。Page Faults/sec說明每秒發生頁面失效次數,頁面失效次數越多,說明操作系統向內存讀取的次數越多。此事需要查看Pages Read/sec的計數值,該計數器的閥值為5,如果計數值超過5,則可以判斷存在內存方面的問題。
2.2.3 根據Physical Disk計數器的值分析性能瓶頸
對Physical Disk計數器的分析包括對Page Reads/sec和Disk Time及Aerage Disk Queue Length的分析。如果Pages Read/sec很低,同時Disk Time和Average Disk Queue Length的值很高,則可能有磁盤瓶頸。但是,如果隊列長度增加的同時Pages Read/sec并未降低,則是內存不足。
Network InterfaceBytes Total/sec為發送和接收字節的速率,可以通過該計數器值來判斷網絡鏈接速度是否是瓶頸,具體操作方法是用該計數器的值和目前網絡的帶寬進行相除,結果小于50%。在實際測試過程中可以使用IOMeter進行如下測量:
2.3.1 Max IO
為了得到完整的磁盤性能數據,可以測試512Bytes到512MBytes等多種數據塊大小,并分別測試了100%讀取操作或100%寫入操作下的表現,測試隨機率可以從0%-100%,用于檢測磁盤子系統的最大輸入輸出能力。從所有的數據中,可以分別得到的數據指IOps(每秒操作數)以及MBps(傳輸速率)。
2.3.2 File Server
文件服務器應用在一個多用戶或網絡化的環境中專門用于文件的儲存,恢復和管理。不同用戶的訪問形成了多線程,因此,其工作負載是隨機性的。輸入輸出大小是可變的,取決于所操作的文件大小。讀/寫分布也是變化的。總的來說,一個頻繁使用的多用戶服務器應該采用較高的隊列深度來模擬。
2.3.3 Web Server
網站服務器應用于處理多用戶通過Internet或Intranet進行的訪問。這些請求具有典型的隨機性,并且在用戶訪問不同頁面或視頻應用時大量偏向于讀請求。同樣,一個訪問頻繁網站服務器也應該采用較高的隊列深度來模擬。最后,測試讀取尺寸從512Bytes到512KB不等,100%讀取操作,隨機率為100%,用于模擬Web服務器的性能。在實際的桌面環境中,小于4KB的塊訪問數量不少,但是由于操作系統的緩存的存在而具有一定的降低,主要的塊大小基于4KB。
影響web服務器性能的因素數之不盡,要限制這些因素發揮作用,只能充分發揮人們的創造性思維。用來發布不同類型頁面的Web系統對硬件的要求也是不一樣的。本文只是粗略地介紹了搭建一個Web服務器要考慮的因素,我希望它能幫助你更好地去理解這些系統要求。在這個基礎之上,今后,我們還將發表一些文章,介紹一下在Web服務器環境下的Athlon系統、對稱多處理(SMP)系統以及它們在Web環境下的性能表現。