task_worker_num

配置Task进程的数量,配置此参数后将会启用task功能。所以Server务必要注册onTaskonFinish2个事件回调函数。如果没有注册,服务器程序将无法启动。

  • Task进程是同步阻塞的,配置方式与Worker同步模式一致
  • 最大值不得超过SWOOLE_CPU_NUM * 1000

计算方法

  • 单个task的处理耗时,如100ms,那一个进程1秒就可以处理1/0.1=10个task
  • task投递的速度,如每秒产生2000个task
  • 2000/10=200,需要设置task_worker_num => 200,启用200个task进程

Task进程内不能使用swoole_server->task方法
Task进程内不能使用swoole_mysqlswoole_redisswoole_event等异步IO函数


  • 1011100铭

    task_worker 数量设置多少比较合理?

  • Rango-韩天峰

    看你投递的速度和处理能力。

  • select

    怎么设置同步还是异步模式呢?

  • 老秦

    task进程在一段时间后不断输出 gettimeofday({1468023831, 2293}, NULL) = 0 cpu 100%

  • 老秦

    请关注一下 task进程运行一段时间后死循环的问题

  • Bacysoft

    怎么我发现,开启Task以后,没有任何任务投递,然后 Task 进程不断的被创建然后再销毁,是这样的吗?

  • 包赢不输

    需要一直定时处理的任务适合放在task里面吗?比如检查用户阅读文章的数量,达到一定阅读量,向用户发送信息。如果放在task里面,这个task就永远不会结束了,会一直占用着,是这样吗?

  • 如果TASK进程个数可以像FPM那样弹性伸缩就好了

  • 无枪草民

    task_max_request跟这个有什么关系吗? task每秒10个,处理每个为200秒,task_worker_num设为5,也能正常处理下去。 stats的task_queue_num也很小。才5,6的样子。看不懂了。