大家好,谁帮助我?python: 3.8
Django==4.0.4
celery==5.2.1
我正在使用python/Django/芹菜做一些事情,当我通过sql从hive获取数据时,我的celely worker得到这个错误"进程'forkPoolworker-5' pid:111退出'信号9 (SIGKILL)'"然后,我的任务不被用来完成,tcp连接正在关闭!我怎么做才能解出来呢?
我试着做:
CELERYD_MAX_TASKS_PER_CHILD = 1 # 单work最多任务使用数
CELERYD_CONCURRENCY = 3 # 单worker最大并发数
CELERYD_MAX_MEMORY_PER_CHILD = 1024*1024*2 # 单任务可占用2G内存
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 * 3
-Ofair
,但这些不用于解决。
SIGKILL是由系统引发的,很可能是由于内存或存储,通过运行-P solo
选项或-c 1
来监视一个芹菜任务占用了多少内存,并相应地分配足够的内存。
使用pmap <pid>
或ps -a -o rss,vsz
查看内存占用情况。详细信息请搜索rss和vsz(简而言之,rss
是RAM,vsz
是虚拟内存)。
CELERYD_MAX_TASKS_PER_CHILD = 1
在每个任务结束后杀死进程,因此CELERYD_MAX_MEMORY_PER_CHILD
不影响ie worker在执行子进程运行限制之前等待任务完成。