利用動態(tài)WFS算法改善Web Server性能的設(shè)計(jì)
出處:方 成 熊齊邦 發(fā)布于:2011-08-31 14:26:57
作為一種資源的組織和表達(dá)機(jī)制,Web已成為Internet主要的信息傳送媒介。因此Web的性能已經(jīng)成為判斷一個網(wǎng)站成功與否的一個重要評估標(biāo)準(zhǔn)。而Web Server則是決定Web性能的重要環(huán)節(jié)。Web系統(tǒng)在現(xiàn)在網(wǎng)絡(luò)中廣泛使用,而Web服務(wù)器則是Web系統(tǒng)的一個重要組成部分。完整的Web結(jié)構(gòu)應(yīng)包括:HTTP協(xié)議,Web服務(wù)器,通用網(wǎng)關(guān)接口CGI、Web應(yīng)用程序接口、Web瀏覽器。Web Server性能就是指一個Web Server響應(yīng)用戶請求的能力。為了提高Web Server的性能人們進(jìn)行了諸多嘗試,已經(jīng)取得了可喜的成果。
典型的購物網(wǎng)站中,客戶的請求是基于會話(Session)的。Session直接翻譯成中文比較困難,一般都譯成時域。在計(jì)算機(jī)術(shù)語中,Session是指一個終端用戶與交互系統(tǒng)進(jìn)行通信的時間間隔,通常指從注冊進(jìn)入系統(tǒng)到注銷退出系統(tǒng)之間所經(jīng)過的時間以及如果需要的話,可能還有一定的操作空間。具體到Web中的Session指的就是用戶在瀏覽某個網(wǎng)站時,從進(jìn)入網(wǎng)站到瀏覽器關(guān)閉所經(jīng)過的這段時間,也就是用戶瀏覽這個網(wǎng)站所花費(fèi)的時間。因此從上述的定義中我們可以看到,Session實(shí)際上是一個特定的時間概念。需要注意的是,一個Session的概念需要包括特定的客戶端,特定的服務(wù)器端以及不中斷的操作時間。A用戶和C服務(wù)器建立連接時所處的Session同B用戶和C服務(wù)器建立連接時所處的Session是兩個不同的Session.客戶對不同行為的響應(yīng)時間的要求也不同,例如瀏覽客戶能忍受的延遲可能不超過1秒,而對于查詢操作客戶可忍受的延遲會較長些。于是把請求分成4種:瀏覽、購物付賬、查詢和瀏覽靜態(tài)頁面。對于每個到達(dá)的請求依據(jù)其種類進(jìn)入相應(yīng)的隊(duì)列,再動態(tài)調(diào)整隊(duì)列權(quán)值,其依據(jù)就是使得效益函數(shù)取得值。然后采用動態(tài)加權(quán)公平服務(wù)(Dynamic Weighted Fair Service,DWFS)算法,對不同類型的請求提供有區(qū)別但相對權(quán)值來說又是公平的服務(wù)。
1 相關(guān)工作
算法思想來源于一個理想的公平的策略--處理機(jī)共享[6].它先建立多個隊(duì)列,在每次循環(huán)中只發(fā)送1位。這樣,每個忙的源站都能夠得到完全相同的處理機(jī)容量,是化公平的。特別是,如果有N個隊(duì)列,同時每個隊(duì)列永遠(yuǎn)都有1個分組要發(fā)送,則每個隊(duì)列就正好得到可用容量的1/N.這種處理稱為處理機(jī)共享。下面定義一些術(shù)語。
R(t):時間t內(nèi),在處理機(jī)共享規(guī)則中發(fā)生的循環(huán)次數(shù)。
N(t):t時刻的非空隊(duì)列數(shù)。
Pi:分組i的處理時間。
Zia:在隊(duì)列a中分組i的到達(dá)時間。
Sia:隊(duì)列a中分組i的開始被處理時R(t)的值。
Fia:在隊(duì)列a中分組i的結(jié)束處理時R(t)的值。
可以將R(t)想象成一個虛擬時間,記錄了在隊(duì)列頭部第1個分組所看到的服務(wù)速率。
下面的3個遞歸關(guān)系式歸納了處理機(jī)共享系統(tǒng)的基本思想:
2 Web Server性能改進(jìn)算法的基本原理
本文提出的體系結(jié)構(gòu)如圖1所示。其思想是:將顧客的請求根據(jù)所需要的服務(wù)器類型分類;對同一類請求分配相同的權(quán)值;權(quán)值會隨著當(dāng)前的請求和Web服務(wù)器的處理情況調(diào)整;基于權(quán)值對請求進(jìn)行公平服務(wù)。

2.1 算法基本思想
為了使處理機(jī)能支持服務(wù)質(zhì)量,而有區(qū)別地分配容量,并且能夠發(fā)送整個分組,而不是單個位,就需要設(shè)計(jì)一個具有區(qū)別服務(wù)的可實(shí)現(xiàn)的處理機(jī)共享系統(tǒng)。
?。?)考慮公平加權(quán)。為了考慮不同隊(duì)列的不同需求,應(yīng)將處理機(jī)共享規(guī)則廣義化,即允許分配任意的處理機(jī)容量。為每個隊(duì)列指派1個權(quán)值Φα,它確定了在每次循環(huán)中從該隊(duì)列可發(fā)送多少比特。假設(shè)只有3個隊(duì)列且均為非空,權(quán)值分別為0.8、0.1和0.1.對于隊(duì)列1中的請求i,Pi是全部處理機(jī)資源都在處理此請求時所需的時間,則請求i在這種情況下的實(shí)際處理時間就變?yōu)镻i/0.8=5Pi/4,比原來大1/4倍。因?yàn)榉强贞?duì)列權(quán)值之和未必等于1,所以公式(1)中的Pi不能簡單地變?yōu)镻i/Φi,而應(yīng)變換為(Pi/Φi)*C1,其中C1在給定的權(quán)值下為常數(shù)。因?yàn)殛?duì)列具有權(quán)值,不能同等對待,所以虛擬時間R(t)也要變化,不再是1/N(t)。非空隊(duì)列的權(quán)值之和越大,處理能力越分散,輪詢一遍所需的時間就越長,虛擬時間的漲幅越小。即R(t)′與∑Φ非空隊(duì)列成反比,記為R(t)′=C2/∑Φ非空隊(duì)列,其中C2在給定的權(quán)值下為常數(shù)。把以上2個結(jié)論分別代入公式(1)、(2)、(3),就得到如下3個式子:

?。?)考慮具體實(shí)現(xiàn)。由于要處理的不是單個位,而是整個請求,屬0/1問題,因此需進(jìn)一步完善。加權(quán)公平服務(wù)算法就是設(shè)計(jì)一個模擬逐位輪流的規(guī)則。實(shí)現(xiàn)此算法時要隨時計(jì)算虛擬開始時間Si與虛擬結(jié)束時間Fi,就好像正在運(yùn)行加權(quán)的處理機(jī)共享那樣。規(guī)定:只要一個請求的處理過程結(jié)束,下一個將被處理的請求就具有Fi值。為此建立了請求到達(dá)處理模型,且可以發(fā)現(xiàn),隨著時間的推移,請求收到的平均響應(yīng)時間收斂于在逐位發(fā)送規(guī)則下的結(jié)果。

2.2 動態(tài)調(diào)整權(quán)值
由于服務(wù)不同,賦予的初始權(quán)值也就不同。而且每個隊(duì)列長度也在不斷變化,因此要防止擁塞,就需要每隔一定時間調(diào)用權(quán)值調(diào)整函數(shù),根據(jù)隊(duì)列初始權(quán)值和當(dāng)前隊(duì)列長度計(jì)算新的權(quán)值。
2.3 權(quán)值調(diào)整算法和加權(quán)公平服務(wù)算法
每隔一段時間調(diào)用權(quán)值調(diào)整方法:

每次請求處理結(jié)束,調(diào)用加權(quán)公平服務(wù)方法,返回下一個應(yīng)處理的請求:

3 Web Server性能改進(jìn)算法具體實(shí)現(xiàn)
3.1 系統(tǒng)模擬環(huán)境
系統(tǒng)的程序?qū)崿F(xiàn)框圖如圖2所示。在真實(shí)的Web服務(wù)器前端實(shí)現(xiàn)一個代理(Proxy),在Proxy中實(shí)現(xiàn)了FIFO和DWFS算法。為了產(chǎn)生較多的HTTP請求,用程序模擬了HTTP客戶端的實(shí)現(xiàn)。該客戶端能按照一定的時間間隔和規(guī)律來生成請求。

