Я разрабатываю приложение на Heroku с серверной частью Postgresql. Периодически я получаю это сообщение об ошибке при попытке доступа к базе данных как из интерфейса командной строки, так и при загрузке страницы на сервере:
psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
Кто-нибудь видел это раньше или, пожалуйста, помогите мне указать в правильном направлении?
postgresql
heroku
nathancahill
источник
источник
heroku pgbackups
команду для создания резервной копии, несмотря на эту ошибку..bat
скрипт в Windows для этого:for /l %%x in (1, 1, 100) do ( start psql )
где 100 - желаемое количество бэкэндов.pg:backups copy
,pg:backups capture
подключившись к ней соpgAdmin
своего компьютера или каким-либо другим способом, который я мог себе представить. Дажеpg:killall
не помогло. Через час я попытался снова, и количество подключений составило 50-50, поэтому после нескольких попыток у меня все получилось,pg:backups copy
и мое приложение снова в воздухе. Это был ... не веселый день. Если вы искали это в Google, выпейте чашку воды.Ответы:
Вам нужно либо увеличить параметр
max_connections
конфигурации, либо (возможно, лучше) использовать пул соединений для маршрутизации большого количества пользовательских запросов через меньший пул соединений.https://wiki.postgresql.org/wiki/Number_Of_Database_Connections
источник
pid
значения для сеансов и использоватьpg_terminate_backend()
функцию для их уничтожения. Чтобы избежать этой проблемы, убедитесь, что вы закрыли соединения должным образом, а не резко отключили клиентскую часть.heroku pg:killall
Это исключение произошло, когда я забыл закрыть соединения
источник
См. Heroku «psql: FATAL: оставшиеся слоты подключения зарезервированы для подключений суперпользователя без репликации» :
У Heroku иногда возникают проблемы с балансировкой нагрузки базы данных.
André Laszlo
,markshiz
и я все сообщил, что имел дело с этим в комментариях к вопросу.Чтобы избавить вас от звонка в службу поддержки, вот ответ, который я получил от службы поддержки Heroku по аналогичной проблеме:
источник
Я действительно пытался реализовать пул соединений на конце django, используя:
https://github.com/gmcguire/django-db-pool
но я все еще получал эту ошибку, несмотря на то, что количество доступных подключений было ниже стандартной квоты для разработки в 20 открытых подключений.
Здесь есть статья о том, как переместить вашу базу данных postgresql на бесплатный / дешевый уровень Amazon RDS. Это позволит вам установить
max_connections
более высокий уровень. Это также позволит вам объединять соединения на уровне базы данных с помощью PGBouncer.https://www.lewagon.com/blog/how-to-migrate-heroku-postgres-database-to-amazon-rds
ОБНОВИТЬ:
Heroku ответил на мой открытый запрос и заявил, что моя база данных неправильно сбалансирована по нагрузке в их сети. Они сказали, что усовершенствования их системы должны предотвратить подобные проблемы в будущем. Тем не менее, поддержка вручную переместила мою базу данных, и производительность заметно улучшилась.
источник
Перезагрузите базу данных postgres, выполнив следующую команду:
источник