Django django.db.utils.OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections
Django django.db.utils.OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections
File "/usr/local/lib/python3.7/dist-packages/psycopg2/__init__.py", line 126, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections
根据 Postgres 文档,当 Django 与 Postgres 数据库建立的连接数超过默认连接限制时,就会发生此错误。
- 我想知道 Django initiating/an 打开大量数据库连接的原因。
- 我想知道我们可以采取哪些最佳做法来防止它出现异常。
- 如何增加 Postgres 的默认连接限制?
#settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'xxxxx',
'USER': 'xxxxx',
'PASSWORD':'xxxxx',
'HOST':'localhost',
'PORT':'5432',
}
我相信这是在 Django 框架不进行数据库池化的情况下发生的。查看 Django 文档 (https://docs.djangoproject.com/en/3.2/ref/databases/#transaction-pooling-and-server-side-cursors) i could find a sugestion to user pgBouncer (http://www.pgbouncer.org/) 来解决这个问题。
File "/usr/local/lib/python3.7/dist-packages/psycopg2/__init__.py", line 126, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections
根据 Postgres 文档,当 Django 与 Postgres 数据库建立的连接数超过默认连接限制时,就会发生此错误。
- 我想知道 Django initiating/an 打开大量数据库连接的原因。
- 我想知道我们可以采取哪些最佳做法来防止它出现异常。
- 如何增加 Postgres 的默认连接限制?
#settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'xxxxx',
'USER': 'xxxxx',
'PASSWORD':'xxxxx',
'HOST':'localhost',
'PORT':'5432',
}
我相信这是在 Django 框架不进行数据库池化的情况下发生的。查看 Django 文档 (https://docs.djangoproject.com/en/3.2/ref/databases/#transaction-pooling-and-server-side-cursors) i could find a sugestion to user pgBouncer (http://www.pgbouncer.org/) 来解决这个问题。