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.
ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Esnek Sunucu
esnek sunucu tekliflerini PostgreSQL için Azure VeritabanıYerleşik bağlantı havuzu çözümü olarak PgBouncer. 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 için 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ı esnek sunucudaki PgBouncer, Microsoft Entra kimlik doğrulamayı (Azure AD) destekler.
PgBouncer'ı etkinleştirme ve yapılandırma
PgBouncer'ı etkinleştirmek için Azure portalında Sunucu parametreleri bölmesine gidin, PgBouncer'ı arayın ve ayarını olarak pgbouncer.enabled
değiştirintrue
. Sunucuyu yeniden başlatmanız gerekmez.
Bu parametreleri kullanarak PgBouncer ayarlarını yapılandırabilirsiniz.
Not
Aşağıdaki PgBouncer sunucu parametreleri listesi, Sunucu parametreleritrue
. Aksi takdirde, bunlar kasıtlı olarak gizlenir.
Parametre adı | Açıklama | 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_digits hatalar 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 | Kategori 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.
PgBouncer sürümü
Şu anda, PostgreSQL için Azure Veritabanı Esnek Sunucu'da altyapının desteklenen tüm ana sürümlerine (17 (önizleme), 16, 15, 14, 13, 12, 11) dağıtılan PgBouncer sürümü 1.22.1'dir.
Sosyal haklar
Esnek PostgreSQL için Azure Veritabanı sunucu ile yerleşik PgBouncer özelliğini kullanarak şu avantajları elde edebilirsiniz:
Basitleştirilmiş yapılandırma kolaylığı: PgBouncer esnek PostgreSQL için Azure Veritabanı sunucuyla 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: esnek PostgreSQL için Azure Veritabanı sunucudaki 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
Ölçümler
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.enabled
aracılığıyla etkinleştirildiğinden ve ölçümler parametresininmetrics.pgbouncer_diagnostics
etkinleş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
Görünen ad | Ölçüm Kimliği | Birim | Açıklama | 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. | Veritabanı Adı | Hayır |
İ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. | Veritabanı Adı | Hayır |
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ı. | Veritabanı Adı | Hayır |
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. | Veritabanı Adı | Hayır |
Toplam havuz bağlantıları | total_pooled_connections |
Sayı | Şu anki havuzlanmış bağlantıların sayısı. | Veritabanı Adı | Hayır |
Bağlantı havuzu sayısı | num_pools |
Sayı | Toplam bağlantı havuzu sayısı. | Veritabanı Adı | Hayır |
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_users
var olan bir kullanıcının adına ayarlayın (örneğin,myUser
) ve değişiklikleri uygulayın.pgbouncer
Veritabanına bu kullanıcı olarak bağlanın ve bağlantı noktasını olarak6432
ayarlayı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ılabilirSHOW
tü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
Yerleşik PgBouncer özelliğinin parametresi pgbouncer.client_tls_sslmode
esnek PostgreSQL için Azure Veritabanı sunucuda kullanım dışı bırakılmıştır.
esnek PostgreSQL için Azure Veritabanı sunucuya bağlantılar için TLS/SSL, sunucu parametresi require_secure_transport
olarak ayarlandığındaON
, yerleşik PgBouncer özelliğine yapılan bağlantılar için TLS/SSL otomatik olarak zorlanı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ı esnek sunucusunda TLS ve SSL 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.