Todos os produtos
Search
Central de documentação

Hologres:Manage connections

Última atualização: Jun 28, 2026

Diagnostique e gerencie as conexões de uma instância do Hologres.

Gerenciamento de conexões e consultas

O Hologres é compatível com PostgreSQL. Consulte a view pg_stat_activity para inspecionar conexões e diagnosticar consultas em execução. Principais operações:

Consultar a view pg_stat_activity

A view pg_stat_activity fornece informações de tempo de execução sobre as conexões e consultas da instância. Execute o seguinte comando para consultá-la.

select * from pg_stat_activity ;

A tabela a seguir descreve os campos da pg_stat_activity.

Campo

Descrição

datid

O ID do objeto (OID) do banco de dados ao qual o backend está conectado.

datname

O nome do banco de dados ao qual o backend está conectado.

pid

O ID do processo (PID) do backend do Hologres.

usesysid

O OID do usuário conectado ao backend do Hologres.

usename

O nome de usuário da conexão atual.

application_name

O tipo de aplicação cliente.

Os tipos comuns de aplicação incluem:

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

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

  • DataWorks Data Integration para sincronização em lote (leitura do Hologres): datax_{jobId}.

  • DataWorks Data Integration para sincronização em lote (escrita no Hologres): {client_version}_datax_{jobId}.

  • DataWorks Data Integration para sincronização em tempo real: {client_version}_streamx_{jobId}.

  • HoloWeb: holoweb.

  • Acesso ao Hologres usando uma tabela externa no MaxCompute: MaxCompute.

  • Processo iniciado por um Holo Client para ler o binlog do Hologres: holo_client_replication. O conteúdo da consulta não é exibido para este tipo de tarefa.

  • Para outras aplicações, especifique o application_name na string de conexão.

client_addr

O endereço IP do cliente.

Este pode ser um endereço resolvido, e não o IP de source original.

client_hostname

O nome do host do cliente.

client_port

A porta do cliente.

backend_start

Hora em que o processo de backend foi iniciado.

xact_start

Hora de início da transação atual do processo.

  • Este campo é nulo se nenhuma transação estiver ativa.

  • Se a consulta atual for a primeira transação neste processo, este valor será igual a query_start.

query_start

Hora de início da consulta atualmente ativa. Se o estado da conexão não for active, esta é a hora de início da consulta anterior.

state_change

Hora da última alteração do estado da conexão.

wait_event_type

O tipo de evento pelo qual o backend está aguardando, ou NULL se não houver nenhum. Os valores possíveis incluem:

  • LWLock: O backend está aguardando um bloqueio leve (lightweight lock).

  • Lock: O backend está aguardando um bloqueio pesado (heavyweight lock). O campo wait_event identifica o tipo de bloqueio aguardado.

  • BufferPin: O processo do servidor está aguardando acesso a um buffer de dados enquanto nenhum outro processo examina esse buffer.

  • Activity: O processo do servidor está ocioso. Usado para processos de sistema que aguardam atividade em seu loop principal de processamento.

  • Extension: O processo do servidor está aguardando atividade dentro de um módulo de extensão.

  • Client: O processo do servidor está aguardando uma consulta de uma aplicação cliente e espera que algo aconteça fora de seu processamento interno.

  • IPC: O processo do servidor está aguardando uma atividade de outro processo no servidor.

  • Timeout: O processo do servidor está aguardando a ocorrência de um tempo limite.

  • IO: O processo do servidor está aguardando a conclusão de uma operação de I/O.

wait_event

O nome do evento de espera se o backend estiver aguardando no momento; caso contrário, NULL.

state

O estado atual da conexão. Os estados comuns incluem:

  • active: A conexão está executando uma consulta.

  • idle: A conexão está aguardando um novo comando do cliente.

  • idle in transaction: A conexão está em uma transação, mas não está executando uma consulta no momento.

  • idle in transaction (Aborted): A conexão está em uma transação com falha e não está executando uma consulta no momento.

  • \N (Empty): Indica um processo não relacionado a usuários, geralmente um processo de manutenção em segundo plano do sistema que pode ser ignorado.

backend_xid

O identificador de transação de nível superior do backend do Hologres.

backend_xmin

O horizonte xmin do backend atual.

query

A consulta mais recente no backend. Mostra a consulta em execução se state for active; caso contrário, mostra a última consulta executada.

backend_type

O tipo de backend. Valores possíveis: autovacuum launcher, autovacuum worker, logical replication launcher, logical replication worker, parallel worker, background writer, client backend, checkpointer, startup, walreceiver, walsender, walwriter e componentes de execução de backend como PQE.

Nota

O tipo client backend representa conexões de aplicações.

Notas de uso

