V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
longmeier90
V2EX  ›  Celery

请教一个 celery 的 worker 进程越来越多的问题

  •  
  •   longmeier90 · 2022-06-27 09:43:24 +08:00 · 1279 次点击
    这是一个创建于 890 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我用 django 项目 配置了 celery ,因为 16 个队列,起了 6 个 worker 去消耗。但是我发现 celery 的 worker 数量会一直自动增加,不知道是为什么,更要命的是内存占用挺大的。服务器都报警了,我把 celery-worker 进程结束掉,内存就会降下来。celery-worker 我是用 supervisor 去启动的。

    django/celery-config 文件配置

    worker_concurrency = 6
    celeryd_concurrency = 6
    # 每个 worker 最多执行 10KB 任务被销毁, 可以防止内存泄露
    worker_max_tasks_per_child = 40
    # 单个任务的最大运行时间
    task_time_limit = 30 * 60
    
    

    supervisord/celry.ini

    
    directory=/data/code/prd/bolin/src
    command=/data/code/prd/bolin/env/bin/celery -A config worker --concurrency=6  -l INFO
    user=pyer
    autostart=true
    autorestart=true
    stopsignal=QUIT
    stopwaitsecs=60
    stopasgroup=true
    killasgroup=true
    
    5 条回复    2022-07-01 10:52:58 +08:00
    lsdvincent
        1
    lsdvincent  
       2022-06-27 09:59:29 +08:00
    设置个 --autoscale=4,2 最大最小 试试?
    julyclyde
        2
    julyclyde  
       2022-06-27 13:26:22 +08:00
    是不是有些任务卡住了没有执行完毕啊?
    longmeier90
        3
    longmeier90  
    OP
       2022-06-27 16:44:15 +08:00
    @lsdvincent worker_max_tasks_per_child = 40 应该是这个配置导致的,我把它去掉就没有问题啦。这个是让它自动销毁,然后启动新的 worker ,没想到没有销毁就启动新的 worker 啦
    bbbb
        4
    bbbb  
       2022-06-28 09:51:01 +08:00 via iPhone
    我用 mq+celery 的出现的是,任务过多,扭转不过来,会出现大量重复任务,导致 cpu 干满。查了资料,各种设置都没解决,最终解决办法任务不重要,停机,删除队列中所有任务。不重要的任务就没有花过多时间去纠结。刚好 celery 符合我的任务场景,是又爱又恨。
    julyclyde
        5
    julyclyde  
       2022-07-01 10:52:58 +08:00
    @longmeier90 那你应该研究一下为什么没有销毁啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1636 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:53 · PVG 00:53 · LAX 08:53 · JFK 11:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.