Web應用服務器優化方法有哪些

來源:文萃谷 2.03W

WEB服務器的優化方法

Web應用服務器優化方法有哪些

在對Web服務器進行優化時要根據真實的Web應用系統的情況和特徵來採取有針對性地優化方案。首先根據不同的網絡特性來看:在局域網中,降低M T U (最大傳輸單位)值對可以避免複製數據和求校驗,而通過優化select系統調用或在Socket事件處理器中執行計算可以優化請求併發管理,利用HTTP1.1持續連接等都可以使系統性能得到相應的改善,但在廣域網的環境下卻沒有什麼大的作用,有的甚至恰恰相反。

例如:減少用户連接的MTU會增加服務器處理開銷,採用網絡延遲、帶寬限制和使用HTTP1.1的持續連接在廣域網中不會對服務器性能有什麼大的影響。在廣域網中,終端用户的請求的等待時間依賴於與網絡延遲的程度,連接帶寬限制情況。對於廣域網,軟硬中斷在網絡處理中佔有很大的分量,所以採用適應的中斷處理機制將會給服務器的響應能力帶來很大的好處;將服務器定位在內核和將基於進程設計改為基於事務處理也可以不同程度的提高服務器的性能。

關於Web負載,除了對Web負載的特徵進行分析以便在評測時更好地再現真實負載之外,還要考慮Web服務器所在的網絡環境下負載的情況。人們不僅要求服務器滿足正常的工作負載要求,而且在高峯時期依然要保持較高的吞吐量。但是,服務器在高負載的情況下的性能表現往往低於人們的期望。

服務器過載的情況分為兩種:一種為瞬間過載,即服務器暫時的、短時間的超載,這種情況主要是由服務器負載的特點引起的。大量的研究表明,Web請求的網絡通信量分佈是自相似的,即Web請求的通信量可以在很大範圍內有顯著的變化。這就造成服務器常常短時間的超載,但這樣情況持續的.時間一般很短。一種是服務器長時間的超載,這種情況一般是由某一特殊事件引起的,例如服務器受到拒絕服務攻擊或者發生了“活鎖現象。

第一種服務器超載情況是不可避免的,但第二種情況則可以通過對服務器改進來改善。拋開惡意的攻擊不算,仔細分析服務器處理信息包的過程可以發現,造成系統在超載情況下性能下降的根本原因是高優先級處理階段對CPU的不公平搶佔。

因此,如果限制高優先級處理階段對CPU的佔用率,或者限制處理高優先級的CPU個數,都可以減輕或者消除收包活鎖現象。具體的可以採用以下的方法:

一、採用輪詢機制。

為了減少中斷對系統性能的影響,在負載正常的情況下采用“下半處理 的方法就非常有效,而在高負荷情況下,採用這個方法仍然會造成活鎖現象,這時可以採用輪詢機制。雖然這個方法在負載正常的情況下會造成資源的浪費和響應速度降低,但在網絡數據頻繁到達服務器時就要比中斷驅動技術有效的多。

二、減少上下文切換。

這種方法不管服務器在什麼情況下對性能改善都很有效,這時可以採用引入核心級(kerne1—leve1)或硬件級數據流的方法來達到這個目的。核心級數據流是將數據從源通過系統總線進行轉發而不需要使數據經過應用程序進程,這個過程中因為數據在內存中,因此需要CPU操作數據。

硬件級數據流則是將數據從源通過私有數據總線或是雖等DMA通過系統總線進行轉發而不需要使數據經過應用程序進程,這個過程不需要CPU操作數據。這樣在數據傳輸過程中不需要用户線程的介入,減少了數據被拷貝的次數,減少了上下文切換的開銷。

三、減低中斷的頻率(主要是針對高負荷情況的方法)。

這裏主要有兩種方法:批中斷和暫時關閉中斷。批中斷可以在超載時有效的抑制活鎖現象,但對服務器的性能沒有什麼根本性的改進;當系統出現接收活鎖跡象時,可以採用暫時關閉中斷的方法來緩和系統的負擔,當系統緩存再次可用時可以再打開中斷,但這種方法在接收緩存不夠大的情況下會造成數據包丟失。

Web服務器性能是整個Web系統的關鍵環節,提高Web服務器的性能也是長久以來人們一直關注的課題。這裏通過對Web服務器的工作原理和現有的優化方法和技術的分析,得出了對待Web服務器性能的提高也應該具體問題具體分析,要在具體的應用環境中,根據其特點來採取相應的優化措施。

熱門標籤