PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah ada batas waktu untuk koneksi PostgreSQL yang menganggur?

Sepertinya Anda mengalami kebocoran koneksi di aplikasi Anda karena gagal menutup koneksi gabungan . Anda tidak mengalami masalah hanya dengan <idle> in transaction sesi, tetapi dengan terlalu banyak koneksi secara keseluruhan.

Memutus koneksi bukanlah jawaban yang tepat untuk itu, tetapi ini adalah solusi sementara yang OK.

Daripada memulai kembali PostgreSQL untuk mem-boot semua koneksi lain dari database PostgreSQL, lihat:Bagaimana cara melepaskan semua pengguna lain dari database postgres? dan Bagaimana cara menjatuhkan database PostgreSQL jika ada koneksi aktif ke sana? . Yang terakhir menunjukkan kueri yang lebih baik.

Untuk menyetel batas waktu, seperti yang disarankan @Doon, lihat Bagaimana cara menutup koneksi idle di PostgreSQL secara otomatis?, yang menyarankan Anda untuk menggunakan PgBouncer sebagai proxy untuk PostgreSQL dan mengelola koneksi idle. Ini adalah ide yang sangat bagus jika Anda memiliki aplikasi buggy yang membocorkan koneksi; Saya sangat kuat merekomendasikan untuk mengonfigurasi PgBouncer.

Keepalive TCP tidak akan berfungsi di sini, karena aplikasi masih terhubung dan hidup, seharusnya tidak.

Di PostgreSQL 9.2 dan yang lebih baru, Anda dapat menggunakan state_change baru kolom timestamp dan state bidang pg_stat_activity untuk mengimplementasikan penuai koneksi idle. Minta tugas cron menjalankan sesuatu seperti ini:

SELECT pg_terminate_backend(pid)
    FROM pg_stat_activity
    WHERE datname = 'regress'
      AND pid <> pg_backend_pid()
      AND state = 'idle'
      AND state_change < current_timestamp - INTERVAL '5' MINUTE;

Dalam versi yang lebih lama, Anda perlu menerapkan skema rumit yang melacak saat koneksi tidak aktif. Jangan ganggu; cukup gunakan pgbouncer.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengimpor shapefile di postgresql di linux menggunakan pgadmin 4

  2. Bagaimana Asin() Bekerja di PostgreSQL

  3. Melarikan diri dari nilai SEPERTI SQL untuk Postgres dengan psycopg2

  4. psql:server menutup koneksi secara tidak terduga

  5. Simpan dan ambil gambar di Postgresql menggunakan Java