gpt4 book ai didi

django - Celery eventlet 工作线程使用过多的数据库连接

转载 作者:行者123 更新时间:2023-12-05 06:39:27 32 4
gpt4 key购买 nike

我有 2 个 celery worker,它们通过 eventlet 进行池化,配置如下:

celery multi start w1 w2 -A proj -l info --time-limit=600 -P eventlet -c 1000

当一次运行超过 100 个任务时,我遇到了错误:

OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections

我在 PostgreSQL 上运行最多。连接数设置为默认值 100。

根据我在网上阅读的内容,我认为池中的工作线程将共享相同的数据库连接。但是,我的似乎尝试为每个线程创建一个连接,这就是发生错误的原因。

有什么想法吗?

谢谢!

最佳答案

Django 有(或曾有?)空闲 数据库连接重用以避免为每个请求创建新连接的开销。空闲重用与这种情况无关。

Django 从来没有限制 数据库连接池。 (如有错误请指正)

考虑整体设计:

  • 您需要同时执行多少个任务? (实数通常不是 10 的好次方)
  • 您的数据库可以维持来自此应用程序的同时连接数?
  • 您是否需要设置人为瓶颈(池)或是否需要增加限制并使用可用硬件?

考虑使用外部 [Postgresql 连接池](方括号中的谷歌术语)或在您的应用程序中的某处包含一个。

关于django - Celery eventlet 工作线程使用过多的数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44548659/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com