数据库连接在Heroku Dyno启动上与Django-db-getventpool - max_conns不执行 我使用django,gunicorn与gevent和heroku上的django-db-getventpool(performance l dynos,web_concurrency = 17)。我的数据库连接在Dyno Startup上大大峰值,超过了体验...

问题描述 投票:0回答:0
(performance l dynos,web_concurrency = 17)。我的数据库连接在Dyno Startup上大大峰值,超过了预期的连接数。
预期的行为

我的设置:

MAX_CONNS=4(每个工人)

REUSE_CONNS=2
  • WEB_CONCURRENCY=17
  • (每点工人)
  • 产量6 dynos
  • 我希望每个Dyno最多保持68个连接(17个工人 * 4 max_conns)。但是,在启动时,我看到单个Dynos暂时持有150多个空闲连接,这有助于达到Heroku的500连接限制。
    关键问题
如果请求超过

MAX_CONNS

连接,django-db-dementpool会做什么?

请求排队并被迫等待连接释放?

或django-db-gerventpool忽略了
    MAX_CONNS
  • ,允许连接超过限制?
    
    
      为什么我在Dyno启动期间看到连接尖峰?
    • the the the the the to
    • ver ver ver ver申请峰值仅在启动期间发生,而不在正常流量下发生。
    • 检查了
      pg_stat_activity
      ,看到了同一dyno的许多空闲连接。 确保我没有泄漏芹菜,Cron Jobs或背景任务的连接。
    是否有人在Heroku上遇到了Django-DB-Enventpool遇到这个问题?关于它是否尊重
  • MAX_CONNS
  • 或连接是否可以超过高并发的限制的任何见解?

是的,它应该绝对尊重MAX_CONNS

    。我认为正在发生的事情是,您短暂地拥有工人的数量两倍。我面对AWS弹性豆stal的类似事物。罪魁祸首是一度是
  • eployment的罪魁祸首,它具有2倍的实例,因此是连接数量和击中DB连接限制的两倍。将其更改为批处理滚动就是所需的一切。不幸的是,Heroku似乎没有类似的选择。您能做的就是暂时将应用程序缩小
  • heroku ps:scale worker=5
  • ,在Dyno上进行工作并在完成后将其缩放
    heroku ps:scale worker=17
django postgresql heroku connection-pooling
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.