Tous les produits
Search
Centre de documentation

Hologres:Manage connections

Dernière mise à jour :Aug 11, 2026

Diagnostiquez et gérez les connexions d'une instance Hologres.

Gestion des connexions et des requêtes

Hologres est compatible avec PostgreSQL. Interrogez la vue pg_stat_activity pour inspecter les connexions et diagnostiquer les requêtes en cours d'exécution. Principales opérations :

Interroger la vue pg_stat_activity

La vue pg_stat_activity fournit des informations d'exécution sur les connexions et les requêtes de l'instance. Exécutez la commande suivante pour l'interroger.

select * from pg_stat_activity ;

Le tableau suivant décrit les champs de pg_stat_activity.

Champ

Description

datid

ID d'objet (OID) de la base de données à laquelle le backend est connecté.

datname

Nom de la base de données à laquelle le backend est connecté.

pid

ID de processus (PID) du backend Hologres.

usesysid

OID de l'utilisateur connecté au backend Hologres.

usename

Nom d'utilisateur de la connexion actuelle.

application_name

Type d'application cliente.

Les types d'application courants incluent :

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

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

  • DataWorks Data Integration pour la synchronisation par lots (lecture depuis Hologres) : datax_{jobId}.

  • DataWorks Data Integration pour la synchronisation par lots (écriture dans Hologres) : {client_version}_datax_{jobId}.

  • DataWorks Data Integration pour la synchronisation en temps réel : {client_version}_streamx_{jobId}.

  • HoloWeb : holoweb.

  • Accès à Hologres via une table externe dans MaxCompute : MaxCompute.

  • Processus démarré par un client Holo pour lire le journal binlog Hologres : holo_client_replication. Le contenu de la requête n'est pas affiché pour ce type de tâche.

  • Pour les autres applications, spécifiez le paramètre application_name dans la chaîne de connexion.

client_addr

Adresse IP du client.

Il peut s'agir d'une adresse résolue et non de l'adresse IP source d'origine.

client_hostname

Nom d'hôte du client.

client_port

Port du client.

backend_start

Heure de démarrage du processus backend.

xact_start

Heure de début de la transaction actuelle du processus.

  • Ce champ est nul si aucune transaction n'est active.

  • Si la requête actuelle constitue la première transaction de ce processus, cette valeur est identique à query_start.

query_start

Heure de début de la requête actuellement active. Si l'état de la connexion n'est pas active, il s'agit de l'heure de début de la requête précédente.

state_change

Heure du dernier changement d'état de la connexion.

wait_event_type

Type d'événement pour lequel le backend est en attente, ou NULL en l'absence d'attente. Les valeurs possibles incluent :

  • LWLock : le backend attend un verrou léger.

  • Lock : le backend attend un verrou lourd. Le champ wait_event identifie le type de verrou attendu.

  • BufferPin : le processus serveur attend l'accès à un tampon de données alors qu'aucun autre processus n'examine ce tampon.

  • Activity : le processus serveur est inactif. Ce statut est utilisé pour les processus système en attente d'activité dans leur boucle de traitement principale.

  • Extension : le processus serveur attend une activité au sein d'un module d'extension.

  • Client : le processus serveur attend une requête provenant d'une application cliente et s'attend à un événement sans rapport avec son traitement interne.

  • IPC : le processus serveur attend une activité d'un autre processus sur le serveur.

  • Timeout : le processus serveur attend qu'un délai d'expiration se produise.

  • IO : le processus serveur attend la fin d'une opération d'E/S.

wait_event

Nom de l'événement d'attente si le backend est actuellement en attente, sinon NULL.

state

État actuel de la connexion. Les états courants incluent :

  • active : la connexion exécute une requête.

  • idle : la connexion attend une nouvelle commande cliente.

  • idle in transaction : la connexion se trouve dans une transaction mais n'exécute actuellement aucune requête.

  • idle in transaction (Aborted) : la connexion se trouve dans une transaction ayant échoué et n'exécute actuellement aucune requête.

  • \N (Vide) : indique un processus non utilisateur, généralement un processus de maintenance d'arrière-plan système qui peut être ignoré.

