国产精品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>

      多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法和系統(tǒng)的制作方法_2

      文檔序號(hào):9931226閱讀:來(lái)源:國(guó)知局
      程中連接數(shù)最少的進(jìn)程,并將該連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程,獲取到新連接后,將可接收新連接的進(jìn)程與新連接建立連接,并將該可接收新連接的進(jìn)程標(biāo)記為不可接收新連接的進(jìn)程,實(shí)現(xiàn)了各組內(nèi)進(jìn)程不存在驚群影響,且每次選擇連接數(shù)最少的進(jìn)程作為可接收新連接的進(jìn)程,能均勻配置各進(jìn)程的連接數(shù),降低性能損耗,不會(huì)因進(jìn)程連接不均引起負(fù)載不均而導(dǎo)致處理器頻繁的調(diào)度額外增加中斷和上下文的切換。
      [0053]進(jìn)一步的,在一個(gè)實(shí)施例中,在該獲取每組進(jìn)程中連接數(shù)最少的進(jìn)程的步驟之后,該多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法還包括:判斷每組進(jìn)程中連接數(shù)最少的進(jìn)程的連接數(shù)是否小于連接數(shù)閾值;若是,則將每組進(jìn)程中連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程,若否,則當(dāng)前組內(nèi)進(jìn)程均標(biāo)記為不可接收新連接。
      [0054]具體地,連接數(shù)閾值是指每個(gè)進(jìn)程能接收的最大連接,例如5、6等。若某組進(jìn)程中連接數(shù)最少的進(jìn)程的連接數(shù)不小于連接數(shù)閾值,其他進(jìn)程的連接數(shù)也不小于連接數(shù)閾值,則將當(dāng)前組內(nèi)進(jìn)程均標(biāo)記為不可接收新連接,等待某個(gè)進(jìn)程釋放了連接,可再對(duì)該組內(nèi)進(jìn)程進(jìn)行篩選出連接數(shù)最少的進(jìn)程。
      [0055]進(jìn)一步的,在一個(gè)實(shí)施例中,上述多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法還包括:獲取每組進(jìn)程中連接數(shù)小于連接數(shù)閾值、連接數(shù)最少且最早建立連接的進(jìn)程,將該進(jìn)程標(biāo)記為可接收新連接的進(jìn)程。
      [0056]具體地,獲取每組進(jìn)程中連接數(shù)小于連接數(shù)閾值的進(jìn)程,再?gòu)倪B接數(shù)小于連接數(shù)閾值的進(jìn)程中選擇連接數(shù)最少的進(jìn)程,若有多個(gè)連接數(shù)最少的進(jìn)程,則按照建立連接的時(shí)間順序選擇最早建立連接的進(jìn)程。進(jìn)一步的均衡了進(jìn)程的連接數(shù),降低了性能損耗。
      [0057]圖4為傳統(tǒng)的Nginx對(duì)新連接的處理示意圖。如圖4所示,進(jìn)程有Pl、P2至Pn,新連接到來(lái)時(shí),持有鎖可處理新連接的進(jìn)程P3進(jìn)程一般正在處理已連接數(shù)據(jù)的收發(fā)邏輯,采用階段①標(biāo)識(shí);本次邏輯處理完后,開(kāi)始接收新連接請(qǐng)求I,采用階段②標(biāo)識(shí),對(duì)于新連接請(qǐng)求2,必須等下一次獲得鎖的進(jìn)程來(lái)接收,采用階段③標(biāo)識(shí),如果每個(gè)進(jìn)程比較繁忙,特別是有阻塞操作時(shí),新連接事件需要等長(zhǎng)時(shí)間的本次業(yè)務(wù)邏輯處理完畢才能處理,所以等待建立的時(shí)間可能更長(zhǎng)甚至超時(shí),影響了用戶體驗(yàn)及吞吐量。
      [0058]圖5為本發(fā)明的多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法對(duì)新連接的處理示意圖。如圖5所示,多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法配置進(jìn)程有Pl、P2至Pn,多個(gè)分組,例如分組I包括Pl、P2和P3,分組2包括P4、P5和P6等。每個(gè)分組內(nèi)有一個(gè)進(jìn)程接收連接,多個(gè)分組就有多個(gè)進(jìn)程并發(fā)接收連接。如在組I和組2中,只有當(dāng)前P2和P5進(jìn)程可接收新連接。在時(shí)間分布上,各進(jìn)程大部分情況在處理已連接的數(shù)據(jù)收發(fā)等業(yè)務(wù)邏輯,在圖中標(biāo)識(shí)為階段①,本次處理完畢后P2接收新連接I,同樣P5接收新連接2,如此新連接2不用等下一個(gè)分配了可接收的進(jìn)程來(lái)建立連接。尤其在高并發(fā)壓力下,盡快的建立連接,能提高系統(tǒng)的吞吐量。
      [0059]圖6為另一個(gè)實(shí)施例中多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法的流程圖。如圖6所示,一種多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法,包括以下步驟:
      [0060]步驟602,進(jìn)程初始化。
      [0061]具體地,進(jìn)程初始化是指將進(jìn)程分組,得到每組進(jìn)程數(shù),并為每組進(jìn)程中每個(gè)進(jìn)程進(jìn)行標(biāo)號(hào),以表示進(jìn)程的唯一性。例如標(biāo)號(hào)為1、2、3等。
      [0062]步驟604,判斷當(dāng)前進(jìn)程是否可接收新連接,若是,執(zhí)行步驟606,若否,執(zhí)行步驟618。
      [0063]步驟606,監(jiān)聽(tīng)新連接。
      [0064]步驟608,判斷是否有新連接,若是,執(zhí)行步驟610,若否,執(zhí)行步驟618。
      [0065]步驟610,獲取新連接,將該標(biāo)記為可接收新連接的進(jìn)程與該新連接建立連接,且增加本進(jìn)程的連接數(shù),并將該本進(jìn)程標(biāo)記為不可接收新連接。
      [0066]步驟612,組內(nèi)是否存在連接數(shù)小于連接數(shù)閾值且連接數(shù)最少的進(jìn)程,若是,執(zhí)行步驟614,若否,執(zhí)行步驟616。
      [0067]步驟614,將連接數(shù)小于連接數(shù)閾值且連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程,再執(zhí)行步驟618。
      [0068]步驟616,當(dāng)前組內(nèi)進(jìn)程均標(biāo)記為不可接收新連接,再執(zhí)行步驟618。
      [0069]具體地,將連接數(shù)小于連接數(shù)閾值且連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程后或當(dāng)前組內(nèi)進(jìn)程均標(biāo)記為不可接收新連接后,等待Epoll通知,進(jìn)行下一次處理。
      [0070]Epol I是Linux內(nèi)核為處理大批量文件描述符事件(建立連接、收發(fā)數(shù)據(jù)等)提供的多路復(fù)用10(Input/0utput,輸入/輸出)接口,能顯著提高程序在大量并發(fā)連接中只有少量活躍的情況下的系統(tǒng)(PU利用率,被大量高性能異步服務(wù)器所采用。
      [0071]步驟618,處理已連接數(shù)據(jù)的收發(fā),然后執(zhí)行步驟604。
      [0072]步驟620,檢測(cè)每組進(jìn)程中是否有進(jìn)程釋放連接,若是,則執(zhí)行步驟622,若否,不作處理。
      [0073]步驟622,減少釋放連接的進(jìn)程的連接數(shù),再執(zhí)行步驟612。
      [0074]上述多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法,將設(shè)備的進(jìn)程分成多個(gè)組,每次獲取每組進(jìn)程中連接數(shù)最少的進(jìn)程,并將該連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程,獲取到新連接后,將可接收新連接的進(jìn)程與新連接建立連接,并將該可接收新連接的進(jìn)程標(biāo)記為不可接收新連接的進(jìn)程,實(shí)現(xiàn)了各組內(nèi)進(jìn)程不存在驚群影響,且每次選擇連接數(shù)最少的進(jìn)程作為可接收新連接的進(jìn)程,能均勻配置各進(jìn)程的連接數(shù),降低性能損耗,不會(huì)因進(jìn)程連接不均引起負(fù)載不均而導(dǎo)致處理器頻繁的調(diào)度額外增加中斷和上下文的切換。
      [0075]進(jìn)一步的,將該每組進(jìn)程中連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程的步驟之后,該多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法還包括:該標(biāo)記為可接收新連接的進(jìn)程處理已連接數(shù)據(jù)的收發(fā);在本次數(shù)據(jù)的收發(fā)處理完畢后,判斷該標(biāo)記為可接收新連接的進(jìn)程是否可接收新連接,若是,則監(jiān)聽(tīng)新連接,若否,則繼續(xù)處理已連接數(shù)據(jù)的收發(fā)。
      [0076]在一個(gè)實(shí)施例中,上述多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接方法還包括:將每組進(jìn)程中的各個(gè)進(jìn)程的連接數(shù)在各進(jìn)程間通過(guò)內(nèi)存共享。
      [0077]通過(guò)將各個(gè)進(jìn)程的連接數(shù)在各進(jìn)程間通過(guò)內(nèi)存共享,可方便各進(jìn)程間進(jìn)行通信。
      [0078]圖7為一個(gè)實(shí)施例中多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接系統(tǒng)的結(jié)構(gòu)框圖。如圖7所示,一種多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接系統(tǒng),包括分組模塊702、第一獲取模塊704、標(biāo)記模塊706、第二獲取模塊708、建立模塊710和計(jì)數(shù)模塊712。其中:
      [0079]分組模塊702用于按照配置的組數(shù)及總進(jìn)程數(shù)對(duì)進(jìn)程進(jìn)行分組得到每組的進(jìn)程數(shù)。
      [0080]具體地,組數(shù)和總進(jìn)程數(shù)可根據(jù)設(shè)備的處理能力及業(yè)務(wù)邏輯繁忙、阻塞情況進(jìn)行確定。通常,組數(shù)應(yīng)該盡可能少,以最大程序降低驚群的影響。但在業(yè)務(wù)邏輯繁忙、阻塞處理多時(shí),根據(jù)情況提高分組的組數(shù),提高對(duì)連接的響應(yīng)速度。總進(jìn)程數(shù)為N,組數(shù)為M,則每組的進(jìn)程數(shù)為K = N/M。
      [0081]第一獲取模塊704用于根據(jù)每組的進(jìn)程數(shù)獲取每組進(jìn)程中連接數(shù)最少的進(jìn)程。
      [0082]具體地,獲取每組進(jìn)程中各個(gè)進(jìn)程的連接數(shù),再比較各個(gè)進(jìn)程的連接數(shù),得到連接數(shù)最少的進(jìn)程。
      [0083]標(biāo)記模塊706用于將該每組進(jìn)程中連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程。
      [0084]具體地,將各組進(jìn)程中連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程,方便新連接到來(lái)時(shí),進(jìn)行接收新連接,避免組內(nèi)進(jìn)程競(jìng)爭(zhēng)。標(biāo)記可采用任意方式,如采用“I”標(biāo)記為可接收新連接等,不限于此。
      [0085]第二獲取模塊708用于獲取新連接。
      [0086]建立模塊710用于將該標(biāo)記為可接收新連接的進(jìn)程與該新連接建立連接。
      [0087]計(jì)數(shù)模塊712用于增加本進(jìn)程的連接數(shù)。
      [0088]具體地,標(biāo)記為可接收新連接的進(jìn)程與該新連接建立連接后,本進(jìn)程的連接數(shù)增加I。將該本進(jìn)程標(biāo)記為不可接收新連接,開(kāi)始在本進(jìn)程所在組內(nèi)再獲取連接數(shù)最少的進(jìn)程。
      [0089]標(biāo)記模塊706還用于將該本進(jìn)程標(biāo)記為不可接收新連接。
      [0090]第一獲取模塊704還用于在再該標(biāo)記模塊706將該本進(jìn)程標(biāo)記為不可接收新連接之后,再獲取每組進(jìn)程中連接數(shù)最少的進(jìn)程,以及該標(biāo)記模塊706再將該每組中連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程。
      [0091]上述多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接系統(tǒng),將設(shè)備的進(jìn)程分成多個(gè)組,每次獲取每組進(jìn)程中連接數(shù)最少的進(jìn)程,并將該連接數(shù)最少的進(jìn)程標(biāo)記為可接收新連接的進(jìn)程,獲取到新連接后,將可接收新連接的進(jìn)程與新連接建立連接,并將該可接收新連接的進(jìn)程標(biāo)記為不可接收新連接的進(jìn)程,實(shí)現(xiàn)了各組內(nèi)進(jìn)程不存在驚群影響,且每次選擇連接數(shù)最少的進(jìn)程作為可接收新連接的進(jìn)程,能均勻配置各進(jìn)程的連接數(shù),降低性能損耗,不會(huì)因進(jìn)程連接不均引起負(fù)載不均而導(dǎo)致處理器頻繁的調(diào)度額外增加中斷和上下文的切換。
      [0092]圖8為另一個(gè)實(shí)施例中多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接系統(tǒng)的結(jié)構(gòu)框圖。如圖8所示,一種多進(jìn)程設(shè)備的網(wǎng)絡(luò)連接系統(tǒng),除了包括分組模塊702、第一獲取模塊704、標(biāo)記模塊706、第二獲取模塊708、建立模塊710和計(jì)數(shù)模塊712,還包括判斷模塊714。其中:
      [0093]判斷模塊714用于在該第一獲取模塊704獲取每組進(jìn)程中連接
      當(dāng)前第2頁(yè)1 2 3 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1