在各種網站的正常運營中,由於使用者需求的多樣性,直接導致了主機應用的複雜性,諸如,Client/Server模式、Web/Server模式、三層應用服務系統迅速普及,伺服器作為網路資訊發布、處理的關鍵性節點,比以往要承載更多的流量負載。也許伺服器的效能表現會不盡如人意,這就需要分析具體的伺服器效能瓶頸並找到解決辦法。本文對影響Web伺服器效能的各方面做了分析,提出了緩解Web伺服器效能瓶頸效應的方法。 各種Web平台技術效能分析 實際上,目前的web網站能夠採用各種技術,包括靜態HTML、內嵌或伺服器解析的HTML(inline/server-parsed HTML)和CGI(Common Gateway Interface,公用網關介面),並以ODBC(Open Database Connectivity,開放式資料庫互接)實現資料庫的互連。每一種資料來源均以其獨特的方式在web服務中發揮著作用。 靜態HTML 靜態HTML是互連網上任何網站最基本的一種構成元素。幾乎所有的網站均不同程度地採用了這種元素。靜態HTML頁面嚴格地由標準的HTML標示語言構成,並不需要伺服器端即時運算產生。這意味著,對一個靜態HTML文檔發出訪問請求後,伺服器端只是簡單地將該文檔傳輸到用戶端。從伺服器啟動並執行那個時間片來看,這個傳輸過程僅僅佔用了很小的CPU資源。為了提高靜態HTML的訪問效率,主要可以從以下幾個方面進行最佳化:網路頻寬、磁碟I/O以及cache(高速緩衝儲存空間)。 伺服器解析的HTML 依靠伺服器解析的HTML頁麵包括兩部分的代碼:一部分是標準的HTML代碼,另一部分是伺服器端啟動並執行代碼(由第三方的處理常式或web伺服器自己在頁面傳輸到用戶端前對其進行解釋)。這種HTML頁面是CGI程式的升級版本(因為它的執行效率更高)。目前,內嵌的伺服器端擴充集,比如ASP、PHP是普通的伺服器端支援的擴充集,已得到了非常普遍的使用。開發這種擴充集的目的是要使網站上的內容更生動活潑,更模組化,以利於維護。此外,伺服器解析文檔改善了效能相對低下的用戶端工作模式,將用戶端的負載降低到最低程度,同時也降低了資料轉送對頻寬的要求。因為伺服器解析文檔必須在其傳輸 到用戶端前就通過伺服器來進行解釋,所以,我們的伺服器要添加額外的CPU。 公用網關介面(CGI) CGI使Web網站具有更佳的互動性和實用性。它可以用來收集使用者的輸入資料,允許運行外部程式以執行眾多與使用者輸入相關的任務以及輸出執行結果等,因此,應用CGI後,互連網的用途被大大擴充了。但是,要使用CGI,就必須付出一定開銷。特別在CGI與解譯器(譬如PERL)配合使用時,CGI的調用成本會很高。如果系統運行在極端繁重的負載條件下,該成本更是高居不下。如果可能的話,應該考慮選用ASP或PHP3來取代CGI。 資料庫的互連性 目前,互連網上最大的資源殺手當非線上資料庫(online databases)和電子商務(e-commerce)等應用莫屬。提供web功能的資料庫和應用伺服器近年來飛速增長,顯示出強勁的發展勢頭。從效能的角度來看,線上資料庫,基於MySQL、Oracle、SQL Server或Sybase等的應用如日中升,迫使我們更加關注伺服器的效能狀況。對於大型網站來說,高負載的HTTP傳輸和資料庫處理事務互相搶佔資源,並最終可能導致伺服器在極短的時間內崩潰或者變得慢如蝸牛。在這種情況下,建議使用專門的後台啟動並執行資料庫伺服器(當然也是出於安全的考慮)以及前台處理的HTTP伺服器。 如何緩解瓶頸效應 根據上述分析,我們知道不同的平台提供不同的效能水平,各個平台的效能之間存在一定交迭,因此,要根據我們選用的平台,考慮從以下四個方面提出可行的辦法。 網路頻寬 可用的頻寬對於主要由靜態頁面構成的網站來說,是最關鍵的因素。撇開網路的吞吐總量以及響應速度不講,在高負載的環境下,系統的突發傳輸速率是非常重要的。在使用者訪問的高峰期,某些網站也許根本無法訪問。這樣的網站在使用者企圖訪問它時顯得慢如蝸牛,而伺服器自身卻仍舊非常空閑。這樣看來,要成功搭建一個web主機,選擇合適的頻寬顯然是非常重要的。必要時,伺服器到核心交換器可選擇千兆頻寬。 記憶體 可用的實體記憶體是另外一個重要因素,這是因為對記憶體的佔用率會直接隨著對伺服器請求數量的增加而增加。檔案緩衝區也是非常重要的,因為它能將磁碟的使用頻率降到最低程度,明顯加快交易處理的總體速度。對記憶體的需求很大程度上取決於使用在特定伺服器上的軟體的具體情況。除了作業系統的管理能力和檔案系統的緩衝區大小之外,還需要將所選擇的web伺服器軟體對硬體的特殊要求調查清楚。 儲存 web伺服器的效能和儲存介質有關的讀寫時間指標也是非常重要的,對大型檔案庫和資料庫(檔案緩衝區的作用在這明顯削弱)而言,尤其如此。在多裝置協同工作的條件下,Web伺服器的磁碟系統必須有卓越的效能,推薦採用SCSI硬碟或RAID陣列。對於那些主要放開了唯讀許可權的網站(使用者不能上傳資料),RAID是最佳的解決方案。RAID具有可用性(Availability)、容量(Capacity)及效能(Performance)等三個方面的優點。因為,在RAID陣列中存在多個硬碟磁頭,能明顯提升讀取操作的資料輸送量。 中央處理器 對於那些主要由靜態頁面構成的網站來說,CPU是最次要的一個因素。但是,在使用了包括CGI、伺服器解析文檔或提供web訪問方式的資料庫的情況下,就需要更多地關注CPU的效能。在這種場合下,如果向一個較小的使用者群體提供某種對CPU依賴很大的應用服務,那麼,一個高速的單CPU可能是最有用的。但是,如果存在多個使用者同時對大批量的頁面提出訪問請求,那麼在這種情況下(尤其在這些頁面均以獨立的進程或線程模式開啟情況下),多CPU系統(即使這些CPU的速度都很慢)更為管用。 以上簡單分析了各類平台下的伺服器效能瓶頸,並提出了緩解的基本途徑和方法。當然,緩解伺服器效能瓶頸的方法還有採用伺服器叢集、Server Load Balancer技術等。 |