Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Database for PostgreSQL instans server fleksibel menawarkan PgBouncer sebagai solusi pengumpulan koneksi bawaan. PgBouncer adalah fitur opsional yang dapat Anda aktifkan berdasarkan per database-server. Dukungan ini tersedia pada tingkat komputasi General Purpose dan Memory Optimized di jaringan akses publik dan akses privat.
PgBouncer berjalan pada komputer virtual (VM) yang sama dengan server database untuk instans server fleksibel Azure Database for PostgreSQL Anda. Postgres menggunakan model berbasis proses untuk koneksi, sehingga mempertahankan banyak koneksi menganggur menjadi mahal. Postgres mengalami batasan sumber daya saat server menjalankan lebih dari beberapa ribu koneksi. Keuntungan utama PgBouncer adalah untuk meningkatkan sambungan diam dan sambungan jangka pendek di server database.
PgBouncer menggunakan model ringan yang menggunakan I/O asinkron. Ini menggunakan koneksi Postgres hanya jika diperlukan - yaitu, saat berada di dalam transaksi terbuka atau saat kueri aktif. Model ini memungkinkan penskalakan hingga 10.000 koneksi dengan overhead rendah.
Versi PgBouncer yang disebarkan pada semua versi utama yang didukung dari mesin tersebut, di Azure Database for PostgreSQL, adalah 1.25.1. PgBouncer berjalan pada port 6432 di server database Anda. Anda dapat mengubah konfigurasi koneksi database aplikasi untuk menggunakan nama host yang sama, tetapi mengubah port menjadi 6432 untuk mulai menggunakan PgBouncer dan mendapat manfaat dari peningkatan penskalaan koneksi diam.
PgBouncer di Azure Database for PostgreSQL mendukung autentikasi Microsoft Entra (Azure AD).
Mengaktifkan dan mengonfigurasi PgBouncer
PgBouncer sangat berguna dalam aplikasi transaksional di mana churn koneksi yang sering dapat menurunkan performa. Ini diaktifkan secara default pada port 6432, dan Anda dapat menyambungkannya dengan menggunakan nama host yang sama dengan server PostgreSQL Anda, tetapi dengan port 6432 alih-alih port default 5432.
Untuk mengaktifkan PgBouncer, buka panel parameter Server di portal Azure, cari PgBouncer, dan ubah pengaturan pgbouncer.enabled ke true. Tidak perlu menghidupkan ulang server.
Anda dapat mengonfigurasi pengaturan PgBouncer dengan menggunakan parameter ini.
Nota
Daftar parameter server PgBouncer berikut ini terlihat di panel Parameter server hanya jika pgbouncer.enabled parameter server diatur ke true. Jika tidak, mereka sengaja disembunyikan.
| Nama Parameter | Description | Bawaan |
|---|---|---|
pgbouncer.default_pool_size |
Berapa banyak koneksi server yang diizinkan per pasangan pengguna/database. | 50 |
pgbouncer.ignore_startup_parameters |
Daftar parameter yang dipisahkan dengan koma yang dapat diabaikan PgBouncer karena akan ditangani oleh admin. | |
pgbouncer.max_client_conn |
Jumlah maksimum koneksi klien yang diizinkan. | 5000 |
pgbouncer.max_prepared_statements |
Ketika ini diatur ke nilai selain nol, PgBouncer melacak perintah terkait pernyataan yang disiapkan bernama pada tingkat protokol yang dikirim oleh klien dalam mode pooling transaksi dan pernyataan. | 0 |
pgbouncer.min_pool_size |
Tambahkan lebih banyak sambungan server ke kumpulan jika di bawah angka ini. | 0 |
pgbouncer.pool_mode |
Menentukan kapan koneksi server dapat digunakan kembali oleh klien lain. | transaksi |
pgbouncer.query_wait_timeout |
Waktu maksimum (dalam detik) kueri diizinkan menunggu untuk dieksekusi. Jika kueri tidak ditetapkan ke server selama waktu itu, klien terputus sambungan. | 120 |
pgbouncer.server_idle_timeout |
Jika koneksi server telah menganggur lebih dari sekian detik ini, koneksi server akan dihilangkan. Jika 0 maka batas waktu dinonaktifkan. | 600 |
pgbouncer.stats_users |
Daftar pengguna database yang dipisahkan koma yang diizinkan untuk menyambungkan dan menjalankan kueri baca-saja di konsol pgBouncer. |
Untuk informasi selengkapnya tentang konfigurasi PgBouncer, lihat dokumentasi pgbouncer.ini.
Keuntungan
Dengan menggunakan fitur PgBouncer bawaan dengan instans server fleksibel Azure Database for PostgreSQL Anda, Anda mendapatkan manfaat berikut:
Konvensi konfigurasi yang disederhanakan: Karena PgBouncer terintegrasi dengan instans server fleksibel Azure Database for PostgreSQL Anda, Anda tidak memerlukan penginstalan terpisah atau penyiapan kompleks. Anda dapat mengonfigurasinya langsung dari parameter server.
Keandalan layanan terkelola: PgBouncer menawarkan keuntungan dari layanan terkelola Azure. Misalnya, Azure mengelola pembaruan PgBouncer. Pembaruan otomatis menghilangkan kebutuhan akan pemeliharaan manual dan memastikan bahwa PgBouncer tetap up to date dengan fitur terbaru dan patch keamanan.
Support untuk berbagai jenis koneksi: PgBouncer di Azure Database for PostgreSQL menyediakan dukungan untuk koneksi publik dan privat. Anda dapat menggunakannya untuk membuat koneksi aman melalui jaringan privat atau terhubung secara eksternal, tergantung pada persyaratan spesifik Anda.
Ketersediaan tinggi dalam skenario failover: Jika server siaga dipromosikan ke peran utama selama failover, PgBouncer memulai ulang dengan mulus pada siaga yang baru saja dipromosikan. Anda tidak perlu membuat perubahan apa pun pada aplikasi string koneksi. Kemampuan ini membantu memastikan ketersediaan berkelanjutan dan meminimalkan gangguan pada kumpulan koneksi aplikasi.
Memantau PgBouncer
Metrics
Anda dapat menggunakan metrik PgBouncer untuk memantau performa proses PgBouncer, termasuk detail untuk koneksi aktif, koneksi diam, total koneksi yang dikumpulkan, dan jumlah kumpulan koneksi. Setiap metrik dipancarkan pada interval 1 menit dan memiliki riwayat hingga 93 hari . Pelanggan dapat mengonfigurasi pemberitahuan pada metrik dan juga mengakses dimensi metrik baru untuk memisahkan dan memfilter data metrik berdasarkan nama database.
Cara mengaktifkan metrik PgBouncer
- Untuk memantau metrik PgBouncer, pastikan bahwa fitur pgbouncer diaktifkan melalui parameter
pgbouncer.enabledserver dan parametermetrics.pgbouncer_diagnosticsmetrik diaktifkan. - Parameter ini bersifat dinamis dan tidak memerlukan mulai ulang instans.
- Metrik PgBouncer dinonaktifkan secara default.
Daftar metrik PgBouncer
| Nama tampilan | ID metrik | Unit | Description | Dimensi | Default diaktifkan |
|---|---|---|---|---|---|
| Koneksi klien aktif | client_connections_active |
Jumlah | Koneksi dari klien yang terkait dengan koneksi server fleksibel Azure Database for PostgreSQL. | DatabaseName | Tidak. |
| Menunggu koneksi dari klien | client_connections_waiting |
Jumlah | Koneksi dari klien yang sedang menunggu agar dilayani oleh koneksi server fleksibel Azure Database for PostgreSQL. | DatabaseName | Tidak. |
| Koneksi server aktif | server_connections_active |
Jumlah | Koneksi ke Azure Database untuk PostgreSQL server fleksibel yang saat ini sedang digunakan oleh koneksi klien. | DatabaseName | Tidak. |
| Koneksi server menganggur | server_connections_idle |
Jumlah | Koneksi ke Azure Database for PostgreSQL server fleksibel yang tidak aktif dan siap untuk melayani koneksi klien baru. | DatabaseName | Tidak. |
| Jumlah koneksi yang digabungkan | total_pooled_connections |
Jumlah | Jumlah koneksi terkelola secara gabungan saat ini. | DatabaseName | Tidak. |
| Jumlah kumpulan koneksi | num_pools |
Jumlah | Jumlah total kumpulan koneksi. | DatabaseName | Tidak. |
Pertimbangan untuk menggunakan metrik PgBouncer
- Metrik PgBouncer yang menggunakan dimensi DatabaseName memiliki batas 30 database .
- Pada SKU Burstable , batasnya adalah 10 database yang memiliki dimensi DatabaseName.
- Batas dimensi DatabaseName diterapkan ke kolom OID, yang mencerminkan urutan pembuatan untuk database.
Untuk informasi selengkapnya, lihat metrik PgBouncer.
Catatan
Azure Database for PostgreSQL Server Fleksibel menyediakan log PgBouncer untuk membantu Anda mengaudit aktivitas pengumpulan koneksi dan memecahkan masalah seperti penurunan koneksi, kegagalan autentikasi, atau kelelahan kumpulan. Log PgBouncer mencakup detail seperti kegagalan autentikasi, peristiwa siklus hidup koneksi, kesalahan, dan perubahan status server. Detail ini berguna untuk mengidentifikasi penyempitan koneksi dan anomali perilaku.
Mengaktifkan log
Aktifkan Pengaturan Diagnostik Log untuk menghasilkan log PgBouncer secara otomatis. Log Analytics mendukung dua jenis skema: diagnostik Azure dan Resource-Specific. Untuk informasi selengkapnya, lihat skema umum dan spesifik layanan untuk log sumber daya Azure.
Skema diagnostik Azure
- Log muncul dalam
AzureDiagnosticstabel. - Filter menggunakan:
Category == "PostgreSQLFlexPGBouncer".
- Log muncul dalam
SkemaResource-Specific
- Log muncul dalam
PGSQLPgBouncertabel. - Lebih mudah dikueri, format terstruktur.
- Log muncul dalam
Sampel kueri KQL
Skema diagnostik Azure:
AzureDiagnostics
| where Category == "PostgreSQLFlexPGBouncer"
| where LogicalServerName_s =~ "your-server-name"
| order by TimeGenerated desc
Skema Spesifik Sumber Daya:
PGSQLPgBouncer
| where _ResourceId =~ "your-server-name"
| order by TimeGenerated desc
Nota
Nama bidang dan format skema mungkin sedikit bervariasi tergantung pada skema yang digunakan (Konsolidasi vs Resource-Specific).
Konsol admin
PgBouncer juga menyediakan database internal yang disebut pgbouncer. Saat menyambungkan ke database tersebut, Anda dapat menjalankan SHOW perintah yang menyediakan informasi tentang status PgBouncer saat ini.
Untuk menyambungkan ke pgbouncer database:
Atur
pgBouncer.stats_usersparameter ke nama pengguna yang ada (misalnya,myUser), dan terapkan perubahan.Sambungkan ke
pgbouncerdatabase sebagai pengguna ini dan atur port sebagai6432:psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password=<password> sslmode=require"
Setelah Anda tersambung ke database, gunakan SHOW perintah untuk melihat statistik PgBouncer:
-
SHOW HELP: Cantumkan semua perintah yang tersediaSHOW. -
SHOW POOLS: Tampilkan jumlah koneksi di setiap status untuk setiap kumpulan. -
SHOW DATABASES: Tampilkan batas koneksi yang diterapkan saat ini untuk setiap database. -
SHOW STATS: Tampilkan statistik pada permintaan dan lalu lintas untuk setiap database.
Untuk informasi selengkapnya tentang perintah PgBouncer SHOW , lihat Konsol admin.
Mengalihkan aplikasi Anda untuk menggunakan PgBouncer
Untuk mulai menggunakan PgBouncer, ikuti langkah-langkah berikut:
Sambungkan ke server database Anda, tetapi gunakan port 6432 alih-alih port reguler 5432. Verifikasi bahwa koneksi ini berfungsi.
psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password=<password> sslmode=require"Uji aplikasi Anda di lingkungan QA terhadap PgBouncer, untuk memastikan Anda tidak memiliki masalah kompatibilitas. Proyek PgBouncer menyediakan matriks kompatibilitas, dan kami merekomendasikan pengumpulan transaksi untuk sebagian besar pengguna.
Ubah aplikasi produksi Anda untuk menyambungkan ke port 6432 alih-alih 5432. Pantau kesalahan sisi aplikasi apa pun yang mungkin menunjuk ke masalah kompatibilitas.
PgBouncer dengan ketersediaan tinggi redundansi zona
Di server zona redundan dengan ketersediaan tinggi (HA), server utama menjalankan PgBouncer. Anda dapat terhubung ke PgBouncer di server utama melalui port 6432. Setelah failover, sistem memulai ulang PgBouncer pada siaga yang baru saja dipromosikan, yang sekarang berfungsi sebagai server utama. Jadi, string koneksi aplikasi Anda tetap sama setelah terjadi failover.
PgBouncer dengan kluster elastis
PgBouncer juga tersedia untuk kluster elastis. Setiap node dalam kluster elastis memiliki instans PgBouncer sendiri. Setelah Anda mengaktifkannya, port 6432 akan mengarahkan ke PgBouncer pada node koordinator cluster elastis. Selain itu, port 8432 mengarah ke instans PgBouncer yang berjalan pada simpul pekerja di kluster.
Keterbatasan
- Fitur PgBouncer saat ini tidak mendukung tingkat komputasi server Burstable. Jika Anda mengubah tingkat komputasi dari Tujuan Umum atau Memori yang Dioptimalkan menjadi Burstable, Anda kehilangan kemampuan PgBouncer bawaan.
- Setiap kali server dijalankan ulang selama operasi skala, HA failover, atau restart, sistem juga menjalankan ulang PgBouncer dan VM. Anda kemudian perlu membuat ulang koneksi yang ada.
- Portal tidak menampilkan semua parameter PgBouncer. Setelah mengaktifkan PgBouncer dan menyimpan parameter, Anda perlu menutup panel Parameter server (misalnya, pilih Gambaran Umum) lalu kembali ke panel Parameter server untuk melihat semua parameter.
- Anda tidak dapat menggunakan mode kumpulan pernyataan bersama dengan pernyataan yang disiapkan. Versi PgBouncer saat ini menambahkan dukungan untuk pernyataan yang disiapkan di dalam mode transaksi. Dukungan ini dapat diaktifkan dan dikonfigurasi melalui parameter max_prepared_statements. Mengatur parameter ini di atas nilai default 0 mengaktifkan dukungan untuk pernyataan yang disiapkan. Dukungan ini hanya berlaku untuk pernyataan yang disiapkan tingkat protokol. Untuk sebagian besar bahasa pemrograman, dukungan ini berarti bahwa aplikasi menggunakan fungsi libpqPQprepare pada klien, mengirim perintah tingkat protokol yang dapat disadap PgBouncer, daripada mengeluarkan perintah SQL dinamis yang mirip dengan PREPARE proc AS, yang mengirim teks yang tidak akan ditafsirkan PgBouncer dengan benar. Untuk memeriksa batasan lain dari mode kumpulan yang Anda pilih, lihat dokumentasi PgBouncer.
- Jika Anda menyebarkan PgBouncer sebagai fitur, itu menjadi titik kegagalan tunggal potensial. Jika fitur PgBouncer tidak berfungsi, fitur ini dapat mengganggu seluruh kumpulan koneksi database dan menyebabkan waktu henti untuk aplikasi. Untuk mengurangi titik kegagalan tunggal, Anda dapat menyiapkan beberapa instans PgBouncer di belakang sebuah penyeimbang muatan untuk availabilitas tinggi pada VM Azure.
- PgBouncer adalah aplikasi ringan yang menggunakan arsitektur utas tunggal. Desain ini sangat bagus untuk sebagian besar beban kerja aplikasi. Tetapi dalam aplikasi yang membuat sejumlah besar koneksi berumur pendek, desain ini dapat memengaruhi performa PgBouncer dan membatasi kemampuan Anda untuk menskalakan aplikasi Anda. Anda mungkin perlu mencoba salah satu pendekatan ini:
- Distribusikan beban koneksi di beberapa instans PgBouncer pada VM Azure.
- Pertimbangkan solusi alternatif, termasuk solusi multithreaded seperti PgCat, pada VM Azure.
Penting
Parameter pgbouncer.client_tls_sslmode untuk fitur PgBouncer bawaan tidak digunakan lagi dalam Azure Database for PostgreSQL.
Saat Anda menerapkan TLS/SSL untuk koneksi ke instans server fleksibel Azure Database for PostgreSQL dengan mengatur parameter server require_secure_transport ke ON, TLS/SSL secara otomatis diberlakukan untuk koneksi ke fitur PgBouncer bawaan. Pengaturan ini aktif secara default saat Anda membuat instans server fleksibel Azure Database for PostgreSQL baru dan mengaktifkan fitur PgBouncer bawaan. Untuk informasi selengkapnya, lihat Konektivitas Aman dengan TLS di Azure Database for PostgreSQL.
Bagi pelanggan yang menginginkan manajemen yang disederhanakan, ketersediaan tinggi bawaan, konektivitas yang mudah dengan aplikasi dalam kontainer, dan kemampuan untuk menggunakan parameter konfigurasi paling populer, fitur PgBouncer bawaan adalah pilihan yang baik. Untuk pelanggan yang menginginkan skalabilitas multithread, kontrol penuh atas semua parameter, dan pengalaman debugging, menyiapkan PgBouncer pada VM Azure mungkin merupakan alternatif.
Konten terkait
- Strategi pembagian koneksi untuk Azure Database for PostgreSQL menggunakan PgBouncer
- Gambaran umum jaringan untuk Azure Database for PostgreSQL dengan akses publik
- Jaringan dengan akses privat untuk Azure Database for PostgreSQL