Tüm Ürünler
Search
Belge Merkezi

Hologres:Manage connections

Son Güncelleme:Oct 06, 2026

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 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.

hologres-connection-arch-en

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_connections kotası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_connections komutu, 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_connections kotası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_connections değerinden bağımsızdır ve max_wal_senders parametresi tarafından yönetilir.

Not

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_connections değerinden düşülmez ve pg_stat_activity içinde görünmez. Bunun yerine özel hg_fixed_fe_stat_activity gö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ır max_wal_senders parametresi ile belirlenir ve varsayılan değeri 600'dür.

  • Walsender bağlantıları max_connections değerinden bağımsızdır. Hiçbiri diğerini tüketmez.

Not

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


Katman


Parametre


Varsayılan veya sabit değer


Kapsam


Nasıl kontrol edilir


Gateway


client_max


8.000 (Hologres V4.0.15 ve sonrası, sanal depo örnekleri)


Gateway düğümü başına


Konsoldaki Gateway Connection Usage ölçümü


FE


max_connections


Örnek türüne bağlı


FE düğümü başına


show max_connections;


FE (örnek düzeyi)


Yok


FE düğümü sayısı çarpı max_connections


Örnek başına


select instance_max_connections();


FixedFE


Sabit değer


6.400


FE düğümü başına


hg_fixed_fe_stat_activity görünümündeki satırları sayın


Walsender


max_wal_senders


600


FE düğümü başına


Yok

Not

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ı


Hata mesajı


Sınırına ulaşan katman


Ne yapılmalı


too many client tcp connections (global client_max)


Gateway, düğüm başına 8.000


İstemcide bağlantı sızıntısı olup olmadığını kontrol edin. Gerekirse Gateway düğümleri ekleyin.


sorry, too many clients already connection limit exceeded for superusers


FE max_connections


Boşta kalan bağlantıları sonlandırın. Daha fazla bilgi için bkz. Bağlantıları sonlandırın. Alternatif olarak, örneği ölçeklendirin veya FE düğümleri ekleyin.


remaining connection slots are reserved for non-replication superuser connections


Normal kullanıcılar için FE kotası, Superuser bağlantıları zaten ayrılmış durumda


Superuser O&M hesabıyla oturum açın ve bağlantıları sonlandırın.


too many fixed frontend connections


FixedFE, düğüm başına 6.400


holo-client veya Flink konektörü gibi bir Fixed Plan istemcisinin bağlantı havuzunun aşırı boyutlu olup olmadığını veya sızıntı yaşayıp yaşamadığını kontrol edin.


number of requested standby connections exceeds max_wal_senders


Walsender max_wal_senders


İkili günlük tüketim işlerinin sayısını ve bir yük devretmeden sonra eski bağlantıların kalıp kalmadığını kontrol edin.


terminating connection due to idle state timeout


Bir sınır sorunu değil. Bağlantı, boşta kalma zaman aşımı nedeniyle geri alındı.