backend_xid

Identifiant de transaction de niveau supérieur du backend Hologres.

backend_xmin

Horizon xmin du backend actuel.

query

Dernière requête exécutée sur le backend. Affiche la requête en cours d'exécution si state est active ; sinon, affiche la dernière requête exécutée.

backend_type

Type de backend. Valeurs possibles : autovacuum launcher, autovacuum worker, logical replication launcher, logical replication worker, parallel worker, background writer, client backend, checkpointer, startup, walreceiver, walsender, walwriter et composants d'exécution backend tels que PQE.

Remarque

Le type client backend représente les connexions applicatives.

Notes d'utilisation

Seuls les superutilisateurs peuvent consulter toutes les connexions. Les utilisateurs standard ne voient que leurs propres connexions.

Nombre maximal de connexions par défaut

La limite de connexion par défaut varie selon la spécification de l'instance. Exécutez les commandes suivantes pour l'interroger. Chaque commande renvoie la limite par nœud FE. Multipliez cette valeur par le nombre de nœuds FE pour obtenir la limite totale de l'instance. Les nombres de nœuds FE sont répertoriés dans la rubrique Gestion des instances.

  • Interrogez le nombre maximal de connexions pour l'ensemble de l'instance (Hologres V1.3.23 et versions ultérieures).

    select instance_max_connections();
  • Interrogez le nombre maximal de connexions pour un seul nœud FE. Multipliez cette valeur par le nombre de nœuds FE pour obtenir la limite totale de l'instance.

    show max_connections;

Gérer les connexions dans HoloWeb

Consultez et gérez les connexions actives dans la console HoloWeb.

  1. Connectez-vous à la console HoloWeb. Se connecter à HoloWeb et exécuter des requêtes SQL.

  2. Dans la barre de navigation supérieure, cliquez sur Diagnostics and Optimization.

  3. Dans le volet de navigation de gauche, cliquez sur Connections.

  4. Sur la page Connections, configurez les paramètres pour afficher les connexions et les informations associées de votre instance.

    Remarque

    Seuls les superutilisateurs peuvent consulter toutes les connexions. Les utilisateurs standard ne voient que leurs propres connexions.

    Le tableau suivant décrit les paramètres.

    Paramètre

    Description

    Instance name

    Nom de l'instance Hologres.

    Database

    Base de données Hologres. Laissez ce champ vide pour afficher les connexions vers toutes les bases de données.

    Database

    Nom de la base de données connectée.

    Remarque

    Si le nom de la base de données est Postgres, cela indique une connexion de maintenance backend, qui peut être ignorée.

    User Name

    Compte utilisateur associé à la connexion.

    Client Address

    Il peut s'agir d'une adresse IP sortante acheminée et non de l'adresse IP source d'origine.

    Application Name

    Nom de l'application ayant établi la connexion.

    State

    État de la connexion. Les états courants incluent :

    • active : la connexion est active.

    • idle : la connexion est inactive.

    • idle in transaction : la connexion est inactive au sein d'une transaction de longue durée.

    • idle in transaction (Aborted) : la connexion est inactive au sein d'une transaction ayant échoué.

    Query Start

    Heure de début de la requête.

    Query

    Requête exécutée.

    Remarque

    Les requêtes longues peuvent être tronquées.

    PID

    ID de processus (PID) de la requête.

    Operation

    • Kill : arrêtez individuellement ou par lot les connexions inattendues.

    • Details : cliquez pour afficher les informations détaillées sur la connexion.

Interroger les connexions avec SQL

