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