如何决定双核机器中 Celery 使用的并发性(针对 API 请求和数据库查询绑定)

How to decide what concurrency to use for Celery in a two core machine (for API Requests & DB Queries bound)

我有几个 Celery worker 执行的任务并不总是那么快。这些任务通常是一堆 HTTP 请求和数据库查询(在 SQLAlchemy 后面使用 pyscopg2)。我在 Kubernetes 中 运行 并且 CPU 使用率总是相当低(0.01 左右)。 Celery 自动将并发设置为 2(单个节点的核心数),但我想知道手动增加这个数字是否有意义。

我一直读到并发数(进程?)应该与核心数相同,但是如果工作人员不使用整个核心,难道不能更多吗?喜欢 concurrency=10 吗?或者那没有什么区别,我只是错过了进程和并发的要点?

我找不到相关信息。谢谢

一切都是真的。 Celery 自动将核心数设置为并发,因为它假定您将使用整个核心(CPU 密集型任务)。 听起来您可以增加并发性,因为您的任务正在执行更多 I/O 绑定任务(并且 CPU 处于空闲状态)。

为了安全起见,我会逐渐增加,先增加到5,监控,确保CPU没问题,然后再增加到10..