Utilisez les instructions SQL suivantes pour interroger les informations de connexion.

  1. Interrogez le nombre de connexions vers la base de données actuelle.

    Exécutez les commandes suivantes pour afficher le nombre de connexions pour la base de données actuelle. Les descriptions des champs figurent dans la section Interroger la vue pg_stat_activity.

    • Pour Hologres V1.1 et versions ultérieures :

      SELECT  datname::TEXT
              ,COUNT(1) AS COUNT
      FROM    pg_stat_activity
      WHERE   backend_type = 'client backend'
      AND     application_name != 'hologres'
      GROUP BY datname::TEXT;
    • Pour Hologres V0.10 et versions antérieures :

      SELECT  datname
              ,COUNT(1) AS COUNT
      FROM    pg_stat_activity
      WHERE   backend_type = 'client backend'
      AND     application_name != 'hologres'
      GROUP BY datname;
  2. Affichez l'état de chaque connexion.

    Utilisez HoloWeb dans la console Hologres pour afficher l'état des connexions, ou exécutez l'instruction suivante pour interroger tous les états de connexion JDBC ou PSQL.

    select * from pg_stat_activity where backend_type = 'client backend' and state = '<statename>';

    Remplacez <statename> par l'un des états suivants :

    • idle : le processus attend de nouvelles commandes clientes.

    • active : connexion active, le processus exécute une requête.

    • idle in transaction : le processus se trouve dans une transaction mais n'exécute actuellement aucune requête.

    • idle in transaction (aborted) : le processus se trouve dans une transaction ayant échoué et n'exécute actuellement aucune requête.

    • fastpath function call : indique qu'un processus exécute une fonction fast-path.

    • disabled : indique que le suivi des activités track activities pour le processus est désactivé.

    Par exemple, interrogez les connexions inactives :

    select * from pg_stat_activity where backend_type = 'client backend' and state = 'idle';

    Les composants Hologres tels que HoloWeb utilisent JDBC et consomment des connexions. Si le nombre approche constamment max_connections, vérifiez votre application pour détecter d'éventuelles fuites de connexions et configurez un pool de connexions approprié. Libérez les connexions.

  3. Affichez le nombre de connexions sur chaque nœud d'accès

    Interrogez le nombre de connexions sur chaque nœud FE (Hologres V1.3.23 et versions ultérieures). Les nœuds FE sans connexions actives sont omis des résultats.

    select * from hologres.hg_connections;

    Le tableau suivant décrit les champs du résultat de la requête.

    • fe_id : ID du nœud FE.

    • used_connections : nombre de connexions actuellement utilisées sur le nœud FE.

    • max_connections : nombre maximal de connexions pour un nœud FE, identique à la valeur renvoyée par la commande show max_connections.

Arrêter les connexions

Les symptômes suivants indiquent que la limite de connexion a été atteinte :

  • Le nombre de connexions atteint ou dépasse max_connections, comme indiqué sur la page Monitoring and Alarms de la console Hologres.

  • L'erreur FATAL: sorry, too many clients already connection limit exceeded for superusers se produit.

  • L'erreur FATAL: remaining connection slots are reserved for non-replication superuser connections est signalée.

Pour résoudre ces problèmes, connectez-vous avec un compte superutilisateur et exécutez l'instruction suivante pour vérifier la présence de connexions inactives.

select * from pg_stat_activity where backend_type = 'client backend' and state = 'idle';

Si les résultats montrent un excès de processus inactifs, utilisez le pid issu des résultats pour libérer les connexions à l'aide des instructions suivantes. Les descriptions des champs figurent dans la section Interroger la vue pg_stat_activity.

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%';

Connexions réservées aux superutilisateurs

Hologres réserve des connexions pour les superutilisateurs ; le nombre varie selon la spécification de l'instance (Gestion des instances). Ces connexions permettent d'effectuer des tâches de gestion, telles que l'arrêt des connexions inactives lorsque la limite est atteinte. Les utilisateurs standard peuvent utiliser max_connections moins le nombre de connexions réservées. N'utilisez pas de comptes superutilisateurs pour les opérations courantes, car cela pourrait épuiser toutes les connexions et bloquer l'accès administratif.

