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

Menggunakan PgBouncer Connection Pooler untuk PostgreSQL dengan ClusterControl 1.8.2

Aplikasi modern seperti layanan mikro biasanya memerlukan banyak koneksi database, aplikasi tersebut juga menggunakan dan melepaskan koneksi tersebut dengan sangat cepat. Ketika PostgreSQL dikembangkan hampir 25 tahun yang lalu, pengembangnya memutuskan untuk tidak menggunakan utas untuk permintaan baru, tetapi untuk membuat proses baru untuk setiap permintaan. Sementara keputusan itu mungkin masuk akal saat itu, banyak koneksi bisa menjadi masalah serius hari ini. Salah satu solusi untuk masalah ini adalah kumpulan koneksi. Dalam posting blog ini, kita akan membahas PgBouncer Connection Pool dan bagaimana menggunakannya di ClusterControl 1.8.2.

Mengapa Menggunakan Kumpulan Koneksi

Ya, jawaban singkat untuk pertanyaan ini adalah solusi sederhana namun efektif dalam meningkatkan kinerja aplikasi Anda, sekaligus mengurangi beban pada server PostgreSQL. Mari kita bahas ini lebih dalam, ya?

Kolam koneksi dapat didefinisikan sebagai cache koneksi database terbuka yang dapat digunakan kembali oleh klien. Dengan kata lain, ini akan mengurangi beban pada database dengan mengurangi permintaan pada setiap koneksi baru. Koneksi baru tersebut pada dasarnya dihasilkan oleh proses postmaster setiap kali koneksi dibuat yang biasanya akan memakan waktu sekitar 2 hingga 3 MB memori per koneksi.

Tanpa kumpulan koneksi, ini akan menyebabkan masalah setiap kali jumlah koneksi terlalu tinggi karena postmaster perlu menyediakan banyak memori. Di PostgreSQL, kumpulan koneksi dikelola oleh PgBouncer.

Apa itu PgBouncer

PgBouncer adalah ringan, biner tunggal, open-source dan mungkin pooler koneksi paling populer untuk PostgreSQL. PgBouncer adalah utilitas sederhana yang melakukan satu hal, ia berada di antara database dan klien dan berbicara tentang protokol PostgreSQL, menyalin server PostgreSQL. Pada saat penulisan, versi terbaru dari PgBouncer adalah 1.15.0.

Mari kita lihat beberapa fitur terbaik yang ditawarkannya, dan mungkin alasan mengapa ia begitu populer di dunia PostgreSQL:

  • Ringan - hanya satu proses tunggal, semua permintaan dari klien dan tanggapan dari server melewati PgBouncer tanpa tambahan pemrosesan

  • Pengaturan Mudah – tidak memerlukan perubahan kode sisi klien dan salah satu penyatuan koneksi PostgreSQL paling sederhana untuk disiapkan

  • Skalabilitas &Performa – skalabilitasnya baik untuk sejumlah besar klien dan pada saat yang sama meningkatkan transaksi secara signifikan per detik yang dapat didukung oleh server PostgreSQL

Langkah-Langkah Menyiapkan PgBouncer Dengan ClusterControl

Ada beberapa langkah agar Anda dapat menginstal dan mengkonfigurasi PgBouncer dengan ClusterControl. Di bagian ini, kita akan melalui langkah-langkah asalkan Anda sudah menerapkan cluster PostgreSQL. Jika Anda belum memiliki cluster, Anda dapat mengikuti panduan di postingan blog ini.

Dari UI web Anda> Pilih PostgreSQL Cluster> Manage> Load Balancer> Pilih tab PgBouncer dan akan muncul screenshot berikut. Di sini Anda dapat memilih apakah akan Menyebarkan atau Mengimpor PgBouncer, dalam contoh ini, kami akan memilih Menyebarkan.:

Anda dapat memilih node dari dropdown, tentukan port, tambahkan ' Pengguna Admin PgBouncer' serta kata sandi dan klik 'Sebarkan PgBouncer'. Pekerjaan akan mulai berjalan dan status akan mulai muncul di layar ini, Anda juga dapat memantaunya di tab 'Aktivitas'.

Setelah node PgBouncer berhasil di-deploy, langkah selanjutnya adalah membuat kumpulan koneksi. Dari Cluster> Nodes> Pilih PgBouncer node dan screenshot berikut akan muncul:

Layar koneksi akan muncul setelah Anda mengklik 'Buat Kumpulan Koneksi' tombol. Anda dapat mengisi semua informasi dan memperbarui nilainya tergantung pada pengaturan Anda, untuk contoh ini kami akan menggunakan nilai default untuk 'Mode Pool', 'Ukuran Pool' dan 'Max Database Connection':

Di sini Anda perlu menambahkan informasi berikut:

  • Nama host PgBouncer:Pilih host node untuk membuat kumpulan koneksi.

  • Nama Kumpulan:Nama kumpulan dan database harus sama.

  • Nama pengguna:  Pilih pengguna dari node master PostgreSQL atau buat yang baru.

  • Mode Kumpulan:sesi (default), transaksi, atau kumpulan pernyataan.

    • sesi (default):Server dilepaskan kembali ke kumpulan setelah klien terputus

    • transaksi:Server dilepaskan kembali ke pool setelah transaksi selesai

    • pernyataan:Server dilepaskan kembali ke kumpulan setelah kueri selesai. Transaksi yang mencakup beberapa pernyataan tidak diizinkan dalam mode ini

  • Ukuran Kumpulan:Ukuran maksimum kumpulan untuk database ini. Nilai defaultnya adalah 20.

  • Koneksi Basis Data Maks:Mengonfigurasi maksimum seluruh basis data. Nilai defaultnya adalah 0, yang berarti tidak terbatas.

Kumpulan koneksi akan muncul setelah Anda mengklik tombol 'Selesai' sesuai tangkapan layar di bawah dan PgBouncer dan kumpulan koneksi sekarang siap:

Kesimpulan

Menggunakan kumpulan koneksi dan PgBouncer adalah beberapa langkah untuk meningkatkan kinerja aplikasi Anda dalam hal ketersediaan tinggi. Dengan ClusterControl, Anda dapat menggunakan PgBouncer serta membuat kumpulan koneksi dengan mudah dan cepat.

Untuk membuatnya lebih baik, kami juga menyarankan untuk menggunakan HAProxy selain PgBouncer. Fitur HAProxy tersedia di ClusterControl dan pada saat penulisan, versi yang kami gunakan adalah 1.8.23.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengaktifkan dukungan PostgreSQL di PHP di Mac OS X

  2. Mengonfigurasi PostgreSQL untuk Observabilitas

  3. Bagaimana cara menguji SQL ad-hoc saya dengan parameter di jendela kueri Postgres

  4. Bagaimana date_part() Bekerja di PostgreSQL

  5. Mendapatkan kunci utama yang tidak diketahui untuk tabel saat ID ada di sana