現(xiàn)在的服務(wù)器是 2核4GBswoole構(gòu)造的服務(wù)端。擁有600個客戶端(會持續(xù)增加)每分鐘客戶端會往服務(wù)端發(fā)送一個心跳,所以理論上是一次性會接收到600個心跳,然后扔往task進(jìn)行邏輯處理。我一個進(jìn)程的耗時大概是 200ms文檔:默認(rèn)設(shè)置為SWOOLE_CPU_NUM,最大不得超過SWOOLE_CPU_NUM * 1000
比如1個請求耗時100ms,要提供1000QPS的處理能力,那必須配置100個進(jìn)程或更多。但開的進(jìn)程越多,占用的內(nèi)存就會大大增加,而且進(jìn)程間切換的開銷就會越來越大。所以這里適當(dāng)即可。不要配置過大。
假設(shè)每個進(jìn)程占用40M內(nèi)存,100個進(jìn)程就需要占用4G內(nèi)存
task操作的次數(shù)必須小于onTask處理速度,如果投遞容量超過處理能力,task會塞滿緩存區(qū),導(dǎo)致worker進(jìn)程發(fā)生阻塞。worker進(jìn)程將無法接收新的請求那個我最大是可以設(shè)置 task_worker_num=>4000?。 1.什么情況下算投遞容量超過處理能力,是指第二次心跳上來之前第一次600條心跳還沒處理完嗎?2.task_max_request 和max_request設(shè)置進(jìn)程的最大任務(wù)數(shù)是什么意思?超過數(shù)值自動退出之后會開個新的進(jìn)程繼續(xù)運行嗎?。 之前的連接是否都會斷開。
- 1 回答
- 0 關(guān)注
- 400 瀏覽
添加回答
舉報
0/150
提交
取消