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

請求集中在某些進程

現(xiàn)象

有時候我們通過命令php start.php status 看到,請求被集中在特定的某些進程中處理,其它進程完全空閑。

搶占機制

workerman多個進程獲取連接的方式默認搶占式的,也就是說當客戶端有連接發(fā)起時,所有空閑的進程都有機會去獲取這個連接,快者先得。到底誰快,是由操作系統(tǒng)內(nèi)核調(diào)度決定的。操作系統(tǒng)可能會優(yōu)先選取最近一次使用的進程獲得cpu使用權(quán),因為cpu寄存器里可能還存在上個進程的上下文信息,這可以減少上下文切換開銷。所以當業(yè)務足夠快的時候或者壓測過程中,更容易出現(xiàn)連接集中被某些進程處理的情況,因為這個策略可以避免頻繁的進程切換,性能往往是最優(yōu)的,并不是什么問題。

輪詢機制

workerman可以通過設置 $worker->reusePort = true;的方式將獲取連接的方式改為輪詢的方式,輪詢的方式內(nèi)核會將連接近似平均的方式分配給所有進程,這樣所有的進程將會一起處理請求。

誤區(qū)

很多開發(fā)者認為所有進程都參與請求處理性能越好,實際上不一定。當業(yè)務足夠簡單時,參與處理請求的進程數(shù)越趨近于cpu核心數(shù)服務器吞吐量越高。例如4核服務器,進程數(shù)設置為4時,helloworld壓測QPS一般是最高的。如果參與處理的進程數(shù)超過cpu核數(shù)太多,進程上下文開銷越大,性能反而越差。而一般帶數(shù)據(jù)庫業(yè)務時,進程數(shù)設置為cpu核數(shù)的3倍-6倍性能可能會更好。

編輯于2024-03-13 17:37:19 完善本頁 +發(fā)起討論
贊助商