【问题标题】:celery launches more processes than configuredcelery 启动的进程比配置的多
【发布时间】:2016-08-17 06:30:29
【问题描述】:

我正在运行一台 celery 机器,使用 redis 作为 broker,配置如下:

celery -A project.tasks:app worker -l info --concurrency=8

查看 celery 运行进程数时,我看到超过 8 个。

有什么我遗漏的吗?最大并发有限制吗?

这个问题导致巨大的内存分配,并且正在杀死机器。

【问题讨论】:

  • 你是在Posix还是Windows系统下?

标签: python celery


【解决方案1】:

使用默认设置,Celery 总是会比您要求的数量多启动一个进程。这个额外的进程是一种簿记进程,用于协调属于工作人员的其他进程。它与 Celery 的其余部分通信,并将任务分派给实际运行任务的进程。

切换到与“prefork”默认设置不同的池实现可能会减少创建的进程数量,但这会带来新的蠕虫。

【讨论】:

    【解决方案2】:

    对于并发问题,我没有建议。

    内存问题可以看~/.redis/redis.conf里的redis配置。你有一个maxmemory 属性,它修复了对任务的限制……

    Redis configuration

    【讨论】:

    • redis broker实际上在不同的机器上,内存问题是celery worker自己造成的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2018-10-07
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多