Apenas Superusers podem visualizar todas as conexões. Usuários padrão veem apenas as suas próprias.

Máximo padrão de conexões

O limite padrão de conexões varia conforme a especificação da instância. Execute os comandos a seguir para consultá-lo. Cada comando retorna o limite por nó FE. Multiplique pelo número de nós FE para obter o limite total da instância. As contagens de nós FE estão listadas em Gerenciamento de instâncias.

  • Consulte o máximo de conexões para toda a instância (Hologres V1.3.23 e posterior).

    select instance_max_connections();
  • Consulte o máximo de conexões para um único nó FE. Multiplique pelo número de nós FE para obter o limite total da instância.

    show max_connections;

Gerenciar conexões no HoloWeb

Visualize e gerencie conexões ativas no console do HoloWeb.

  1. Faça login no console do HoloWeb. Conectar-se ao HoloWeb e executar consultas SQL.

  2. Na barra de navegação superior, clique em Diagnostics and Optimization.

  3. No painel de navegação à esquerda, clique em Connections.

  4. Na página Connections, configure os parâmetros para visualizar as conexões e informações relacionadas da sua instância.

    Nota

    Apenas Superusers podem visualizar todas as conexões. Usuários padrão veem apenas as suas próprias.

    A tabela a seguir descreve os parâmetros.

    Parâmetro

    Descrição

    Instance name

    O nome da instância do Hologres.

    Database

    O banco de dados do Hologres. Deixe em branco para exibir conexões de todos os bancos de dados.

    Database

    O nome do banco de dados conectado.

    Nota

    Se o nome do banco de dados for Postgres, isso indica uma conexão de manutenção de backend, que pode ser ignorada.

    User Name

    A conta de usuário da conexão.

    Client Address

    Este pode ser um endereço IP de saída roteado, e não o IP de source original.

    Application Name

    O nome da aplicação que criou a conexão.

    State

    O estado da conexão. Os estados comuns incluem:

    • active: A conexão está ativa.

    • idle: A conexão está ociosa.

    • idle in transaction: A conexão está ociosa dentro de uma transação de longa duração.

    • idle in transaction (Aborted): A conexão está ociosa dentro de uma transação com falha.

    Query Start

    A hora de início da consulta.

    Query

    A consulta executada.

    Nota

    Consultas longas podem ser truncadas.

    PID

    O ID do processo (PID) da consulta.

    Operation

    • Kill: Encerre conexões inesperadas individualmente ou em lotes.

    • Details: Clique em para visualizar informações detalhadas sobre a conexão.

Consultar conexões com SQL

Use as instruções SQL a seguir para consultar informações de conexão.

  1. Consulte o número de conexões com o banco de dados atual.

    Execute os comandos a seguir para visualizar a contagem de conexões do banco de dados atual. As descrições dos campos estão em Consultar a view pg_stat_activity.

    • Para Hologres V1.1 e posterior:

      SELECT  datname::TEXT
              ,COUNT(1) AS COUNT
      FROM    pg_stat_activity
      WHERE   backend_type = 'client backend'
      AND     application_name != 'hologres'
      GROUP BY datname::TEXT;
    • Para Hologres V0.10 e anterior:

      SELECT  datname
              ,COUNT(1) AS COUNT
      FROM    pg_stat_activity
      WHERE   backend_type = 'client backend'
      AND     application_name != 'hologres'
      GROUP BY datname;
  2. Visualize o estado de cada conexão.

    Use o HoloWeb no console do Hologres para visualizar o status das conexões ou execute a instrução a seguir para consultar todos os estados de conexão JDBC ou PSQL.

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

    Substitua <statename> por um dos seguintes estados:

    • idle: O processo está aguardando novos comandos do cliente.

    • active: Uma conexão ativa, onde o processo está executando uma consulta.

    • idle in transaction: O processo está em uma transação, mas não está executando uma consulta no momento.

    • idle in transaction (aborted): O processo está em uma transação com falha e não está executando uma consulta no momento.

    • fastpath function call: Indica que um processo está executando uma função fast-path.

    • disabled: Indica que o rastreamento de atividades (track activities) para o processo está desativado.

    Por exemplo, consulte conexões ociosas:

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

    Componentes do Hologres, como o HoloWeb, usam JDBC e consomem conexões. Se a contagem se aproximar consistentemente de max_connections, verifique se há vazamentos de conexão na sua aplicação e configure um pool de conexões adequado. Liberar conexões.

  3. Visualize o número de conexões em cada nó de acesso.

    Consulte a contagem de conexões em cada nó FE (Hologres V1.3.23 e posterior). Nós FE sem conexões ativas são omitidos dos resultados.

    select * from hologres.hg_connections;

    A tabela a seguir descreve os campos no resultado da consulta.

    • fe_id: O ID do nó FE.

    • used_connections: O número de conexões atualmente em uso no nó FE.

    • max_connections: O número máximo de conexões para um nó FE, que corresponde ao valor retornado pelo comando show max_connections.

