Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PostgreSQL için Azure Veritabanı esnek sunucu örnekleri, yerleşik bir bağlantı havuzu çözümü olarak PgBouncer sunar. PgBouncer, veritabanı başına sunucu temelinde etkinleştirebileceğiniz isteğe bağlı bir özelliktir. Hem genel erişim hem de özel erişim ağlarında Genel Amaçlı ve Bellek için İyileştirilmiş işlem katmanlarında desteklenir.
PgBouncer, PostgreSQL için Azure Veritabanı esnek sunucu örneğinizin veritabanı sunucusuyla aynı sanal makinede (VM) çalışır. Postgres, bağlantılar için işlem tabanlı bir model kullandığı için birçok boşta bağlantı tutmak pahalıdır. Postgres, sunucu birkaç binden fazla bağlantı çalıştırdığında kaynak kısıtlamalarıyla karşılaşır. PgBouncer'ın birincil avantajı, veritabanı sunucusunda boşta bağlantıları ve kısa süreli bağlantıları geliştirmektir.
PgBouncer, zaman uyumsuz G/Ç kullanan basit bir model kullanır. Postgres bağlantılarını yalnızca gerektiğinde, yani açık bir işlemin içinde veya bir sorgu etkinken kullanır. Bu model, düşük ek yükle 10.000 bağlantıya kadar ölçeklendirmeye olanak tanır.
PgBouncer, veritabanı sunucunuzdaki 6432 numaralı bağlantı noktasında çalışır. Uygulamanızın veritabanı bağlantı yapılandırmasını aynı ana bilgisayar adını kullanacak şekilde değiştirebilirsiniz, ancak PgBouncer kullanmaya başlamak ve boşta bağlantıların geliştirilmiş ölçeklendirmesinden yararlanmak için bağlantı noktasını 6432 olarak değiştirebilirsiniz.
PostgreSQL için Azure Veritabanı'ndaki PgBouncer , Microsoft Entra kimlik doğrulamasını (Azure AD) destekler.
Elastik kümelerle PgBouncer
PgBouncer esnek kümeler için de kullanılabilir. Elastik kümedeki her düğümün kendi PgBouncer örneği vardır. Etkinleştirildikten sonra, 6432 numaralı bağlantı noktası elastik küme düzenleyicisi düğümündeki PgBouncer'a yönlendirilir. Ayrıca, 8432 numaralı bağlantı noktası, kümede bulunan çalışan düğümler üzerindeki PgBouncer örneklerine yönlendirilecektir.
Şu anda, PostgreSQL için Azure Veritabanı'nda altyapının desteklenen tüm ana sürümlerinde dağıtılan PgBouncer sürümü 1.23.1'dir.
PgBouncer'ı etkinleştirme ve yapılandırma
PgBouncer özellikle sık bağlantı değişim sıklığının performansı düşürebileceği işlem uygulamalarında kullanışlıdır. Varsayılan olarak 6432 numaralı bağlantı noktasında etkinleştirilir ve PostgreSQL sunucunuzla aynı ana bilgisayar adını kullanarak ancak varsayılan bağlantı noktası 5432 yerine 6432 numaralı bağlantı noktasıyla bağlanabilirsiniz.
PgBouncer'ı etkinleştirmek için Azure portalında Sunucu parametreleri bölmesine gidin, PgBouncer'ı arayın ve ayarını olarak pgbouncer.enableddeğiştirintrue. Sunucuyu yeniden başlatmanız gerekmez.
Bu parametreleri kullanarak PgBouncer ayarlarını yapılandırabilirsiniz.
Uyarı
Aşağıdaki PgBouncer sunucu parametreleri listesi, Sunucu parametreleri. Aksi takdirde, bunlar kasıtlı olarak gizlenir.
| Parametre adı | Description | Varsayılan |
|---|---|---|
| pgbouncer.default_pool_size (pgbouncer varsayılan havuz boyutu) | Bu parametre değerini kullanıcı/veritabanı çifti başına bağlantı sayısına ayarlayın. | 50 |
| pgbouncer.ignore_startup_parameters | PgBouncer'ın yoksayabileceği virgülle ayrılmış bir parametre listesi girin. Örneğin, PgBouncer parametresini extra_float_digits yoksayabilir. Bazı parametrelere izin verilir; diğer tüm kullanıcılar hataya neden olur. Bu özellik, başlatma paketlerinde koşulsuz olarak ayarlanmasını extra_float_digits=2 isteyen aşırı bellekli Java Veritabanı Bağlantısı'na (JDBC) tolerans sağlamak için gereklidir. Kullandığınız kitaplık gibi pq: unsupported startup parameter: extra_float_digitshatalar bildiriyorsa bu seçeneği kullanın. |
|
| pgbouncer.max_client_conn | Bu parametre değerini, desteklemek istediğiniz PgBouncer istemci bağlantısı sayısı üst sınırına ayarlayın. Varsayılan değer 5000'dir ve izin verilebilen aralık 1 ile 50.000 arasındadır | 5000 |
| pgbouncer.max_prepared_statements | Bu sıfır olmayan bir değere ayarlandığında PgBouncer, istemci tarafından işlem ve deyim havuzu modunda gönderilen protokol düzeyinde adlandırılmış hazırlanmış deyimlerle ilgili komutları izler. | 0 |
| pgbouncer.min_pool_size (Bağlantı havuzunun minimum boyutu) | Bu numaranın altındaysa havuza daha fazla sunucu bağlantısı ekleyin. | 0 |
| pgbouncer.pool_mode | Bu parametre değerini işlem havuzu için TRANSACTION olarak ayarlayın (çoğu iş yükü için önerilen ayardır). | işlem |
| pgbouncer.query_wait_timeout | Sorguların yürütmeyi beklerken harcadığı en uzun süre (saniye cinsinden). Sorgu bu süre boyunca bir sunucuya atanmazsa istemcinin bağlantısı kesilir. | 120 |
| pgbouncer.server_idle_timeout | Bir sunucu bağlantısı bu kadar saniyeden fazla boşta kalırsa bırakılır. 0 ise zaman aşımı devre dışı bırakılır. | 600 |
| pgbouncer.stats_users (Kullanıcı istatistikleri) | pgBouncer konsolunda salt okunur sorgulara bağlanmasına ve çalıştırmasına izin verilen veritabanı kullanıcılarının virgülle ayrılmış listesi. |
PgBouncer yapılandırmaları hakkında daha fazla bilgi için pgbouncer.ini belgelerine bakın.
Fayda -ları
PostgreSQL için Azure Veritabanı esnek sunucu örneğiniz ile yerleşik PgBouncer özelliğini kullanarak şu avantajları elde edebilirsiniz:
Basitleştirilmiş yapılandırma kolaylığı: PgBouncer, PostgreSQL için Azure Veritabanı esnek sunucu örneğinizle tümleştirildiğinden ayrı bir yükleme veya karmaşık kuruluma gerek yoktur. Bunu doğrudan sunucu parametrelerinden yapılandırabilirsiniz.
Yönetilen hizmetin güvenilirliği: PgBouncer, Azure yönetilen hizmetlerinin avantajlarını sunar. Örneğin Azure, PgBouncer güncelleştirmelerini yönetir. Otomatik güncelleştirmeler, el ile bakım gereksinimini ortadan kaldırır ve PgBouncer'ın en son özellikler ve güvenlik yamaları ile güncel kalmasını sağlar.
Çeşitli bağlantı türleri için destek: PostgreSQL için Azure Veritabanı'ndaki PgBouncer hem genel hem de özel bağlantılar için destek sağlar. Özel ağlar üzerinden güvenli bağlantılar kurmak veya özel gereksinimlerinize bağlı olarak dışarıdan bağlanmak için bunu kullanabilirsiniz.
Yük devretme senaryolarında yüksek kullanılabilirlik: Bir yük devretme sırasında hazır bekleyen sunucu birincil role yükseltilirse, PgBouncer yeni yükseltilen beklemede sorunsuz bir şekilde yeniden başlatılır. Uygulama bağlantı dizesi herhangi bir değişiklik yapmanız gerekmez. Bu özellik sürekli kullanılabilirlik sağlamaya yardımcı olur ve uygulamanın bağlantı havuzunda kesintiyi en aza indirir.
PgBouncer İzleme
Metrics
Etkin bağlantılar, boşta bağlantılar, toplam havuza alınan bağlantılar ve bağlantı havuzlarının sayısı gibi PgBouncer işleminin performansını izlemek için PgBouncer ölçümlerini kullanabilirsiniz. Her ölçüm 1 dakikalık bir aralıkta yayılır ve 93 güne kadar geçmişe sahiptir. Müşteriler ölçümler üzerinde uyarılar yapılandırabilir ve ayrıca ölçüm verilerini veritabanı adına göre bölmek ve filtrelemek için yeni ölçüm boyutlarına erişebilir.
PgBouncer ölçümlerini etkinleştirme
- PgBouncer ölçümlerini izlemek için pgbouncer özelliğinin sunucu parametresi
pgbouncer.enabledaracılığıyla etkinleştirildiğinden ve ölçümler parametresininmetrics.pgbouncer_diagnosticsetkinleştirildiğinden emin olun. - Bu parametreler dinamiktir ve örneğin yeniden başlatılmasını gerektirmez.
- PgBouncer ölçümleri varsayılan olarak devre dışı bırakılır.
PgBouncer ölçümlerinin listesi
| Ekran adı | Metri̇k Kimlik | Birim | Description | Boyut | Varsayılan etkin |
|---|---|---|---|---|---|
| Etkin istemci bağlantıları | client_connections_active |
Sayı | PostgreSQL için Azure Veritabanı esnek sunucu bağlantısıyla ilişkili istemcilerden gelen bağlantılar. | DatabaseName | Hayı |
| İstemci bağlantısı bekleniyor | client_connections_waiting |
Sayı | PostgreSQL için Azure Veritabanı esnek sunucu bağlantısının hizmet vermesini bekleyen istemcilerden gelen bağlantılar. | DatabaseName | Hayı |
| Etkin sunucu bağlantıları | server_connections_active |
Sayı | Bir istemci bağlantısı tarafından kullanılmakta olan PostgreSQL esnek sunucu için Azure Veritabanı bağlantıları. | DatabaseName | Hayı |
| Boşta kalan sunucu bağlantıları | server_connections_idle |
Sayı | Boşta olan ve yeni bir istemci bağlantısına hizmet vermek için hazır olan PostgreSQL için Azure Veritabanı esnek sunucusuna bağlantılar. | DatabaseName | Hayı |
| Toplam havuz bağlantıları | total_pooled_connections |
Sayı | Şu anki havuzlanmış bağlantıların sayısı. | DatabaseName | Hayı |
| Bağlantı havuzu sayısı | num_pools |
Sayı | Toplam bağlantı havuzu sayısı. | DatabaseName | Hayı |
PgBouncer ölçümlerini kullanmayla ilgili dikkat edilmesi gerekenler
- DatabaseName boyutunu kullanan PgBouncer ölçümlerinin veritabanı sınırı 30'dur.
- Burstable SKU'da, DatabaseName boyutuna sahip 10 veri tabanı sınırı bulunmaktadır.
- DatabaseName boyut sınırı, veritabanı oluşturma sırasını yansıtan OID sütununa uygulanır.
Daha fazla bilgi edinmek için bkz . PgBouncer ölçümleri.
Yönetici konsolu
PgBouncer, adlı bir pgbouncer veritabanı da sağlar. Bu veritabanına bağlandığınızda, PgBouncer'ın geçerli durumu hakkında bilgi sağlayan komutları çalıştırabilirsiniz SHOW .
Veritabanına bağlanmak için pgbouncer :
parametresini
pgBouncer.stats_usersvar olan bir kullanıcının adına ayarlayın (örneğin,myUser) ve değişiklikleri uygulayın.pgbouncerVeritabanına bu kullanıcı olarak bağlanın ve bağlantı noktasını olarak6432ayarlayın:psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password=<password> sslmode=require"
Veritabanına bağlandıktan sonra PgBouncer istatistiklerini görüntülemek için komutları kullanın SHOW :
-
SHOW HELP: KullanılabilirSHOWtüm komutları listeleyin. -
SHOW POOLS: Her havuz için her durumdaki bağlantı sayısını gösterir. -
SHOW DATABASES: Her veritabanı için geçerli uygulanan bağlantı sınırlarını gösterin. -
SHOW STATS: Her veritabanı için istekler ve trafik istatistiklerini gösterin.
PgBouncer SHOW komutları hakkında daha fazla bilgi için bkz . Yönetim konsolu.
Uygulamanızı PgBouncer kullanacak şekilde değiştirme
PgBouncer'ı kullanmaya başlamak için şu adımları izleyin:
Veritabanı sunucunuza bağlanın ancak normal 5432 numaralı bağlantı noktası yerine 6432 numaralı bağlantı noktasını kullanın. Bu bağlantının çalıştığını doğrulayın.
psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password=<password> sslmode=require"Uyumluluk sorunları yaşamadığınızdan emin olmak için uygulamanızı PgBouncer'a karşı bir Soru-Cevap ortamında test edin. PgBouncer projesi bir uyumluluk matrisi sağlar ve çoğu kullanıcı için işlem havuzu oluşturmanızı öneririz.
Üretim uygulamanızı 5432 yerine 6432 numaralı bağlantı noktasına bağlanacak şekilde değiştirin. Uyumluluk sorunlarına işaret eden uygulama tarafı hatalarını izleyin.
Alanlar arası yedekli yüksek kullanılabilirlik içinde PgBouncer
Alanlar arası yedekli, yüksek kullanılabilirlik (HA) sunucularında birincil sunucu PgBouncer çalıştırır. 6432 numaralı bağlantı noktası üzerinden birincil sunucuda PgBouncer'a bağlanabilirsiniz. Yük devretme işleminden sonra PgBouncer, artık birincil sunucu olan yeni yükseltilen beklemede yeniden başlatılır. Bu nedenle, yük devretme sonrasında uygulamanız bağlantı dizesi aynı kalır.
PgBouncer'ı diğer bağlantı havuzlarıyla kullanma
Bazı durumlarda, uygulama tarafı bağlantı havuzunuz veya uygulama tarafınızda PgBouncer ayarlanmış olabilir (örneğin, Azure Kubernetes Service sepet). Bu gibi durumlarda, yerleşik PgBouncer özelliği boşta bağlantı ölçeklendirmenin avantajlarını sağladığından hala yararlı olabilir.
Veritabanı sunucusunda PgBouncer ile birlikte uygulama tarafı havuzu kullanmak yararlı olabilir. Burada uygulama tarafı havuzu, ilk bağlantı gecikme süresini kısaltır (bağlantıyı başlatmak için gidiş dönüş çok daha hızlı olduğundan) ve veritabanı tarafı PgBouncer boşta bağlantı ölçeklendirmesi sağlar.
Sınırlamalar
- PgBouncer özelliği şu anda Burstable sunucusu işlem katmanında desteklenmiyor. İşlem katmanını Genel Amaçlı veya Bellek için İyileştirilmiş olan Veri Artırılabilir olarak değiştirirseniz yerleşik PgBouncer özelliğini kaybedersiniz.
- Sunucu ölçeklendirme işlemleri, HA yük devretme veya yeniden başlatma sırasında yeniden başlatıldığında PgBouncer ve VM de yeniden başlatılır. Daha sonra mevcut bağlantıları yeniden kurmanız gerekir.
- Portalda tüm PgBouncer parametreleri gösterilmiyor. PgBouncer'ı etkinleştirdikten ve parametreleri kaydettikten sonra Sunucu parametreleri bölmesini kapatmanız (örneğin, Genel Bakış'ı seçmeniz) ve ardından Sunucu parametreleri bölmesine geri dönmeniz gerekir.
- Deyim havuzu modlarını hazırlanmış deyimlerle birlikte kullanamazsınız. PgBouncer'ın geçerli sürümü, işlem modunda hazırlanan deyimler için destek ekledi. Bu destek max_prepared_statements parametresi aracılığıyla etkinleştirilebilir ve yapılandırılabilir. Bu parametrenin varsayılan 0 değerinin üzerine ayarlanması, hazırlanan deyimler için desteği açar. Bu destek yalnızca protokol düzeyinde hazırlanmış deyimler için geçerlidir. Çoğu programlama dili için bu, istemcide PQprepare libpq işlevini kullandığımız, PgBouncer'ın araya girebileceği protokol düzeyinde komutlar gönderdiğimiz anlamına gelir. Bu komut, PgBouncer'ın doğru yorumlayacağı metni gönderen PREPARE proc AS'ye benzer dinamik bir SQL komutu göndermek yerine. Seçtiğiniz havuz modunun diğer sınırlamalarını denetlemek için PgBouncer belgelerine bakın.
- PgBouncer bir özellik olarak dağıtılırsa, olası bir hata noktası haline gelir. PgBouncer özelliği kapalıysa, veritabanı bağlantı havuzunun tamamını kesintiye uğratabilir ve uygulama için kapalı kalma süresine neden olabilir. Tek hata noktasını azaltmak için, Azure VM'lerinde yüksek kullanılabilirlik için bir yük dengeleyicinin arkasında birden çok PgBouncer örneği ayarlayabilirsiniz.
- Azure AD Kimlik Doğrulaması ile Belirteç Boyutu Kısıtlaması - Çok sayıda grup üyeliğine sahip kullanıcılar, belirteç boyutu kısıtlaması nedeniyle PgBouncer üzerinden bağlanamaz. Az sayıda grubu olan uygulamalar, hizmetler ve kullanıcılar çalışır.
- PgBouncer, tek iş parçacıklı mimari kullanan basit bir uygulamadır. Bu tasarım çoğu uygulama iş yükü için mükemmeldir. Ancak çok sayıda kısa süreli bağlantı oluşturan uygulamalarda bu tasarım pgBouncer performansını etkileyebilir ve uygulamanızı ölçeklendirme yeteneğinizi sınırlayabilir. Şu yaklaşımlardan birini denemeniz gerekebilir:
- Bağlantı yükünü Azure VM'lerindeki birden çok PgBouncer örneğine dağıtın.
- Azure VM'lerinde PgCat gibi çok iş parçacıklı çözümler de dahil olmak üzere alternatif çözümleri göz önünde bulundurun.
Önemli
PostgreSQL için Azure Veritabanı'nda yerleşik PgBouncer özelliğinin parametresi pgbouncer.client_tls_sslmode kullanım dışı bırakıldı.
PostgreSQL için Azure Veritabanı esnek sunucu örneğine yapılan bağlantılarda TLS/SSL, require_secure_transport sunucu parametresi olarak ayarlandığında, yerleşik PgBouncer özelliğine olan bağlantılarda TLS/SSL otomatik olarak uygulanır. Yeni bir PostgreSQL için Azure Veritabanı esnek sunucu örneği oluşturduğunuzda ve yerleşik PgBouncer özelliğini etkinleştirdiğinizde bu ayar varsayılan olarak açıktır. Daha fazla bilgi için bkz . PostgreSQL için Azure Veritabanı'nda TLS ile güvenli bağlantı.
Basitleştirilmiş yönetim, yerleşik yüksek kullanılabilirlik, kapsayıcılı uygulamalarla kolay bağlantı ve en popüler yapılandırma parametrelerini kullanabilmek isteyen müşteriler için yerleşik PgBouncer özelliği iyi bir seçimdir. Çok iş parçacıklı ölçeklenebilirlik, tüm parametrelerin tam denetimi ve hata ayıklama deneyimi isteyen müşteriler için, Azure VM'lerinde PgBouncer'ı ayarlamak alternatif olabilir.