Saya sedang mengembangkan aplikasi di Heroku dengan backend Postgresql. Secara berkala, saya mendapatkan pesan kesalahan ini ketika mencoba mengakses database, baik dari CLI maupun dari memuat halaman di server:
psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
Adakah yang melihat ini sebelumnya atau tolong bantu mengarahkan saya ke arah yang benar?
postgresql
heroku
nathancahill
sumber
sumber
heroku pgbackups
perintah untuk membuat cadangan meskipun ada kesalahan ini..bat
skrip di Windows untuk ini: difor /l %%x in (1, 1, 100) do ( start psql )
mana 100 adalah jumlah backend yang diinginkan.pg:backups copy
,pg:backups capture
, dengan menghubungkan ke daripgAdmin
di komputer saya sendiri, atau dengan cara lain saya bisa membayangkan. Bahkanpg:killall
tidak membantu. Satu jam kemudian, saya mencoba lagi dan koneksinya 50-50, jadi setelah beberapa upaya saya berhasilpg:backups copy
dan aplikasi saya kembali mengudara. Ini ... bukan hari yang menyenangkan. Jika Anda mencari ini di Google, minumlah secangkir air.Jawaban:
Anda juga perlu meningkatkan
max_connections
pengaturan konfigurasi atau (mungkin lebih baik) menggunakan penggabungan koneksi untuk merutekan sejumlah besar permintaan pengguna melalui kumpulan koneksi yang lebih kecil.https://wiki.postgresql.org/wiki/Number_Of_Database_Connections
sumber
pid
nilai untuk sesi dan menggunakanpg_terminate_backend()
fungsi untuk menghentikannya. Untuk menghindari masalah, pastikan untuk menutup koneksi dengan benar daripada secara tiba-tiba mematikan sisi klien.heroku pg:killall
Pengecualian ini terjadi ketika saya lupa menutup koneksi
sumber
Lihat Heroku “psql: FATAL: slot koneksi yang tersisa dicadangkan untuk koneksi pengguna super non-replikasi” :
Heroku terkadang mengalami masalah dengan load balancing database.
André Laszlo
,markshiz
dan saya semua melaporkan berurusan dengan itu di komentar tentang pertanyaan.Untuk menghemat panggilan dukungan, berikut tanggapan yang saya dapatkan dari Dukungan Heroku untuk masalah serupa:
sumber
Saya benar-benar mencoba mengimplementasikan penggabungan koneksi pada ujung django menggunakan:
https://github.com/gmcguire/django-db-pool
tetapi saya masih menerima kesalahan ini, meskipun menurunkan jumlah koneksi yang tersedia di bawah kuota DB pengembangan standar dari 20 koneksi terbuka.
Ada artikel di sini tentang cara memindahkan database postgresql Anda ke tingkat gratis / murah dari Amazon RDS. Ini akan memungkinkan Anda untuk mengatur
max_connections
lebih tinggi. Ini juga akan memungkinkan Anda untuk mengumpulkan koneksi di tingkat database menggunakan PGBouncer.https://www.lewagon.com/blog/how-to-migrate-heroku-postgres-database-to-amazon-rds
MEMPERBARUI:
Heroku menanggapi tiket saya yang terbuka dan menyatakan bahwa database saya tidak dimuat dengan benar dan seimbang di jaringan mereka. Mereka mengatakan bahwa perbaikan sistem mereka harus mencegah masalah serupa di masa mendatang. Meskipun demikian, dukungan relokasi database saya secara manual dan kinerja secara nyata meningkat.
sumber
Mulai ulang database postgres Anda dengan perintah berikut:
sumber