swoole taskWorker 会塞满缓冲区,缓冲区的大小是什么?

默认设置为SWOOLE_CPU_NUM,最大不得超过SWOOLE_CPU_NUM * 1000
比如1个请求耗时100ms,要提供1000QPS的处理能力,那必须配置100个进程或更多。但开的进程越多,占用的内存就会大大增加,而且进程间切换的开销就会越来越大。所以这里适当即可。不要配置过大。

假设每个进程占用40M内存,100个进程就需要占用4G内存
task操作的次数必须小于onTask处理速度,如果投递容量超过处理能力,task会塞满缓存区,导致worker进程发生阻塞。worker进程将无法接收新的请求
阅读 2.9k
1 个回答
  • 新版本 Swoole (>4.4) 没有缓存区限制
  • 老版本,这取决于操作系统内核参数 wmem_default 的设置,一般为 256K
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题