国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法及裝置的制造方法

      文檔序號(hào):9452946閱讀:462來源:國知局
      一種實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法及裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及互聯(lián)網(wǎng)應(yīng)用領(lǐng)域,特別是一種實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法及裝置。
      【背景技術(shù)】
      [0002]目前應(yīng)用較多的網(wǎng)頁服務(wù)器nginx,通常會(huì)開啟多個(gè)子進(jìn)程,將internet上的連接請求均衡的轉(zhuǎn)發(fā)給各個(gè)子進(jìn)程處理。nginx實(shí)現(xiàn)子進(jìn)程間的負(fù)載均衡的方法為,各個(gè)子進(jìn)程在當(dāng)前處理的連接請求數(shù)達(dá)到其最大處理總數(shù)的7/8時(shí)觸發(fā)負(fù)載均衡,不再處理新的連接請求,這樣其他較空閑的進(jìn)程就有機(jī)會(huì)處理更多的新連接請求,以此達(dá)到負(fù)載均衡效果。
      [0003]nginx的這種負(fù)載均衡方案的應(yīng)用效果并不理想,主要原因是該方案觸發(fā)負(fù)載均衡的時(shí)間較晚,在觸發(fā)時(shí)候各進(jìn)程處理連接請求已經(jīng)很不均衡,各進(jìn)程并沒有考慮其他進(jìn)程當(dāng)前的處理連接請求情況,它只是避免了某一進(jìn)程過多的處理連接請求,并不能保證各進(jìn)程均衡的處理連接請求。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明實(shí)施例的目的在于提供一種實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法及裝置,以保證各進(jìn)程均衡的處理請求。
      [0005]為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法,應(yīng)用于每個(gè)進(jìn)程,包括:
      [0006]接收連接請求;
      [0007]獲取當(dāng)前連接請求總數(shù);所述當(dāng)前連接請求總數(shù)保存在共享內(nèi)存中;
      [0008]將當(dāng)前連接請求總數(shù)除以預(yù)設(shè)的進(jìn)程數(shù),得到當(dāng)前平均連接請求數(shù);
      [0009]將自身記錄的自身處理的當(dāng)前第一連接請求數(shù)與所述當(dāng)前平均連接請求數(shù)作對(duì)比,僅當(dāng)?shù)谝贿B接請求數(shù)小于所述當(dāng)前平均連接請求數(shù)時(shí),嘗試處理所述新的連接請求,并將當(dāng)前第一連接請求數(shù)和共享內(nèi)存中的當(dāng)前連接請求總數(shù)分別加I。
      [0010]該方法還可以包括:每個(gè)進(jìn)程啟動(dòng)時(shí),檢測是否有其他進(jìn)程已經(jīng)啟動(dòng):
      [0011]若無其他進(jìn)程已經(jīng)啟動(dòng),初始化共享內(nèi)存中記錄的當(dāng)前連接請求總數(shù)為O ;
      [0012]若有其他進(jìn)程已經(jīng)啟動(dòng),保持共享內(nèi)存中記錄的當(dāng)前連接請求總數(shù)不變。
      [0013]所述每個(gè)進(jìn)程啟動(dòng)時(shí),檢測是否有其他進(jìn)程已經(jīng)啟動(dòng),可以包括:
      [0014]檢測為進(jìn)程預(yù)設(shè)的記錄鎖中,是否有記錄鎖被占用,若有,則確定有其他進(jìn)程已經(jīng)啟動(dòng);若無,則確定無其他進(jìn)程啟動(dòng),該進(jìn)程為第一個(gè)啟動(dòng)的進(jìn)程;
      [0015]每個(gè)進(jìn)程啟動(dòng)時(shí),均獲得一個(gè)未被占用的記錄鎖,并占用該記錄鎖。
      [0016]該方法還可以包括:每個(gè)進(jìn)程退出時(shí),釋放該進(jìn)程所占用的記錄鎖。
      [0017]該方法還可以包括:每個(gè)進(jìn)程被重啟時(shí),所述進(jìn)程自身處理的當(dāng)前第一連接請求數(shù)設(shè)置為O。
      [0018]該方法還可以包括:每個(gè)進(jìn)程被重啟時(shí),將當(dāng)前連接請求總數(shù)除以預(yù)設(shè)的進(jìn)程數(shù),得到當(dāng)前平均連接請求數(shù),該被重啟的進(jìn)程自身處理的當(dāng)前第一連接請求數(shù)設(shè)置為所述當(dāng)前平均連接請求數(shù)。
      [0019]本發(fā)明實(shí)施例還公開了一種實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的裝置,應(yīng)用于每個(gè)進(jìn)程,包括:
      [0020]接收單元,用于接收連接請求;
      [0021]獲取單元,用于獲取當(dāng)前連接請求總數(shù);所述當(dāng)前連接請求總數(shù)保存在共享內(nèi)存中;
      [0022]當(dāng)前平均連接請求數(shù)獲得單元,用于將當(dāng)前連接請求總數(shù)除以預(yù)設(shè)進(jìn)程數(shù),得到當(dāng)前平均連接請求數(shù);
      [0023]連接請求處理單元,用于將自身記錄的自身處理的當(dāng)前第一連接請求數(shù)與所述當(dāng)前平均連接請求數(shù)作對(duì)比,僅當(dāng)?shù)谝贿B接請求數(shù)小于所述當(dāng)前平均連接請求數(shù)時(shí),嘗試處理所述新的連接請求,并將當(dāng)前第一連接請求數(shù)和共享內(nèi)存中的當(dāng)前連接請求總數(shù)分別加
      1
      [0024]該裝置還可以包括:檢測單元,用于檢測是否有其他進(jìn)程已經(jīng)啟動(dòng),若無其他進(jìn)程已經(jīng)啟動(dòng),將共享內(nèi)存中的當(dāng)前連接請求總數(shù)初始化為O;若有其他進(jìn)程已經(jīng)啟動(dòng),保持共享內(nèi)存中的當(dāng)前連接請求總數(shù)不變。
      [0025]所述檢測單元,具體用于:
      [0026]檢測為進(jìn)程預(yù)設(shè)的與進(jìn)程數(shù)相同數(shù)量的記錄鎖中,是否有記錄鎖被占用,若有,則說明有其他進(jìn)程已經(jīng)啟動(dòng);若無,則說明無其他進(jìn)程啟動(dòng),該進(jìn)程為第一個(gè)啟動(dòng)的進(jìn)程;每個(gè)進(jìn)程啟動(dòng)時(shí),均獲得一個(gè)未被占用的記錄鎖,并占用該記錄鎖。
      [0027]所述檢測單元,還可以用于:
      [0028]每個(gè)進(jìn)程退出時(shí),釋放該進(jìn)程所占用的記錄鎖。
      [0029]該裝置還可以包括:第一重置單元,用于進(jìn)程被重啟時(shí),將所述進(jìn)程自身處理的當(dāng)前第一連接請求數(shù)設(shè)置為O。
      [0030]該裝置還可以包括:第二重置單元,用于每個(gè)進(jìn)程被重啟時(shí),將當(dāng)前連接請求總數(shù)除以預(yù)設(shè)的進(jìn)程數(shù),得到當(dāng)前平均連接請求數(shù),該被重啟的進(jìn)程自身處理的當(dāng)前第一連接請求數(shù)設(shè)置為所述當(dāng)前平均連接請求數(shù)。
      [0031]由上述的技術(shù)方案可見,本發(fā)明實(shí)施例提出的實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法及裝置,通過將進(jìn)程自身處理的連接請求數(shù)與各進(jìn)程處理的連接請求的平均數(shù)做對(duì)比,只有低于平均水平時(shí)才處理新的連接請求,從而實(shí)現(xiàn)了網(wǎng)頁服務(wù)器進(jìn)程從啟動(dòng)到結(jié)束,均能保持負(fù)載均衡狀態(tài),靈活的把連接請求合理地分配給各個(gè)進(jìn)程共同負(fù)擔(dān),有效地避免了因分配不合理導(dǎo)致的個(gè)別進(jìn)程負(fù)荷太大的情況。當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品或方法必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
      【附圖說明】
      [0032]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0033]圖1是本發(fā)明實(shí)施例的實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法流程圖;
      [0034]圖2是本發(fā)明實(shí)施例的實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的裝置結(jié)構(gòu)示意圖。
      【具體實(shí)施方式】
      [0035]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
      [0036]本發(fā)明實(shí)施例提出的實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法及裝置,能夠保證各進(jìn)程均衡的處理請求。
      [0037]如圖1所示,本發(fā)明實(shí)施例公開了一種實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法,應(yīng)用于每個(gè)進(jìn)程,包括:
      [0038]步驟101,接收連接請求;
      [0039]步驟102,獲取當(dāng)前連接請求總數(shù),所述當(dāng)前連接請求總數(shù)保存在共享內(nèi)存中;
      [0040]步驟103,將當(dāng)前連接請求總數(shù)除以預(yù)設(shè)的進(jìn)程數(shù),得到當(dāng)前平均連接請求數(shù):
      [0041]步驟104,將自身記錄的自身處理的當(dāng)前第一連接請求數(shù)與所述當(dāng)前平均連接請求數(shù)作對(duì)比,僅當(dāng)?shù)谝贿B接請求數(shù)小于所述當(dāng)前平均連接請求數(shù)時(shí),嘗試處理所述新的連接請求,并將當(dāng)前第一連接請求數(shù)和共享內(nèi)存中的當(dāng)前連接請求總數(shù)分別加I。
      [0042]需要說明的是,圖1所示的實(shí)施例是每個(gè)啟動(dòng)的進(jìn)程進(jìn)行的處理。
      [0043]本實(shí)施例中,在每個(gè)進(jìn)程啟動(dòng)時(shí),都可以檢測是否有其他進(jìn)程已經(jīng)啟動(dòng):若無其他進(jìn)程已經(jīng)啟動(dòng),初始化共享內(nèi)存中記錄的當(dāng)前連接請求總數(shù)為O ;若有其他進(jìn)程已經(jīng)啟動(dòng),保持共享內(nèi)存中記錄的當(dāng)前連接請求總數(shù)不變。
      [0044]具體的檢測步驟為:檢測為進(jìn)程預(yù)設(shè)的記錄鎖中,是否有記錄鎖被占用,若有,則確定有其他進(jìn)程已經(jīng)啟動(dòng);若無,則確定無其他進(jìn)程已經(jīng)啟動(dòng),該進(jìn)程為第一個(gè)啟動(dòng)的進(jìn)程;每個(gè)進(jìn)程啟動(dòng)時(shí),均獲得一個(gè)未被占用的記錄鎖,并占用該記錄鎖。每個(gè)進(jìn)程退出時(shí),釋放該進(jìn)程所占用的記錄鎖。
      [0045]通常情況下,網(wǎng)頁服務(wù)器的多個(gè)進(jìn)程是由spawn進(jìn)程在啟動(dòng)的時(shí)候fork出來的,fork出來的進(jìn)程的數(shù)量是預(yù)先設(shè)定好的。并且當(dāng)其中的一個(gè)進(jìn)程運(yùn)行過程中崩潰時(shí)會(huì)由spawn進(jìn)程重新fork—個(gè)出來,即重新啟動(dòng)一個(gè)進(jìn)程,保證啟動(dòng)的進(jìn)程數(shù)量不變。因而進(jìn)程啟動(dòng)時(shí)需判斷自身是否為崩潰被重啟的情況,如果為崩潰被重啟的情況,則能通過上述方法檢測到有其他進(jìn)程已經(jīng)啟動(dòng),此時(shí),保持共享內(nèi)存中記錄的當(dāng)前連接請求總數(shù)不變。如果進(jìn)程為正常情況下的啟動(dòng),則能通過上述方法檢測到無其他進(jìn)程已經(jīng)啟動(dòng),此時(shí),初始化共享內(nèi)存中記錄的當(dāng)前連接請求總數(shù)為O。
      [0046]本實(shí)施例中,還可以包括:每個(gè)進(jìn)程被重啟時(shí),所述進(jìn)程自身處理的當(dāng)前第一連接數(shù)設(shè)置為O或者設(shè)置為當(dāng)前平均連接請求數(shù)。每個(gè)進(jìn)程被重啟時(shí),都會(huì)將當(dāng)前連接請求總數(shù)除以預(yù)設(shè)的進(jìn)程數(shù),得到當(dāng)前平均連接請求數(shù)。
      [0047]實(shí)際上,進(jìn)程重啟時(shí),將當(dāng)前第一連接數(shù)設(shè)置為當(dāng)前平均連接請求數(shù),能夠避免被重啟的進(jìn)程短時(shí)間內(nèi)處理過多連接請求;而將當(dāng)前第一連接數(shù)設(shè)置為0,則保證了各進(jìn)程間負(fù)載均衡,避免了資源浪費(fèi)。實(shí)際應(yīng)用中,可以根據(jù)實(shí)際需求選擇一種方式來設(shè)置。
      [0048]應(yīng)用本發(fā)明實(shí)施例提出的實(shí)現(xiàn)網(wǎng)頁服務(wù)器多進(jìn)程間負(fù)載均衡的方法,通過將進(jìn)程自身處理的連接請求數(shù)
      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1