Limites de connexion par utilisateur

Définir une limite de connexion par utilisateur

Définissez une limite de connexion par utilisateur afin d'éviter une consommation excessive de ressources.

Exécutez l'instruction suivante pour limiter les connexions d'un utilisateur sur un seul nœud d'accès. Pour les instances multinœuds, la limite totale est égale à (connexions par nœud) * (nombre de nœuds).

  • Syntaxe

    ALTER ROLE "Alibaba Cloud account ID" CONNECTION LIMIT <number>; 
  • Paramètres

    Paramètre

    Description

    ID du compte Alibaba Cloud

    ID du compte à limiter. Pour un utilisateur RAM, préfixez l'UID du compte par p4_.

    Présentation des comptes.

    number

    Limite de connexion.

    La valeur doit se situer dans la plage [-1, N]. Une valeur de -1 supprime la limite de connexion de l'utilisateur.

  • Exemple

    Cet exemple limite l'utilisateur RAM 283813xxxx à une connexion par nœud.

    ALTER ROLE "p4_283813xxxx" CONNECTION LIMIT 1; 

Afficher les limites de connexion par utilisateur

Exécutez l'instruction suivante pour afficher les limites de connexion par nœud pour les utilisateurs de l'instance.

SELECT rolname, rolconnlimit
FROM pg_roles
WHERE rolconnlimit <> -1;

Exemple de résultat de requête :

       rolname | rolconnlimit 
---------------+--------------
 p4_283813xxxx |      1
(1 row)

Arrêt automatique des connexions inactives

Si les connexions de l'instance approchent constamment de la limite, votre application présente peut-être des fuites de connexions. Activez l'arrêt automatique des connexions inactives pour libérer des ressources. Les connexions restées inactives au-delà de la durée spécifiée sont automatiquement déconnectées.

  • Limitations

    Prise en charge à partir de Hologres V0.10.25. Pour les versions antérieures, consultez la rubrique Erreurs courantes lors d'une mise à niveau ou rejoignez le groupe DingTalk Hologres pour demander une mise à niveau. Comment obtenir davantage d'assistance en ligne ?

  • Syntaxe

    • Niveau session

      -- Automatically disconnect a connection if it has been idle for 10 minutes (600,000 milliseconds).
      SET idle_session_timeout = 600000;
    • Niveau base de données

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

      Remplacez <db_name> par le nom de la base de données pour laquelle vous souhaitez activer l'arrêt automatique des connexions inactives.

Bonnes pratiques relatives aux connexions

Suivez ces bonnes pratiques pour utiliser les connexions Hologres.

  • Utilisez judicieusement le compte superutilisateur

    • N'utilisez pas de comptes superutilisateurs pour les connexions applicatives ou les opérations courantes. Si le nombre de connexions dépasse la limite, même les superutilisateurs pourraient ne plus pouvoir se connecter.

    • Créez un compte superutilisateur dédié pour les situations d'urgence, telles que l'épuisement de la limite de connexions ou le blocage de requêtes.

  • Configurez un pool de connexions approprié

    • Hologres n'arrête pas automatiquement les connexions inactives par défaut. Utilisez un pool de connexions pour libérer rapidement les connexions inactives.

    • Nettoyez régulièrement les connexions inactives afin de libérer des ressources.

Erreurs courantes

  • Un message d'erreur est renvoyé lors de l'exécution SQL : terminating connection due to idle state timeout.

  • Cause : la connexion a été automatiquement arrêtée car elle a dépassé le délai d'inactivité configuré.

  • Solution : reconnectez-vous à l'instance ou augmentez le délai d'expiration des connexions inactives. Pour savoir comment modifier le délai d'expiration des connexions inactives, consultez la section Arrêt automatique des connexions inactives.