Процесс 'forkPoolworker-5' pid:111 завершился с 'сигналом 9 (SIGKILL)'

здравствуйте все, кто мне поможет? python:3.8

Django==4.0.4
celery==5.2.1

Я использую python/Django/celery, чтобы сделать кое-что, когда я получаю данные из hive по sql, мой celely worker получает эту ошибку "process 'forkPoolworker-5' pid:111 exited with 'signal 9 (SIGKILL)'", а затем, моя задача не используется для завершения и tcp connect закрывается! что я могу сделать для решения этой проблемы?

Я пытаюсь сделать:

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 поднимается системой, скорее всего, из-за памяти или хранения, проследите, сколько памяти занимает задача celery, запустив опцию -P solo или -c 1 и выделите достаточное количество памяти соответственно.

Для проверки использования памяти используйте pmap <pid> или ps -a -o rss,vsz. Пожалуйста, найдите rss и vsz для более подробной информации (вкратце rss - это оперативная память, а vsz - виртуальная память).

CELERYD_MAX_TASKS_PER_CHILD = 1 убивает процесс после каждого задания, поэтому CELERYD_MAX_MEMORY_PER_CHILD не влияет, т.е. рабочий ждет завершения задания, прежде чем применить ограничение на запущенный дочерний процесс.

Вернуться на верх