Yeniden bağlanın veya idle_session_timeout değerini artırın. Daha fazla bilgi için bkz. Boşta kalan bağlantıları otomatik olarak sonlandırın.

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:

  • Realtime Compute for Apache Flink: {client_version}_ververica-connector-hologres.

  • Open-source Flink: {client_version}_hologres-connector-flink.

  • Toplu senkronizasyon için DataWorks Data Integration (Hologres'ten okuma): datax_{jobId}.

  • Toplu senkronizasyon için DataWorks Data Integration (Hologres'e yazma): {client_version}_datax_{jobId}.

  • Gerçek zamanlı senkronizasyon için DataWorks Data Integration: {client_version}_streamx_{jobId}.

  • HoloWeb: holoweb.

  • MaxCompute'te harici tablo kullanarak Hologres'e erişim: MaxCompute.

  • Hologres binlog'unu okumak için bir Holo Client tarafından başlatılan bir süreç: holo_client_replication. Bu tür görevler için sorgu içeriği görüntülenmez.

  • Diğer uygulamalar için bağlantı dizesinde application_name parametresini belirtin.

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ı.

  • Etkin bir işlem yoksa bu alan null değerindedir.

  • Geçerli sorgu bu süreçteki ilk işlemse, bu değer query_start ile aynıdır.

query_start

Şu anda etkin olan sorgunun başlama zamanı. Bağlantı durumu active değilse, bu önceki sorgunun başlama zamanıdır.

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:

  • LWLock: Arka uç, hafif bir kilit bekliyor.

  • Lock: Arka uç, ağır bir kilit bekliyor. wait_event alanı, beklenen kilidin türünü tanımlar.

  • BufferPin: Sunucu süreci, başka hiçbir süreç o tamponu incelemediği sırada bir veri tamponuna erişmek için bekliyor.

  • Activity: Sunucu süreci boşta. Bu, ana işleme döngülerinde etkinlik bekleyen sistem süreçleri için kullanılır.

  • Extension: Sunucu süreci, bir uzantı modülü içindeki etkinlik için bekliyor.

  • Client: Sunucu süreci, bir istemci uygulamasından sorgu bekliyor ve dahili işlemeyle ilgili olmayan bir şeyin olmasını bekliyor.

  • IPC: Sunucu süreci, sunucudaki başka bir süreçten gelen bir etkinlik için bekliyor.

  • Timeout: Sunucu süreci, bir zaman aşımının gerçekleşmesini bekliyor.

  • IO: Sunucu süreci, bir G/Ç işleminin tamamlanmasını bekliyor.

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:

  • active: Bağlantı bir sorgu yürütüyor.

  • idle: Bağlantı yeni bir istemci komutu bekliyor.

  • idle in transaction: Bağlantı bir işlem içinde ancak şu anda bir sorgu yürütmüyor.

  • idle in transaction (Aborted): Bağlantı başarısız bir işlem içinde ve şu anda bir sorgu yürütmüyor.

  • \N (Boş): Kullanıcı dışı bir süreci, genellikle göz ardı edilebilecek bir sistem arka plan bakım sürecini gösterir.

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 active ise çalışan sorguyu gösterir; aksi takdirde son yürütülen sorguyu gösterir.

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

client backend türü uygulama bağlantılarını, walsender türü ise ikili günlük tüketimi için kullanılan çoğaltma bağlantılarını temsil eder.

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.

  1. HoloWeb konsolunda oturum açın. HoloWeb'e bağlanın ve SQL sorguları çalıştırın.

  2. Üst gezinme çubuğunda Diagnostics and Optimization öğesine tıklayın.

  3. Sol gezinme bölmesinde Connections öğesine tıklayın.

  4. Connections sayfasında, örneğiniz için bağlantıları ve ilgili bilgileri görüntülemek üzere parametreleri yapılandırın.

    Not

    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.

    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ı.

    Not

    Veritabanı 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.

    Not

    Uzun 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.

  1. 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;
  2. 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-path iş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_connections değ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.

  3. 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_connections komutunun 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.

Not

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_connections değerine ulaşır veya bunu aşar.

  • FATAL: sorry, too many clients already connection limit exceeded for superusers hatası oluşur.

  • FATAL: remaining connection slots are reserved for non-replication superuser connections hatası bildirilir.

  • FATAL: too many fixed frontend connections hatası bildirilir; bu, FixedFE katmanının sınırına ulaştığı anlamına gelir.

  • too many client tcp connections hatası 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.

    Hesaba genel bakış.

    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ı 283813xxxx düğü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_timeout etkinleş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_senders kotası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_connections sorgulayın, ardından tek tek bağlantıları incelemek için pg_stat_activity kullanın.

    • FixedFE katmanı: hg_fixed_fe_stat_activity gö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 üzerinde backend_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ı.