如何改善Web服務(wù)器性能 |
發(fā)布時(shí)間: 2012/9/16 23:36:38 |
作為一種資源的組織和表達(dá)機(jī)制,Web已成為Internet最主要的信息傳送媒介。因此Web的性能已經(jīng)成為判斷一個(gè)網(wǎng)站成功與否的一個(gè)重要評(píng)估標(biāo)準(zhǔn)。而Web服務(wù)器則是決定Web性能的重要環(huán)節(jié)。 Web服務(wù)器性能就是指一個(gè)Web服務(wù)器響應(yīng)用戶請(qǐng)求的能力。為了提高Web服務(wù)器的性能人們進(jìn)行了諸多嘗試,已經(jīng)取得了可喜的成果。本文通過(guò)對(duì)前人研究結(jié)果的分析,提出了在具體應(yīng)用環(huán)境中優(yōu)化Web服務(wù)器的方法和策略。 Web服務(wù)器概述 Web系統(tǒng)在現(xiàn)在網(wǎng)絡(luò)中廣泛使用,而Web服務(wù)器則是Web系統(tǒng)的一個(gè)重要組成部分。完整的Web結(jié)構(gòu)應(yīng)包括:HTTP協(xié)議,Web服務(wù)器,通用網(wǎng)關(guān)接口CGI、Web應(yīng)用程序接口、Web瀏覽器。 Web服務(wù)器是指駐留在因特網(wǎng)上某種類(lèi)型計(jì)算機(jī)的程序。它是在網(wǎng)絡(luò)中信息提供者基干HTTP的為實(shí)現(xiàn)信息發(fā)布、資料查詢、數(shù)據(jù)處理等諸多應(yīng)用搭建基本平臺(tái)的服務(wù)器,其主要功能是提供網(wǎng)上信息瀏覽服務(wù)。當(dāng)Web瀏覽器(客戶端)連到服務(wù)器并請(qǐng)求文件時(shí),服務(wù)器將處理該請(qǐng)求并將文件發(fā)送到該瀏覽器上,附帶的信息會(huì)告訴瀏覽器如何查看該文件(即文件類(lèi)型)。 Web服務(wù)器在web頁(yè)面處理中大致可分為三個(gè)步驟:第一步,web瀏覽器向一個(gè)特定的服務(wù)器發(fā)出Web頁(yè)面請(qǐng)求;第二步,Web服務(wù)器接收到web頁(yè)面請(qǐng)求后,尋找所請(qǐng)求的web頁(yè)面,并將所請(qǐng)求的Web頁(yè)面?zhèn)魉徒oWeb瀏覽器;第三步,Web服務(wù)器接收到所請(qǐng)求的web頁(yè)面,并將它顯示出來(lái)。 Web服務(wù)器不僅能夠存儲(chǔ)信息,還能在用戶通過(guò)Web瀏覽器提供的信息的基礎(chǔ)上運(yùn)行腳本和程序。在Web上,常見(jiàn)的大多數(shù)表單核搜索引擎上都是用的是CGI腳本。 影響Web應(yīng)用服務(wù)器性能的因素 Web服務(wù)器的性能就是指一個(gè)Web服務(wù)器響應(yīng)用戶請(qǐng)求的能力,服務(wù)器的性能對(duì)于一個(gè)Web系統(tǒng)來(lái)說(shuō)至關(guān)重要。為了提高Web服務(wù)器的性能人們進(jìn)行了許多嘗試,也采用了許多技術(shù)和方法,但是這些技術(shù)和方法往往缺乏適用性。 通過(guò)對(duì)前人的研究分析可以發(fā)現(xiàn),在web服務(wù)器的優(yōu)化方而存在這種問(wèn)題的原因主要有兩個(gè):一方面是服務(wù)器性能評(píng)測(cè)造成的,一方面是選用優(yōu)化方案時(shí)考慮不全面造成的。 現(xiàn)行的服務(wù)器性能評(píng)測(cè)工具在對(duì)Web服務(wù)器進(jìn)行評(píng)測(cè)時(shí),其實(shí)是由一臺(tái)或幾臺(tái)計(jì)算機(jī)模擬客戶機(jī),與被測(cè)的Web服務(wù)器進(jìn)行通信,它們其實(shí)組成的只是一個(gè)局域網(wǎng)的環(huán)境,這與真正的廣域網(wǎng)的環(huán)境有一定的差別。 另外,評(píng)測(cè)工具在選擇網(wǎng)絡(luò)負(fù)載時(shí),雖然已經(jīng)盡可能的接近真實(shí)負(fù)載,但是與持續(xù)的高頻率負(fù)載要求仍有差距;再者,在性能測(cè)試指標(biāo)的選擇與分析上也不夠合理,造成了分析結(jié)果不夠公正、可靠。而在選用優(yōu)化Web服務(wù)器的方法時(shí),往往只是考慮Web服務(wù)器這一個(gè)方面,很少結(jié)合具體的應(yīng)用環(huán)境。所以就造成了評(píng)測(cè)結(jié)果不夠科學(xué),應(yīng)用環(huán)境考慮不夠全面,Web服務(wù)器性能優(yōu)化缺乏針對(duì)性。因此在具體的應(yīng)用環(huán)境下優(yōu)化Web服務(wù)器的性能需要另外考慮以下兩個(gè)主要因素:網(wǎng)絡(luò)特性和Web負(fù)載特點(diǎn)。 網(wǎng)絡(luò)特性是指web服務(wù)器所在網(wǎng)絡(luò)情況,是廣域網(wǎng)還是局域網(wǎng),是高速網(wǎng)絡(luò)(傳輸速率在1OOMb/s以上的網(wǎng)絡(luò)就叫做高速網(wǎng)絡(luò))還是低速網(wǎng)絡(luò),在不同的網(wǎng)絡(luò)中相關(guān)的傳輸數(shù)據(jù)的類(lèi)型、網(wǎng)絡(luò)相應(yīng)時(shí)間、吞吐量,利用率等網(wǎng)絡(luò)特性不盡相同,所以要加以區(qū)分,具體情況具體分析。 而在Web負(fù)載特點(diǎn)方面,由于在對(duì)Web服務(wù)器進(jìn)行評(píng)測(cè)時(shí),一個(gè)非常關(guān)鍵的因素就是Web負(fù)載的選擇。評(píng)測(cè)工具雖然有多種,但是它們都在選擇負(fù)載上做足了功課。關(guān)于Web負(fù)載特點(diǎn)的研究主要目的就在于對(duì)Web服務(wù)器性能進(jìn)行評(píng)測(cè)時(shí),可以根據(jù)這些特點(diǎn),選擇模擬最真實(shí)的Web負(fù)載的評(píng)測(cè)工具以便獲得最貼近事實(shí)的Web服務(wù)器性能評(píng)測(cè)數(shù)據(jù),以便更好的對(duì)其進(jìn)行分析和得出優(yōu)化方案。 Web應(yīng)用服務(wù)器優(yōu)化方法 在對(duì)Web服務(wù)器進(jìn)行優(yōu)化時(shí)要根據(jù)真實(shí)的Web應(yīng)用系統(tǒng)的情況和特征來(lái)采取有針對(duì)性地優(yōu)化方案。首先根據(jù)不同的網(wǎng)絡(luò)特性來(lái)看:在局域網(wǎng)中,降低M T U (最大傳輸單位)值對(duì)可以避免復(fù)制數(shù)據(jù)和求校驗(yàn),而通過(guò)優(yōu)化select系統(tǒng)調(diào)用或在Socket事件處理器中執(zhí)行計(jì)算可以優(yōu)化請(qǐng)求并發(fā)管理,利用HTTP1.1持續(xù)連接等都可以使系統(tǒng)性能得到相應(yīng)的改善,但在廣域網(wǎng)的環(huán)境下卻沒(méi)有什么大的作用,有的甚至恰恰相反。 例如:減少用戶連接的MTU會(huì)增加服務(wù)器處理開(kāi)銷(xiāo),采用網(wǎng)絡(luò)延遲、帶寬限制和使用HTTP1.1的持續(xù)連接在廣域網(wǎng)中不會(huì)對(duì)服務(wù)器性能有什么大的影響。在廣域網(wǎng)中,終端用戶的請(qǐng)求的等待時(shí)間依賴(lài)于與網(wǎng)絡(luò)延遲的程度,連接帶寬限制情況。對(duì)于廣域網(wǎng),軟硬中斷在網(wǎng)絡(luò)處理中占有很大的分量,所以采用適應(yīng)的中斷處理機(jī)制將會(huì)給服務(wù)器的響應(yīng)能力帶來(lái)很大的好處;將服務(wù)器定位在內(nèi)核和將基于進(jìn)程設(shè)計(jì)改為基于事務(wù)處理也可以不同程度的提高服務(wù)器的性能。 關(guān)于Web負(fù)載,除了對(duì)Web負(fù)載的特征進(jìn)行分析以便在評(píng)測(cè)時(shí)更好地再現(xiàn)真實(shí)負(fù)載之外,還要考慮Web服務(wù)器所在的網(wǎng)絡(luò)環(huán)境下負(fù)載的情況。人們不僅要求服務(wù)器滿足正常的工作負(fù)載要求,而且在高峰時(shí)期依然要保持較高的吞吐量。但是,服務(wù)器在高負(fù)載的情況下的性能表現(xiàn)往往低于人們的期望。 服務(wù)器過(guò)載的情況分為兩種:一種為瞬間過(guò)載,即服務(wù)器暫時(shí)的、短時(shí)間的超載,這種情況主要是由服務(wù)器負(fù)載的特點(diǎn)引起的。大量的研究表明,Web請(qǐng)求的網(wǎng)絡(luò)通信量分布是自相似的,即Web請(qǐng)求的通信量可以在很大范圍內(nèi)有顯著的變化。這就造成服務(wù)器常常短時(shí)間的超載,但這樣情況持續(xù)的時(shí)間一般很短。一種是服務(wù)器長(zhǎng)時(shí)間的超載,這種情況一般是由某一特殊事件引起的,例如服務(wù)器受到拒絕服務(wù)攻擊或者發(fā)生了“活鎖”現(xiàn)象。 第一種服務(wù)器超載情況是不可避免的,但第二種情況則可以通過(guò)對(duì)服務(wù)器改進(jìn)來(lái)改善。拋開(kāi)惡意的攻擊不算,仔細(xì)分析服務(wù)器處理信息包的過(guò)程可以發(fā)現(xiàn),造成系統(tǒng)在超載情況下性能下降的根本原因是高優(yōu)先級(jí)處理階段對(duì)CPU的不公平搶占。 因此,如果限制高優(yōu)先級(jí)處理階段對(duì)CPU的占用率,或者限制處理高優(yōu)先級(jí)的CPU個(gè)數(shù),都可以減輕或者消除收包活鎖現(xiàn)象。具體的可以采用以下的方法: 一、采用輪詢機(jī)制。為了減少中斷對(duì)系統(tǒng)性能的影響,在負(fù)載正常的情況下采用“下半處理” 的方法就非常有效,而在高負(fù)荷情況下,采用這個(gè)方法仍然會(huì)造成活鎖現(xiàn)象,這時(shí)可以采用輪詢機(jī)制。雖然這個(gè)方法在負(fù)載正常的情況下會(huì)造成資源的浪費(fèi)和響應(yīng)速度降低,但在網(wǎng)絡(luò)數(shù)據(jù)頻繁到達(dá)服務(wù)器時(shí)就要比中斷驅(qū)動(dòng)技術(shù)有效的多。 二、減少上下文切換。這種方法不管服務(wù)器在什么情況下對(duì)性能改善都很有效,這時(shí)可以采用引入核心級(jí)(kerne1—leve1)或硬件級(jí)數(shù)據(jù)流的方法來(lái)達(dá)到這個(gè)目的。核心級(jí)數(shù)據(jù)流是將數(shù)據(jù)從源通過(guò)系統(tǒng)總線進(jìn)行轉(zhuǎn)發(fā)而不需要使數(shù)據(jù)經(jīng)過(guò)應(yīng)用程序進(jìn)程,這個(gè)過(guò)程中因?yàn)閿?shù)據(jù)在內(nèi)存中,因此需要CPU操作數(shù)據(jù)。 硬件級(jí)數(shù)據(jù)流則是將數(shù)據(jù)從源通過(guò)私有數(shù)據(jù)總線或是雖等DMA通過(guò)系統(tǒng)總線進(jìn)行轉(zhuǎn)發(fā)而不需要使數(shù)據(jù)經(jīng)過(guò)應(yīng)用程序進(jìn)程,這個(gè)過(guò)程不需要CPU操作數(shù)據(jù)。這樣在數(shù)據(jù)傳輸過(guò)程中不需要用戶線程的介入,減少了數(shù)據(jù)被拷貝的次數(shù),減少了上下文切換的開(kāi)銷(xiāo)。 三、減低中斷的頻率(主要是針對(duì)高負(fù)荷情況的方法)。這里主要有兩種方法:批中斷和暫時(shí)關(guān)閉中斷。批中斷可以在超載時(shí)有效的抑制活鎖現(xiàn)象,但對(duì)服務(wù)器的性能沒(méi)有什么根本性的改進(jìn);當(dāng)系統(tǒng)出現(xiàn)接收活鎖跡象時(shí),可以采用暫時(shí)關(guān)閉中斷的方法來(lái)緩和系統(tǒng)的負(fù)擔(dān),當(dāng)系統(tǒng)緩存再次可用時(shí)可以再打開(kāi)中斷,但這種方法在接收緩存不夠大的情況下會(huì)造成數(shù)據(jù)包丟失。 Web服務(wù)器性能是整個(gè)Web系統(tǒng)的關(guān)鍵環(huán)節(jié),提高Web服務(wù)器的性能也是長(zhǎng)久以來(lái)人們一直關(guān)注的課題。這里通過(guò)對(duì)Web服務(wù)器的工作原理和現(xiàn)有的優(yōu)化方法和技術(shù)的分析,得出了對(duì)待Web服務(wù)器性能的提高也應(yīng)該具體問(wèn)題具體分析,要在具體的應(yīng)用環(huán)境中,根據(jù)其特點(diǎn)來(lái)采取相應(yīng)的優(yōu)化措施。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |