• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何計算WEB服務器的最大負載量?

    發表于:2007-06-13來源:作者:點擊數: 標簽:
    動態反饋負載均衡算法 動態反饋負載均衡算法考慮服務器的實時負載和響應情況,不斷調整服務器間處理請求的比例,來避免有些服務器超載時依然收到大量請求,從而提高整個系統的吞吐率。下圖顯示了該算法的工作環境,在負載調度器上運行Monitor Daemon進程,Mo

    動態反饋負載均衡算法

    動態反饋負載均衡算法考慮服務器的實時負載和響應情況,不斷調整服務器間處理請求的比例,來避免有些服務器超載時依然收到大量請求,從而提高整個系統的吞吐率。下圖顯示了該算法的工作環境,在負載調度器上運行Monitor Daemon進程,Monitor Daemon來監視和收集各個服務器的負載信息。Monitor Daemon可根據多個負載信息算出一個綜合負載值。Monitor Daemon將各個服務器的綜合負載值和當前權值算出一組新的權值,若新權值和當前權值的差值大于設定的閥值,Monitor Daemon將該服務器的權值設置到內核中的IPVS調度中,而在內核中連接調度一般采用加權輪叫調度算法或者加權最小連接調度算法。

    圖:動態反饋負載均衡算法的工作環境

    連接調度

    當客戶通過TCP連接訪問網絡訪問時,服務所需的時間和所要消耗的計算資源是千差萬別的,它依賴于很多因素。例如,它依賴于請求的服務類型、當前網絡帶寬的情況、以及當前服務器資源利用的情況。一些負載比較重的請求需要進行計算密集的查詢、數據庫訪問、很長響應數據流;而負載比較輕的請求往往只需要讀一個HTML頁面或者進行很簡單的計算。

    請求處理時間的千差萬別可能會導致服務器利用的傾斜(Skew),即服務器間的負載不平衡。例如,有一個WEB頁面有A、B、C和D文件,其中D是大圖像文件,瀏覽器需要建立四個連接來取這些文件。當多個用戶通過瀏覽器同時訪問該頁面時,最極端的情況是所有D文件的請求被發到同一臺服務器。所以說,有可能存在這樣情況,有些服務器已經超負荷運行,而其他服務器基本是閑置著。同時,有些服務器已經忙不過來,有很長的請求隊列,還不斷地收到新的請求。反過來說,這會導致客戶長時間的等待,覺得系統的服務質量差。

    簡單連接調度

    簡單連接調度可能會使得服務器傾斜的發生。在上面的例子中,若采用輪叫調度算法,且集群中正好有四臺服務器,必有一臺服務器總是收到D文件的請求。這種調度策略會導致整個系統資源的低利用率,因為有些資源被用盡導致客戶的長時間等待,而其他資源空閑著。

    實際TCP/IP流量的特征

    文獻說明網絡流量是呈波浪型發生的,在一段較長時間的小流量后,會有一段大流量的訪問,然后是小流量,這樣跟波浪一樣周期性地發生。文獻揭示在WAN和LAN上網絡流量存在自相似的特征,在WEB訪問流也存在自相似性。這就需要一個動態反饋機制,利用服務器組的狀態來應對訪問流的自相似性。

    動態反饋負載均衡機制

    TCP/IP流量的特征通俗地說是有許多短事務和一些長事務組成,而長事務的工作量在整個工作量占有較高的比例。所以,我們要設計一種負載均衡算法,來避免長事務的請求總被分配到一些機器上,而是盡可能將帶有毛刺(Burst)的分布分割成相對較均勻的分布。

    我們提出基于動態反饋負載均衡機制,來控制新連接的分配,從而控制各個服務器的負載。例如,在IPVS調度器的內核中使用加權輪叫調度(Weighted Round-Robin Scheduling)算法來調度新的請求連接;在負載調度器的用戶空間中運行Monitor Daemon。Monitor Daemon定時地監視和收集各個服務器的負載信息,根據多個負載信息算出一個綜合負載值。Monitor Daemon將各個服務器的綜合負載值和當前權值算出一組新的權值。當綜合負載值表示服務器比較忙時,新算出的權值會比其當前權值要小,這樣新分配到該服務器的請求數就會少一些。當綜合負載值表示服務器處于低利用率時,新算出的權值會比其當前權值要大,來增加新分配到該服務器的請求數。若新權值和當前權值的差值大于設定的閥值,Monitor Daemon將該服務器的權值設置到內核中的IPVS調度中。過了一定的時間間隔(如2秒鐘),Monitor Daemon再查詢各個服務器的情況,并相應調整服務器的權值;這樣周期性地進行??梢哉f,這是一個負反饋機制,使得服務器保持較好的利用率。

    在加權輪叫調度算法中,當服務器的權值為零,已建立的連接會繼續得到該服務器的服務,而新的連接不會分配到該服務器。系統管理員可以將一臺服務器的權值設置為零,使得該服務器安靜下來,當已有的連接都結束后,他可以將該服務器切出,對其進行維護。維護工作對系統都是不可少的,比如硬件升級和軟件更新等,零權值使得服務器安靜的功能很主要。所以,在動態反饋負載均衡機制中我們要保證該功能,當服務器的權值為零時,我們不對服務器的權值進行調整。

    綜合負載

    在計算綜合負載時,我們主要使用兩大類負載信息:輸入指標和服務器指標。輸入指標是在調度器上收集到的,而服務器指標是在服務器上的各種負載信息。我們用綜合負載來反映服務器當前的比較確切負載情況,對于不同的應用,會有不同的負載情況,這里我們引入各個負載信息的系數,來表示各個負載信息在綜合負載中輕重。系統管理員根據不同應用的需求,調整各個負載信息的系數。另外,系統管理員設置收集負載信息的時間間隔。

    輸入指標主要是在單位時間內服務器收到新連接數與平均連接數的比例,它是在調度器上收集到的,所以這個指標是對服務器負載情況的一個估計值。在調度器上有各個服務器收到連接數的計數器,對于服務器Si,可以得到分別在時間T1和T2時的計數器值Ci1和Ci2,計算出在時間間隔T2-T1內服務器 Si收到新連接數Ni = Ci2 - Ci1。這樣,得到一組服務器在時間間隔T2-T1內服務器Si收到新連接數{Ni},服務器Si的輸入指標INPUTi為其新連接數與n臺服務器收到平均連接數的比值,其公式為

    服務器指標主要記錄服務器各種負載信息,如服務器當前CPU負載LOADi、服務器當前磁盤使用情況Di、當前內存利用情況Mi和當前進程數目 Pi。有兩種方法可以獲得這些信息;一是在所有的服務器上運行著SNMP(Simple Network Management Protocol)服務進程,而在調度器上的Monitor Daemon通過SNMP向各個服務器查詢獲得這些信息;二是在服務器上實現和運行收集信息的Agent,由Agent定時地向Monitor Daemon報告負載信息。若服務器在設定的時間間隔內沒有響應,Monitor Daemon認為服務器是不可達的,將服務器在調度器中的權值設置為零,不會有新的連接再被分配到該服務器;若在下一次服務器有響應,再對服務器的權值進行調整。再對這些數據進行處理,使其落在[0, ∞)的區間內,1表示負載正好,大于1表示服務器超載,小于1表示服務器處于低負載狀態。獲得調整后的數據有DISKi、MEMORYi和 PROCESSi。

    另一個重要的服務器指標是服務器所提供服務的響應時間,它能比較好地反映服務器上請求等待隊列的長度和請求的處理時間。調度器上的Monitor Daemon作為客戶訪問服務器所提供的服務,測得其響應時間。例如,測試從WEB服務器取一個HTML頁面的響應延時,Monitor Daemon只要發送一個“GET /”請求到每個服務器,然后記錄響應時間。若服務器在設定的時間間隔內沒有響應,Monitor Daemon認為服務器是不可達的,將服務器在調度器中的權值設置為零。同樣,我們對響應時間進行如上調整,得到RESPONSEi。

    這里,我們引入一組可以動態調整的系數Ri來表示各個負載參數的重要程度,其中ΣRi = 1。綜合負載可以通過以下公式計算出:

    例如,在WEB服務器集群中,我們采用以下系數{0.1, 0.3, 0.1, 0.1, 0.1, 0.3},認為服務器的CPU負載和請求響應時間較其他參數重要一些。若當前的系數Ri不能很好地反映應用的負載,系統管理員可以對系數不斷地修正,直到找到貼近當前應用的一組系數。

    另外,關于查詢時間間隔的設置,雖然很短的間隔可以更確切地反映各個服務器的負載,但是很頻繁地查詢(如1秒鐘幾次)會給調度器和服務器帶來一定的負載,如頻繁執行的Monitor Daemon在調度器會有一定的開銷,同樣頻繁地查詢服務器指標會服務器帶來一定的開銷。所以,這里要有個折衷(Tradeoff),我們一般建議將時間間隔設置在5到20秒之間。

    權值計算

    當服務器投入集群系統中使用時,系統管理員對服務器都設定一個初始權值DEFAULT_WEIGHTi,在內核的 IPVS調度中也先使用這個權值。然后,隨著服務器負載的變化,對權值進行調整。為了避免權值變成一個很大的值,我們對權值的范圍作一個限制 [DEFAULT_WEIGHTi, SCALE*DEFAULT_WEIGHTi],SCALE是可以調整的,它的缺省值為10。

    Monitor Daemon周期性地運行,若DEFAULT_WEIGHTi不為零,則查詢該服務器的各負載參數,并計算出綜合負載值AGGREGATE_LOADi。我們引入以下權值計算公式,根據服務器的綜合負載值調整其權值。

    在公式中,0.95是我們想要達到的系統利用率,A是一個可調整的系數(缺省值為5)。當綜合負載值為0.95 時,服務器權值不變;當綜合負載值大于0.95時,權值變小;當綜合負載值小于0.95時,權值變大。若新權值大于 SCALE*DEFAULT_WEIGHTi,我們將新權值設為 SCALE*DEFAULT_WEIGHTi。若新權值與當前權值的差異超過設定的閥值,則將新權值設置到內核中的IPVS調度參數中,否則避免打斷 IPVS調度的開銷。我們可以看出這是一個負反饋公式,會使得權值調整到一個穩定點,如系統達到理想利用率時,權值是不變的。

    在實際使用中,若發現所有服務器的權值都小于他們的DEFAULT_WEIGHT,則說明整個服務器集群處于超載狀態,這時需要加入新的服務器結點到集群中來處理部分負載;反之,若所有服務器的權值都接近于SCALE*DEFAULT_WEIGHT,則說明當前系統的負載都比較輕。

    一個實現例子

    我們在RedHat集群管理工具Piranha中實現了一個簡單的動態反饋負載均衡算法。在綜合負載上,它只考慮服務器的CPU負載(Load Average),使用以下公式進行權值調整:

    服務器權值調整區間為[DEFAULT_WEIGHTi, 10*DEFAULT_WEIGHTi],A為DEFAULT_WEIGHTi /2,而權值調整的閥值為DEFAULT_WEIGHTi /4。1是所想要達到的系統利用率。Piranha每隔20秒查詢各臺服務器的CPU負載,進行權值計算和調整。

    (責任編輯:城塵 68476636-8003)



    原文轉自:http://www.kjueaiud.com

    ...
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>