国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

worker進程數(shù)設(shè)置

aguai

workerman模型中,如果由于worker進程數(shù)設(shè)置不夠,可能會導(dǎo)致新來的請求無法及時處理嗎?會發(fā)生什么情況?(不討論AsyncTcpConnection那種方案)主要是想了解會有queue嗎?這部分是wm處理還是系統(tǒng)處理?因為有時候worker可能只是某一時會不夠,大多數(shù)時沒問題,設(shè)置太大不好。

7178 2 0
2個回答

walkor 打賞

workerman模型中,如果由于worker進程數(shù)設(shè)置不夠,可能會導(dǎo)致新來的請求無法及時處理嗎?

會。

會發(fā)生什么情況?

會出現(xiàn)響應(yīng)延遲。

主要是想了解會有queue嗎?

系統(tǒng)為每個socket連接分配了一個socket讀緩沖區(qū)(默認8k),用來緩沖客戶端發(fā)來的請求數(shù)據(jù)。worker空閑時會從這個緩沖區(qū)讀出請求數(shù)據(jù),然后處理這個請求,處理完畢后如果緩沖區(qū)還有數(shù)據(jù),則繼續(xù)處理,是一個循環(huán)。所以這個socket讀緩沖區(qū)其實可以看做一個queue,用來緩沖請求。如果這個緩沖滿了,則系統(tǒng)內(nèi)核將停止接收這個客戶端發(fā)來的后續(xù)數(shù)據(jù),直到讀緩沖區(qū)有數(shù)據(jù)被worker取走。

同樣客戶端也有一個發(fā)送緩沖區(qū)(默認8k,也可以看做一個queue),用來緩沖發(fā)送的請求數(shù)據(jù),當服務(wù)端的socket讀緩沖區(qū)滿時,客戶端仍然不停的向服務(wù)端發(fā)送數(shù)據(jù),客戶端的socket發(fā)送緩沖區(qū)也會被填滿。這時分兩種情況:
1、如果客戶端是阻塞發(fā)送,則會一直卡在發(fā)送接口,直到服務(wù)端socket讀緩沖區(qū)可寫或者超時(會有一個錯誤碼)。
2、如果是非阻塞發(fā)送,發(fā)送接口會立刻返回一個錯誤碼,錯誤碼類似當前數(shù)據(jù)不可寫,稍后重試

這部分是wm處理還是系統(tǒng)處理?

socket緩沖由系統(tǒng)處理,workerman從這個緩沖讀請求數(shù)據(jù)。

因為有時候worker可能只是某一時會不夠,大多數(shù)時沒問題,設(shè)置太大不好。

不夠一般是由于業(yè)務(wù)阻塞太多,處理一個請求或者某類比較耗時,應(yīng)該增加worker進程。比如cpu核數(shù)的8倍甚至更大。太大可能會增加進程切換開銷,但是如果不夠,則無法充分利用系統(tǒng)資源,尤其是cpu資源,導(dǎo)致業(yè)務(wù)延遲。

  • 暫無評論
aguai

great!!!
群主回答得太詳細了,耽誤群主這么多時間,讓我都有些不好意思了。

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??