Bir Hologres örneğinin bağlantı mimarisini anlayın ve bağlantılarını teşhis edip yönetin.
Bağlantı ve sorgu yönetimi
Hologres, PostgreSQL ile uyumludur. Bağlantıları incelemek ve çalışan sorguları teşhis etmek için pg_stat_activity görünümünü sorgulayın. Temel işlemler şunlardır:
Bağlantı mimarisi: Bir istemci bağlantısının erişim katmanından (Gateway) yürütme katmanına (FE, FixedFE ve Walsender) nasıl iletildiği ve her katmanın neden kendi bağlantı sınırına sahip olduğu.
Katmanlara göre bağlantı sınırları: Her katmanın bağlantı sınırı ve sınır aşıldığında döndürülen hata.
Hata mesajı referansı: Hata mesajından hangi katmanın sınırına ulaştığını belirleme ve buna ilişkin çözüm adımları.
Varsayılan maksimum bağlantı sayısını sorgulayın: Her örnek teknik özelliğinin varsayılan bir bağlantı sınırı vardır. Kendi sınırınızı sorgulamak için bir komut çalıştırın.
HoloWeb'de bağlantıları yönetin: HoloWeb konsolunda etkin bağlantıları görüntüleyin, yönetin ve sonlandırın.
SQL ile bağlantıları sorgulayın: Bağlantı sayılarını sorgulayın, durumları kontrol edin ve boşta kalan bağlantıları sonlandırın.
FixedFE bağlantılarını sorgulayın: FixedFE bağlantıları pg_stat_activity içinde görünmez. Bunun yerine özel görünümü sorgulayın.
Bağlantıları sonlandırın: Belirli bağlantılar tarafından tutulan kaynakları serbest bırakmak için SQL işlevlerini kullanın.
Superuser'lar için ayrılmış bağlantılar: Bağlantı sınırına ulaşıldığında yönetim işlemleri için ayrılmış bağlantıları kullanın.
Tek bir kullanıcı için bağlantıları sınırlayın: Kaynakların aşırı kullanımını önlemek için kullanıcı başına bağlantı sınırı ayarlayın.
Boşta kalan bağlantıları otomatik olarak sonlandırın: Belirtilen süreden daha uzun süre boşta kalan bağlantıları otomatik olarak kapatın.
Bağlantı kullanımı için en iyi uygulamalar: Hologres bağlantı yönetimi için en iyi uygulamalar.
Bağlantı mimarisi
Bir Hologres örneğine yapılan bağlantılar önce bir erişim katmanından, ardından bir yürütme katmanından geçer. Her katman kendi bağlantı sınırını uygular.
Bileşenler aşağıdaki gibidir:
Gateway: Örneğin tek erişim katmanıdır. Her istemci bağlantısı öncelikle bir Gateway düğümüne ulaşır. Gateway, bağlantının kimliğini doğrular, IP izin listesine göre kontrol eder ve bağlantı niteliklerine göre bunu bir FE veya FixedFE düğümüne yönlendirir. Yüksek kullanılabilirlik sağlamak amacıyla bir örnekte en az iki Gateway düğümü bulunur. Sanal depo örneklerinde Gateway, bağlantıları hedef sanal deponun FE'sine de yönlendirir.
FE (Frontend): DDL deyimleri, sorgular ve yazma işlemleri gibi standart SQL bağlantılarına hizmet veren PostgreSQL uyumlu ön uç düğümüdür. Fixed Plan nokta sorguları ve nokta yazma işlemleri de FE bağlantıları üzerinden çalışabilir; bu durumda FE
max_connectionskotasını tüketirler. Bu tür isteklerin bunun yerine FixedFE kullanıp kullanmayacağı istemciye ve örnek sürümüne bağlıdır.show max_connectionskomutu, tek bir FE düğümünün sınırını döndürür.FixedFE (Fixed Frontend): Her FE düğümüyle birlikte çalışan ve öncelikli olarak holo-client ile Flink ve DataWorks'ün gerçek zamanlı alım yolları gibi Fixed Plan nokta sorguları ve nokta yazma işlemleri için optimize edilmiş yüksek aktarım hızına sahip bir bağlantı hizmetidir. Hologres V2.1'den başlayarak ikili günlük (binlog) tüketimi de varsayılan olarak hafif FixedFE bağlantılarını kullanır. FixedFE bağlantıları hafiftir, FE
max_connectionskotasından düşülmez ve FE sınırından çok daha yüksek olan ayrı bir sınıra sahiptir.Walsender: Mantıksal çoğaltma bağlantılarına (
replication=database) hizmet veren FE içindeki süreçtir. Hologres V2.1'den başlayarak ikili günlük tüketimi ve gerçek zamanlı yazma işlemleri varsayılan olarak hafif FixedFE bağlantılarını kullandığından, Walsender artık geleneksel çoğaltma protokolünü kullanan istemcilere hizmet vermektedir. Walsender bağlantılarımax_connectionsdeğerinden bağımsızdır vemax_wal_sendersparametresi tarafından yönetilir.
Farklı bağlantı türleri farklı katmanlardan kota tüketir. Örneğin, Fixed Plan yazma işlemleri FixedFE kotasını tükettiğinde normal SQL bağlantıları etkilenmez. Tersine, normal bağlantılar max_connections değerini doldurduğunda Fixed Plan yolu çalışmaya devam eder. Bir bağlantı sınırı sorununu giderirken, önce hata mesajına dayanarak hangi katmanın sınırına ulaştığını belirleyin. Daha fazla bilgi için bkz. Hata mesajı referansı.
Katmanlara göre bağlantı sınırları
Gateway bağlantı sınırı
Hologres V4.0.15'ten başlayarak, sanal depo örneğindeki tek bir Gateway düğümü en fazla 8.000 bağlantıyı kabul eder. Bu sınır daha önce sınırsızdı ve çok yüksek bağlantı oranlarının örneği kararsız hale getirmesini önlemek için getirildi. Daha fazla bilgi için bkz. V4.0 (Eylül 2025).
Tüm örnek için Gateway sınırı, Gateway düğümü sayısı çarpı 8.000'dir. Bir örnekte en az iki Gateway düğümü bulunur ve bu sayıyı konsolda değiştirebilirsiniz.
Erişim katmanındaki tepe yükü izlemek için konsoldaki Gateway Connection Usage ölçümünü kullanın.
Sınıra ulaşıldığında aşağıdaki hata döndürülür:
too many client tcp connections (global client_max)
FE bağlantı sınırı (max_connections)
Tek bir FE düğümünün kabul ettiği normal SQL bağlantı sayısı max_connections parametresi ile belirlenir. Varsayılan değer örnek türüne bağlıdır. Aşağıdaki gibi sorgulayın:
-- Maximum connections of a single FE node.
show max_connections;
-- Maximum connections of the whole instance (FE node count multiplied by max_connections). Supported in Hologres V1.3.23 and later.
select instance_max_connections();
Hologres, Superuser'lar için bir dizi bağlantı ayırır (superuser_reserved_connections), böylece sınıra ulaşıldığında bile oturum açabilir ve boşta kalan bağlantıları sonlandırmak gibi yönetimsel işlemleri yapabilirsiniz. Dolayısıyla normal kullanıcılar max_connections eksi ayrılmış bağlantı sayısını kullanabilir.
Sınıra ulaşıldığında aşağıdaki hatalardan biri döndürülür:
FATAL: sorry, too many clients already connection limit exceeded for superusers
FATAL: remaining connection slots are reserved for non-replication superuser connections
FixedFE bağlantı sınırı
Her FE düğümündeki FixedFE hizmetinin düğüm başına 6.400 bağlantılık kendi sınırı vardır.
Tüm örnek için FixedFE sınırı, FE düğümü sayısı çarpı 6.400'dür.
FixedFE bağlantıları
max_connectionsdeğerinden düşülmez vepg_stat_activityiçinde görünmez. Bunun yerine özelhg_fixed_fe_stat_activitygörünümünü sorgulayın. Daha fazla bilgi için bkz. FixedFE bağlantılarını sorgulayın.Tipik FixedFE bağlantıları arasında holo-client, Flink konektörü ve DataWorks Data Integration'dan gelen Fixed Plan yazma işlemleri ve nokta sorguları ile Hologres V2.1'den başlayarak varsayılan olarak hafif bağlantılar kullanan ikili günlük tüketim bağlantıları yer alır.
FixedFE bağlantıları teşhis amaçlı salt okunurdur: SQL ile bunları sonlandıramazsınız. FixedFE sınırına ulaşıldığında, istemci tarafındaki bağlantı havuzu yapılandırmasını kontrol edin veya etkilenen işi yeniden başlatın.
Sınıra ulaşıldığında aşağıdaki hata döndürülür:
FATAL: too many fixed frontend connections
Walsender bağlantı sınırı (max_wal_senders)
Mantıksal çoğaltma bağlantılarına (
replication=database) FE üzerindeki Walsender süreçleri hizmet verir. FE düğümü başına sınırmax_wal_sendersparametresi ile belirlenir ve varsayılan değeri 600'dür.Walsender bağlantıları
max_connectionsdeğerinden bağımsızdır. Hiçbiri diğerini tüketmez.
Hologres V2.1'den başlayarak, Flink konektöründen gelenler gibi gerçek zamanlı yazma işlemleri ve ikili günlük tüketimi varsayılan olarak hafif FixedFE bağlantılarını kullanır ve artık Walsender üzerinden gitmez. Boyut tabloları ve sonuç tabloları için Flink konektörü, V3.0.28'den sonraki Hologres sürümlerinde hafif bağlantı modunu (connection.fixed.enabled) otomatik olarak seçer. Daha fazla bilgi için bkz. Parametre yapılandırması (VVR 11+). Sonuç olarak, Walsender sınırı artık yalnızca geleneksel çoğaltma protokolünü kullanan birkaç iş yükünü etkiler. İkili günlüklerin nasıl tüketildiği hakkında daha fazla bilgi için bkz. JDBC aracılığıyla Binlog Tüketimi.
Sınıra ulaşıldığında aşağıdaki hata döndürülür:
FATAL: number of requested standby connections exceeds max_wal_senders (currently 600)
Sınır özeti
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bu katmanların tümü için bağlantı kullanımını Hologres konsolundaki örneğin Monitoring>Traffic and Connections grubunda görüntüleyebilirsiniz.
Hata mesajı referansı
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pg_stat_activity görünümünü sorgulayın
pg_stat_activity görünümü, örnek bağlantıları ve sorguları hakkında çalışma zamanı bilgileri sağlar. Sorgulamak için aşağıdaki komutu çalıştırın.
select * from pg_stat_activity ;
Aşağıdaki tabloda pg_stat_activity alanları açıklanmaktadır.
|
Alan |
Açıklama |
|
datid |
Arka ucun bağlı olduğu veritabanının nesne kimliği (OID). |
|
datname |
Arka ucun bağlı olduğu veritabanının adı. |
|
pid |
Hologres arka ucunun işlem kimliği (PID). |
|
usesysid |
Hologres arka ucunda oturum açan kullanıcının OID'si. |
|
usename |
Geçerli bağlantı için kullanıcı adı. |
|
application_name |
İstemci uygulamasının türü. Yaygın uygulama türleri şunları içerir:
|
|
client_addr |
İstemcinin IP adresi. Bu, orijinal kaynak IP değil, çözümlenmiş bir adres olabilir. |
|
client_hostname |
İstemcinin ana bilgisayar adı. |
|
client_port |
İstemcinin bağlantı noktası. |
|
backend_start |
Arka uç sürecinin başlama zamanı. |
|
xact_start |
Sürecin geçerli işleminin başlama zamanı.
|
|
query_start |
Şu anda etkin olan sorgunun başlama zamanı. Bağlantı durumu |
|
state_change |
Bağlantının durumunun en son değiştirildiği zaman. |
|
wait_event_type |
Arka ucun beklediği olayın türü veya yoksa NULL. Olası değerler şunları içerir:
|
|
wait_event |
Arka uç şu anda bekliyorsa bekleme olayının adı, aksi takdirde NULL. |
|
state |
Bağlantının geçerli durumu. Yaygın durumlar şunları içerir:
|
|
backend_xid |
Hologres arka ucunun üst düzey işlem tanımlayıcısı. |
|
backend_xmin |
Geçerli arka ucun xmin ufku. |
|
query |
Arka uçtaki en son sorgu. state durumu |
|
backend_type |
Arka uç türü. Olası değerler: autovacuum launcher, autovacuum worker, logical replication launcher, logical replication worker, parallel worker, background writer, client backend, checkpointer, startup, walreceiver, walsender, walwriter ve PQE gibi arka uç yürütme bileşenleri. Not
|
Kullanım notları
Yalnızca Superuser'lar tüm bağlantıları görüntüleyebilir. Standart kullanıcılar yalnızca kendi bağlantılarını görür.
Varsayılan maksimum bağlantılar
Varsayılan bağlantı sınırı örnek teknik özelliklerine göre değişir. Sorgulamak için aşağıdaki komutları çalıştırın. Her komut, FE düğümü başına sınırı döndürür. Toplam örnek sınırını elde etmek için FE düğümü sayısıyla çarpın. FE düğümü sayıları Örnek yönetimi bölümünde listelenmiştir.
-
Tüm örnek için maksimum bağlantı sayısını sorgulayın (Hologres V1.3.23 ve sonrası).
select instance_max_connections(); -
Tek bir FE düğümü için maksimum bağlantı sayısını sorgulayın. Toplam örnek sınırını elde etmek için FE düğümü sayısıyla çarpın.
show max_connections;
HoloWeb'de bağlantıları yönetin
HoloWeb konsolunda etkin bağlantıları görüntüleyin ve yönetin.
HoloWeb konsolunda oturum açın. HoloWeb'e bağlanın ve SQL sorguları çalıştırın.
Üst gezinme çubuğunda Diagnostics and Optimization öğesine tıklayın.
Sol gezinme bölmesinde Connections öğesine tıklayın.
-
Connections sayfasında, örneğiniz için bağlantıları ve ilgili bilgileri görüntülemek üzere parametreleri yapılandırın.
NotYalnızca Superuser'lar tüm bağlantıları görüntüleyebilir. Standart kullanıcılar yalnızca kendi bağlantılarını görür.
Aşağıdaki tabloda parametreler açıklanmaktadır.
Parametre
Açıklama
Instance name
Hologres örnek adı.
Database
Hologres veritabanı. Tüm veritabanlarına yönelik bağlantıları görüntülemek için boş bırakın.
Database
Bağlı veritabanının adı.
NotVeritabanı adı Postgres ise, bu bir arka plan bakım bağlantısını gösterir ve göz ardı edilebilir.
User Name
Bağlantı için kullanılan kullanıcı hesabı.
Client Address
Bu, orijinal kaynak IP değil, yönlendirilmiş bir giden IP adresi olabilir.
Application Name
Bağlantıyı oluşturan uygulamanın adı.
State
Bağlantının durumu. Yaygın durumlar şunları içerir:
-
active: Bağlantı etkin.
-
idle: Bağlantı boşta.
-
idle in transaction: Bağlantı, uzun süren bir işlem içinde boşta.
-
idle in transaction (Aborted): Bağlantı, başarısız bir işlem içinde boşta.
Query Start
Sorgunun başlama zamanı.
Query
Yürütülen sorgu.
NotUzun sorgular kısaltılabilir.
PID
Sorgunun işlem kimliği (PID).
Operation
-
Kill: Beklenmeyen bağlantıları tek tek veya toplu olarak sonlandırın.
-
Details: Bağlantı hakkında ayrıntılı bilgileri görüntülemek için tıklayın.
-
SQL ile bağlantıları sorgulayın
Bağlantı bilgilerini sorgulamak için aşağıdaki SQL deyimlerini kullanın.
-
Geçerli veritabanına yapılan bağlantı sayısını sorgulayın.
Geçerli veritabanı için bağlantı sayısını görüntülemek için aşağıdaki komutları çalıştırın. Alan açıklamaları için bkz. pg_stat_activity görünümünü sorgulayın.
-
Hologres V1.1 ve sonrası için:
SELECT datname::TEXT ,COUNT(1) AS COUNT FROM pg_stat_activity WHERE backend_type = 'client backend' AND application_name != 'hologres' GROUP BY datname::TEXT; -
Hologres V0.10 ve öncesi için:
SELECT datname ,COUNT(1) AS COUNT FROM pg_stat_activity WHERE backend_type = 'client backend' AND application_name != 'hologres' GROUP BY datname;
-
-
Her bağlantının durumunu görüntüleyin.
Hologres konsolundaki HoloWeb'i kullanarak bağlantı durumunu görüntüleyin veya tüm JDBC ya da PSQL bağlantı durumlarını sorgulamak için aşağıdaki deyimi çalıştırın.
select * from pg_stat_activity where backend_type = 'client backend' and state = '<statename>';<statename>yerine aşağıdaki durumlardan birini yazın:idle: Süreç yeni istemci komutları bekliyor.
active: Etkin bir bağlantı; süreç bir sorgu yürütüyor.idle in transaction: Süreç bir işlem içinde ancak şu anda bir sorgu yürütmüyor.idle in transaction (aborted): Süreç başarısız bir işlem içinde ve şu anda bir sorgu yürütmüyor.fastpath function call: Bir sürecin bir
fast-pathişlevi yürüttüğünü gösterir.disabled: Süreç için
track activitiesözelliğinin devre dışı olduğunu gösterir.
Örneğin, boşta kalan bağlantıları sorgulayın:
select * from pg_stat_activity where backend_type = 'client backend' and state = 'idle';HoloWeb gibi Hologres bileşenleri JDBC kullanır ve bağlantı tüketir. Sayı sürekli olarak
max_connectionsdeğerine yaklaşıyorsa, uygulamanızda bağlantı sızıntısı olup olmadığını kontrol edin ve uygun bir bağlantı havuzu yapılandırın. Bağlantıları serbest bırakın. -
Her erişim düğümündeki bağlantı sayısını görüntüleyin
Her FE düğümündeki bağlantı sayısını sorgulayın (Hologres V1.3.23 ve sonrası). Etkin bağlantısı olmayan FE düğümleri sonuçlarda yer almaz.
select * from hologres.hg_connections;Aşağıdaki tabloda sorgu sonucundaki alanlar açıklanmaktadır.
fe_id: FE düğümünün kimliği.used_connections: FE düğümünde şu anda kullanılan bağlantı sayısı.max_connections: Bir FE düğümü için maksimum bağlantı sayısı; bu değer,
show max_connectionskomutunun dönüş değeriyle aynıdır.
FixedFE bağlantılarını sorgulayın
Fixed Plan yazma işlemlerine ve nokta sorgularına hizmet veren FixedFE bağlantıları pg_stat_activity içinde görünmez. Bunun yerine özel hg_fixed_fe_stat_activity görünümünü sorgulayın.
-- List all FixedFE connections on the current FE node.
select * from hg_fixed_fe_stat_activity;
-- Count FixedFE connections to compare against the limit of 6,400.
select count(*) from hg_fixed_fe_stat_activity;
-- Group FixedFE connections by database, user, and application.
SELECT datname
,usename
,application_name
,COUNT(1)
FROM hg_fixed_fe_stat_activity
GROUP BY datname
,usename
,application_name;
Temel alanlar arasında datname, conn_id (FixedFE bağlantı kimliği), usename, application_name, client_addr, client_port, backend_start, state, query_start ve query yer alır. backend_type alanı her zaman fixed frontend connection değerindedir.
Yalnızca Superuser'lar tüm FixedFE bağlantılarını görebilir. Normal kullanıcılar yalnızca kendi bağlantılarını görür. FixedFE bağlantıları teşhis amaçlı salt okunurdur ve pg_terminate_backend gibi işlevlerle sonlandırılamaz. Bir FixedFE bağlantısını serbest bırakmak için bunu istemci tarafında kapatın veya sahibini (örneğin bir Flink dağıtımını) yeniden başlatın.
Bağlantıları sonlandırın
Aşağıdaki belirtiler bağlantı sınırına ulaşıldığını gösterir:
Bağlantı sayısı, Hologres konsolunun İzleme ve Uyarılar sayfasında gösterildiği gibi
max_connectionsdeğerine ulaşır veya bunu aşar.FATAL: sorry, too many clients already connection limit exceeded for superusershatası oluşur.FATAL: remaining connection slots are reserved for non-replication superuser connectionshatası bildirilir.FATAL: too many fixed frontend connectionshatası bildirilir; bu, FixedFE katmanının sınırına ulaştığı anlamına gelir.too many client tcp connectionshatası bildirilir; bu, Gateway katmanının sınırına ulaştığı anlamına gelir.
Önce hangi katmanın sınırına ulaştığını belirleyin. Daha fazla bilgi için bkz. Hata mesajı referansı. FE katmanı doluysa, ayrılmış bağlantıları kullanan bir Superuser hesabıyla bağlanın ve boşta kalan bağlantıları kontrol etmek için aşağıdaki deyimi çalıştırın.
select * from pg_stat_activity where backend_type = 'client backend' and state = 'idle';
Sonuçlar aşırı sayıda boşta süreç gösteriyorsa, bağlantıları serbest bırakmak için sonuçlardaki pid değerini kullanarak aşağıdaki deyimleri çalıştırın. Alan açıklamaları için bkz. pg_stat_activity görünümünü sorgulayın.
select pg_cancel_backend(<pid>); -- Cancels the query on the connection.
select pg_terminate_backend(<pid>); -- Terminates the corresponding backend connection process.
-- Terminate backend IDLE connection processes in a batch to release connections.
SELECT pg_terminate_backend(pid)
,query
,datname
,usename
,application_name
,client_addr
,client_port
,backend_start
,state
FROM pg_stat_activity
WHERE length(query) > 0
AND pid != pg_backend_pid()
AND backend_type = 'client backend'
AND state = 'idle'
AND application_name != 'hologres'
AND query not like '%pg_cancel_backend%';
Superuser'lar için ayrılmış bağlantılar
Hologres, Superuser'lar için bağlantıları ayırır; sayı örnek teknik özelliklerine göre değişir (Örnek yönetimi). Bu bağlantılar, sınıra ulaşıldığında boşta kalan bağlantıları sonlandırmak gibi yönetim görevlerinin yapılmasını sağlar. Standart kullanıcılar max_connections eksi ayrılmış sayıyı kullanabilir. Süper kullanıcı hesaplarını normal işlemler için kullanmayın; bu, tüm bağlantıları tüketebilir ve yönetimsel erişimi engelleyebilir.
Kullanıcı bağlantı sınırları
Kullanıcı bağlantı sınırı ayarlayın
Aşırı kaynak tüketimini önlemek için kullanıcı başına bağlantı sınırı ayarlayın.
Tek bir erişim düğümünde bir kullanıcı için bağlantıları sınırlamak üzere aşağıdaki deyimi çalıştırın. Çok düğümlü örnekler için toplam sınır (düğüm başına bağlantı) * (düğüm sayısı) şeklindedir.
-
Sözdizimi
ALTER ROLE "Alibaba Cloud account ID" CONNECTION LIMIT <number>; -
Parametreler
Parametre
Açıklama
Alibaba Cloud account ID
Sınırlandırılacak hesabın kimliği. Bir RAM kullanıcısı için hesap UID'sinin önüne
p4_ekleyin.number
Bağlantı sınırı.
Değer [-1, N] aralığında olmalıdır. -1 değeri, kullanıcının bağlantı sınırını kaldırır.
-
Örnek
Bu örnekte, RAM kullanıcısı
283813xxxxdüğüm başına bir bağlantı ile sınırlandırılmaktadır.ALTER ROLE "p4_283813xxxx" CONNECTION LIMIT 1;
Kullanıcı bağlantı sınırlarını görüntüleyin
Örnek kullanıcıları için düğüm başına bağlantı sınırlarını görüntülemek üzere aşağıdaki deyimi çalıştırın.
SELECT rolname, rolconnlimit
FROM pg_roles
WHERE rolconnlimit <> -1;
Örnek sorgu sonucu:
rolname | rolconnlimit
---------------+--------------
p4_283813xxxx | 1
(1 row)
Boşta kalan bağlantıları otomatik olarak sonlandırın
Örnek bağlantıları sürekli olarak sınıra yaklaşıyorsa, uygulamanızda bağlantı sızıntısı olabilir. Kaynakları serbest bırakmak için otomatik boşta bağlantı sonlandırmayı etkinleştirin. Belirtilen süreden daha uzun süre boşta kalan bağlantılar otomatik olarak kesilir.
-
Sınırlamalar
Hologres V0.10.25 ve sonrasında desteklenir. Daha önceki sürümler için bkz. Yükseltme sırasında oluşan yaygın hatalar veya yükseltme talep etmek için Hologres DingTalk grubuna katılın. Daha fazla çevrimiçi desteğe nasıl ulaşabilirim?
-
Sözdizimi
-
Oturum düzeyi
-- Automatically disconnect a connection if it has been idle for 10 minutes (600,000 milliseconds). SET idle_session_timeout = 600000; -
Veritabanı düzeyi
-- Automatically disconnect connections to this database if they have been idle for 10 minutes (600,000 milliseconds). ALTER DATABASE <db_name> SET idle_session_timeout = 600000;<db_name>yerine, boşta kalan bağlantıların otomatik sonlandırılmasını etkinleştirmek istediğiniz veritabanının adını yazın.
-
Bağlantı en iyi uygulamaları
Hologres bağlantılarını kullanırken aşağıdaki en iyi uygulamaları takip edin.
-
Superuser hesabını akıllıca kullanın
Uygulama bağlantıları veya normal işlemler için Superuser hesaplarını kullanmayın. Bağlantılar sınırı aşarsa, Superuser'lar bile bağlanamayabilir.
Bağlantı sınırı tükenmesi veya yanıt vermeyen sorgular gibi acil durumlar için özel bir Superuser hesabı oluşturun.
-
Uygun bir bağlantı havuzu yapılandırın
Hologres,
idle_session_timeoutetkinleştirilmedikçe varsayılan olarak boşta kalan bağlantıları otomatik olarak sonlandırmaz. Boşta kalan bağlantıları hızlıca serbest bırakmak için bir bağlantı havuzu kullanın.Kaynakları serbest bırakmak için boşta kalan bağlantıları periyodik olarak temizleyin.
holo-client ve Flink konektörü gibi Fixed Plan istemcilerinin bağlantı havuzunu da aynı özenle boyutlandırın. Bunlar düğüm başına 6.400'lük FixedFE kotasını tüketir ve buradaki bir sızıntı Fixed Plan yolunu bozar.
Bir ikili günlük tüketim işi yük devrettikten sonra, eski bağlantıların serbest bırakıldığını onaylayın; böylece eski bağlantılar FixedFE kotasını tüketmez. İkili günlük tüketimi, Hologres V2.1'den başlayarak varsayılan olarak hafif FixedFE bağlantılarını kullanır. Geleneksel Walsender çoğaltma protokolünü hala kullanıyorsanız, bunun yerine
max_wal_senderskotasını izleyin.
-
Bağlantı kullanımını katman katman izleyin
Erişim katmanı (Gateway): Konsoldaki Gateway Connection Usage ölçümünü izleyin.
FE katmanı: Her FE düğümünün doluluk seviyesi için
hologres.hg_connectionssorgulayın, ardından tek tek bağlantıları incelemek içinpg_stat_activitykullanın.FixedFE katmanı:
hg_fixed_fe_stat_activitygörünümünde Fixed Plan bağlantılarını sayın.Walsender: İkili günlük tüketim bağlantılarını görmek için
pg_stat_activityüzerindebackend_type = 'walsender'filtresini uygulayın.
Yaygın hatalar
SQL yürütme sırasında bir hata mesajı döndürülür:
terminating connection due to idle state timeout.Neden: Bağlantı, yapılandırılan boşta kalma zaman aşımını aştığı için otomatik olarak sonlandırıldı.
Çözüm: Örneğe yeniden bağlanın veya boşta bağlantı zaman aşımını artırın. Boşta bağlantı zaman aşımının nasıl değiştirileceği hakkında bilgi için bkz. Boşta kalan bağlantıları otomatik olarak sonlandırın.
Bağlantı ile ilgili diğer hatalar ve bunların nasıl ele alınacağı hakkında daha fazla bilgi için bkz. Hata mesajı referansı.