3.2 實(shí)驗(yàn)程序說明
使用Java程序模擬Proxy的實(shí)現(xiàn)。其實(shí)現(xiàn)主要由以下類組成。
?。?)Http客戶端(HttpClient):模擬客戶機(jī)發(fā)送Http請求。
?。?)Http服務(wù)端(HttpServer):模擬服務(wù)器,將Http請求進(jìn)行排隊(duì)處理。
?。?)Http請求接收(HttpRequestRsv):接收Http請求,根據(jù)訪問頁面分類進(jìn)入隊(duì)列。
?。?)Http請求隊(duì)列(HttpRequestQueue):隊(duì)列數(shù)據(jù)結(jié)構(gòu)。
?。?)Http請求隊(duì)列處理(HttpRequestQueueHandler):采取FIFO或DWFS進(jìn)行調(diào)度。
?。?)Http請求處理(HttpRequestHandler):調(diào)度后,發(fā)送真實(shí)Http請求,并進(jìn)行處理。
?。?)數(shù)據(jù)日志(Datalog):記錄實(shí)驗(yàn)數(shù)據(jù)寫日志文件。
3.3 實(shí)驗(yàn)初始參數(shù)
服務(wù)器同時處理10個請求,選用了幾個有代表性的頁面,各頁面參數(shù)如表1所示。

4 實(shí)驗(yàn)結(jié)果數(shù)據(jù)分析
數(shù)據(jù)采集的參數(shù)包括:當(dāng)前請求響應(yīng)時間、各隊(duì)列當(dāng)前平均響應(yīng)時間、所有請求的平均響應(yīng)時間和各隊(duì)列當(dāng)前長度。
?。?)分別間隔300ms和200ms發(fā)送請求分析響應(yīng)時間。在每隔300ms發(fā)送請求時,2種算法下的系統(tǒng)性能幾乎相同。而且,隨著發(fā)送的請求個數(shù)越來越多,響應(yīng)時間并未增大。因?yàn)槊扛?00ms的時間發(fā)送一個請求的速度對于Web服務(wù)器來說遠(yuǎn)沒有達(dá)到飽和,因此不論采用什么算法,都不會造成系統(tǒng)的擁塞,系統(tǒng)性能相對穩(wěn)定,2種算法沒有明顯區(qū)別。每隔200ms發(fā)送請求時,在前150個請求到來之前2種算法的系統(tǒng)性能幾乎相同。然而隨著請求的增多,應(yīng)用DWFS算法的請求響應(yīng)時間只是FIFO的一半。這說明在系統(tǒng)負(fù)載接近飽和的情況下,DWFS算法會使系統(tǒng)性能明顯提高。
?。?)分析間隔200ms發(fā)送請求時的隊(duì)列平均響應(yīng)時間和隊(duì)列長度。在發(fā)送130個請求后,F(xiàn)IFO的各個隊(duì)列平均響應(yīng)時間和長度均大于DWFS各隊(duì)列的響應(yīng)時間。此外,應(yīng)用FIFO的各隊(duì)列極不穩(wěn)定,不論"長"請求隊(duì)列還是"短"請求隊(duì)列都可能得不到響應(yīng),隊(duì)列會出現(xiàn)擁塞。而DWFS的各個隊(duì)列平均響應(yīng)時間和隊(duì)列長度相對穩(wěn)定,但對于需要較長處理時間的搜索頁面隊(duì)列通常的響應(yīng)時間也較長,會有較多的請求排隊(duì)。
5 結(jié)論及展望
該體系結(jié)構(gòu)中仍然存在一些不足:請求的產(chǎn)生是均勻、依次的,而實(shí)際客戶訪問各個頁面都是隨機(jī)的;僅在特定時刻根據(jù)隊(duì)列的長度調(diào)整權(quán)值。針對以上不足可作進(jìn)一步的改善:在請求的產(chǎn)生上,引入概率轉(zhuǎn)移矩陣模型用于反映客戶在不同隊(duì)列間的轉(zhuǎn)移關(guān)系,以更客觀地模擬實(shí)際請求;根據(jù)客戶的優(yōu)先級調(diào)整權(quán)值。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 工業(yè)5G技術(shù)在智能制造中的應(yīng)用與實(shí)踐解析2025/12/31 10:57:21
- 工業(yè)以太網(wǎng)交換機(jī)選型與現(xiàn)場應(yīng)用技術(shù)指南2025/12/18 10:48:14
- 無線傳輸電路基礎(chǔ),射頻前端設(shè)計(jì)、天線匹配與鏈路預(yù)算計(jì)算2025/10/27 13:55:50
- ASK 解調(diào)的核心要點(diǎn)與實(shí)現(xiàn)方式2025/9/5 16:46:17
- 雙偶極子天線:結(jié)構(gòu)、特性與應(yīng)用全解析2025/9/3 10:29:21