Encerrar conexões

Os sintomas a seguir indicam que o limite de conexões foi atingido:

  • A contagem de conexões atinge ou excede max_connections, conforme mostrado na página Monitoring and Alarms no console do Hologres.

  • Ocorre o erro FATAL: sorry, too many clients already connection limit exceeded for superusers.

  • É reportado o erro FATAL: remaining connection slots are reserved for non-replication superuser connections.

Para resolver esses problemas, conecte-se com uma conta Superuser e execute a instrução a seguir para verificar se há conexões ociosas.

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

Se os resultados mostrarem processos ociosos excessivos, use o pid dos resultados para liberar conexões com as instruções a seguir. As descrições dos campos estão em Consultar a view 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%';

Conexões reservadas para Superusers

O Hologres reserva conexões para Superusers; a quantidade varia conforme a especificação da instância (Gerenciamento de instâncias). Essas conexões permitem tarefas de gerenciamento, como encerrar conexões ociosas quando o limite é atingido. Usuários padrão podem usar max_connections menos a contagem reservada. Não utilize contas Superuser para operações regulares — isso pode esgotar todas as conexões e bloquear o acesso administrativo.

Limites de conexão por usuário

Definir um limite de conexão por usuário

Defina um limite de conexões por usuário para evitar consumo excessivo de recursos.

Execute a instrução a seguir para limitar as conexões de um usuário em um único nó de acesso. Para instâncias com múltiplos nós, o limite total é (connections per node) * (number of nodes).

  • Sintaxe

    ALTER ROLE "Alibaba Cloud account ID" CONNECTION LIMIT <number>; 
  • Parâmetros

    Parâmetro

    Descrição

    Alibaba Cloud account ID

    O ID da conta a ser limitada. Para um usuário RAM, adicione o prefixo p4_ ao UID da conta.

    Visão geral de contas.

    number

    O limite de conexões.

    O valor deve estar no intervalo [-1, N]. Um valor de -1 remove o limite de conexões do usuário.

  • Exemplo

    Este exemplo limita o usuário RAM 283813xxxx a uma conexão por nó.

    ALTER ROLE "p4_283813xxxx" CONNECTION LIMIT 1; 

Visualizar limites de conexão por usuário

Execute a instrução a seguir para visualizar os limites de conexão por nó para os usuários da instância.

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

Exemplo de resultado da consulta:

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

Encerrar automaticamente conexões ociosas

Se as conexões da instância se aproximarem consistentemente do limite, sua aplicação pode ter vazamentos de conexão. Ative o encerramento automático de conexões ociosas para liberar recursos. Conexões que permanecerem ociosas além da duração especificada serão desconectadas automaticamente.

  • Limitações

    Suportado no Hologres V0.10.25 e posterior. Para versões anteriores, consulte Erros comuns durante uma atualização ou entre no grupo DingTalk do Hologres para solicitar uma atualização. Como obter mais suporte online?

  • Sintaxe

    • Nível de sessão

      -- Automatically disconnect a connection if it has been idle for 10 minutes (600,000 milliseconds).
      SET idle_session_timeout = 600000;
    • Nível de banco de dados

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

      Substitua <db_name> pelo nome do banco de dados para o qual você deseja ativar o encerramento automático de conexões ociosas.

Melhores práticas de conexão

Siga estas melhores práticas para utilizar conexões do Hologres.

  • Utilize a conta Superuser com cautela

    • Não use contas Superuser para conexões de aplicações ou operações regulares. Se as conexões excederem o limite, até mesmo Superusers podem ficar impossibilitados de se conectar.

    • Crie uma conta Superuser dedicada para emergências, como esgotamento do limite de conexões ou consultas travadas.

  • Configure um pool de conexões adequado

    • Por padrão, o Hologres não encerra conexões ociosas automaticamente. Utilize um pool de conexões para liberar conexões ociosas prontamente.

    • Limpe periodicamente as conexões ociosas para liberar recursos.

Erros comuns

  • Uma mensagem de erro é retornada durante a execução de SQL: terminating connection due to idle state timeout.

  • Causa: A conexão foi encerrada automaticamente porque excedeu o tempo limite de ociosidade configurado.

  • Solução: Reconecte-se à instância ou aumente o tempo limite de conexão ociosa. Para obter informações sobre como modificar o tempo limite de conexão ociosa, consulte Encerrar automaticamente conexões ociosas.