e1207 06:26:54.650322426 7649 wakeup_fd_pipe.c:52]管道 创建失败(24):太多的打开文件
e1207 06:26:54.651353661 12228 PLOTEMENION_QUEUE.C:850]
完成队列接下来失败: {"创建":"@1512628014.649848140","描述": 错误"," errno":24," file":" src/core/lib/iomgr/wakeup_fd_pipe.c"," file_line":53," os_error": 许多打开文件"," syscall":" pipe"}e1207 06:26:54.650492228 9620 WAKEUP_FD_PIPE.C:52]管道 创建失败(24):太多的打开文件
E1207 06:26:54.651371276 7649 EV_POLL_POSIX.C:893]
pollset_work:{"创建":"@1512628014.651362488","描述":" OS错误"," errno":24," file":" src/core/lib/iomgr/wakeup_fd_pipe.c"," file_line":53," os_error": 许多打开文件"," syscall":" pipe"}
我正在使用
celery version : celery==4.0.2
django version : Django==1.10
supervisor version: 3.2.0
python version: python 3.6
rabbitmq version : "RabbitMQ","3.6.10"
redis version: Redis-server v=3.0.6
任务由芹菜工人运行,芹菜工人有时由于某种原因失败而且该系统无法写出任何对日志的寻求,我只会得到我所显示的log是我上面显示的。
一旦任务失败了错误,例如弹出这些错误,并且我的系统进入挂起模式,我将重新启动工作过程,以便在系统中减少负载
我与主管一起经营该工人
在芹菜中,每个API命中打开一个新文件并不正确关闭它们,逐渐超过ulimit。
作为解决此问题的解决方案,您可以将CELERYD_MAX_TASKS_PER_CHILD
放在芹菜配置中。
这将迫使您的芹菜工人在一定数量的任务后重新启动。
例如:如果设置CELERYD_MAX_TASKS_PER_CHILD = 40
当每个工人完成40个任务时,它将重新启动。实际上,这将关闭该特定工人打开的所有打开文件。