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

Npgsql dengan Pgbouncer di Kubernetes - pooling &keepalives

Anda umumnya berada di jalur yang benar dan analisis Anda tampaknya akurat. Beberapa komentar:

Opsi 2 (mengubah keepalives) akan membantu menghapus koneksi idle di kumpulan Npgsql yang telah rusak. Saat Anda menulis aplikasi Anda masih akan mengalami beberapa kegagalan (karena beberapa koneksi menganggur yang buruk mungkin tidak dapat dihapus tepat waktu). Tidak ada alasan khusus untuk berpikir ini akan menyebabkan masalah lebih lanjut - ini seharusnya cukup aman untuk diaktifkan.

Opsi 3 memang bermasalah untuk perf, karena koneksi TCP ke pgbouncer harus dibuat setiap kali koneksi database diperlukan. Ini juga tidak akan menyediakan mekanisme anti-gagal 100%, karena pgbouncer mungkin masih putus saat koneksi sedang digunakan.

Pada akhirnya, Anda bertanya tentang ketahanan dalam menghadapi kegagalan jaringan/server yang sewenang-wenang, yang bukan hal yang mudah untuk dicapai. Satu-satunya cara yang 100% andal untuk menangani ini adalah dalam aplikasi Anda, melalui lapisan khusus yang akan mencoba kembali operasi ketika pengecualian sementara terjadi. Anda mungkin ingin melihat Polly , dan perhatikan bahwa Npgsql sedikit membantu kami dengan mengekspos IsTransient pengecualian yang dapat digunakan sebagai pemicu untuk mencoba lagi (Entity Framework Core juga menyertakan "strategi coba lagi" yang serupa). Jika Anda menempuh jalan ini, perhatikan bahwa transaksi sangat sulit ditangani dengan benar.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri postgres jsonb berdasarkan nilai terlepas dari kuncinya

  2. kesalahan menginstal psycopg2, perpustakaan tidak ditemukan untuk -lssl

  3. Tidak dapat bergabung dan memilih di Sekuel -- PG::SyntaxError

  4. Membuat kueri beberapa tabel dengan hubungan yang kompleks

  5. Bagaimana cara menggabungkan bilangan bulat di postgresql?