Django超过了Postgres的最大连接数[英] Django exceeds maximum Postgres connections

本文是小编为大家收集整理的关于Django超过了Postgres的最大连接数的处理方法,想解了Django超过了Postgres的最大连接数的问题怎么解决?Django超过了Postgres的最大连接数问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在遇到一个django应用程序的问题,该应用程序超过了与async eventlet工人一起运行Gunicorn时,与Postgres同时连接(100).当连接限制到达应用程序时,应用程序开始返回500 -errors,直到建立新连接为止.

这是我的数据库配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'django',
        'USER': 'django',
        'HOST': 'postgres',
        'PORT': 5432,
        'CONN_MAX_AGE': 60,
    }   
}   

这是枪支开始的方式:

gunicorn --bind 0.0.0.0:8080 --worker-class eventlet --workers 5 myapp.wsgi:application

这些是安装的软件包:

  • djano v1.7
  • Gunicorn v19.3
  • Eventlet v0.17
  • psycopg2 v2.6

与Gunicorn工人一起运行时,Django是否无法在HTTP请求上重复使用连接?某种第三方数据库连接池是我唯一的选择吗?

更新15-03-23: CONN_MAX_AGE和异步枪支工人似乎存在问题.连接确实是持久的,但从未在任何顺序请求中重复使用,如这篇文章.设置CONN_MAX_AGE to 0迫使django在请求结束时关闭连接,防止未使用的持续连接形式搁置.

推荐答案

django没有数据库连接池.看看PGBOUNCER.这是一个轻巧的连接汇总,易于设置和配置:/pgbouncer

简而言之:您的Django应用程序连接到PGBOUNCER,并且它与Postgres具有一定的连接,因此永远不会超过最大连接限制.

本文地址:https://www.itbaoku.cn/post/1763884.html