首页 > 解决方案 > 芹菜池统计字段

问题描述

我试图了解芹菜统计数据pool::writes::avg显示的内容。从芹菜文档writes

特定于 prefork 池,这显示了在使用异步 I/O 时对池中每个进程的写入分布。

我的理解是all给定进程完成的总任务的百分比,是给定进程raw完成的任务数。但是avg告诉我什么?

我的一个子集celery -A proj inspect stats是:

        "pool": {
            "max-concurrency": 2,
            "max-tasks-per-child": "N/A",
            "processes": [
                23743,
                23744
            ],
            "put-guarded-by-semaphore": false,
            "timeouts": [
                0,
                0
            ],
            "writes": {
                "all": "58.06%, 41.94%",
                "avg": "48.39%",
                "inqueues": {
                    "active": 0,
                    "total": 2
                },
                "raw": "18, 13",
                "strategy": "fair",
                "total": 31
            }
        },

标签: celery

解决方案


如您所知,“pool.writes”统计信息特定于 prefork 池,它显示了使用异步 I/O 时池中每个进程的写入分布(来自 Celery 文档)

来自 bin/worker.py:

'avg': per(total / len(self.write_stats) if total else 0, total),

wherewrite_stats似乎是一个 collections.Counter 跟踪池中的进程。per(v, total) 是一个函数,它返回一个包含v/total百分比的字符串。我希望有 Celery 内部知识的人能提供更多关于这个的细节。


推荐阅读