Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
Como soluciono problemas de fixação de conexão no Amazon RDS Proxy?
Quero solucionar problemas de fixação de conexão ao usar o Amazon Relational Database Services (Amazon RDS) Proxy para acessar o banco de dados de destino.
Resolução
Analisar as métricas do CloudWatch
Conclua as etapas a seguir:
- Abra o console do Amazon CloudWatch.
- No painel de navegação, selecione Métricas e, em seguida, Todas as métricas.
- Na guia Procurar, escolha RDS e, em seguida, Métricas por proxy.
- Pesquise a métrica DatabaseConnectionsCurrentlySessionPinned.
A métrica DatabaseConnectionsCurrentlySessionPinned mostra o número de conexões de banco de dados que o proxy RDS fixa a cada 60 segundos. Quando as operações na solicitação do cliente alteram o estado da sessão, o RDS Proxy fixa as conexões.
Observação: a métrica DatabaseConnectionsCurrentlySessionPinned começa a registrar quando o RDS Proxy detecta a primeira conexão fixada e para quando a conexão fixa tem valores NULL.
Analisar eventos de log do RDS Proxy
Para obter informações detalhadas sobre as instruções SQL e as operações internas do RDS Proxy, modifique o proxy para ativar o registro em log avançado.
Observação: o registro em log avançado é desativado automaticamente após 24 horas.
Para solucionar problemas de fixação de conexão, analise os eventos de log do RDS Proxy.
Conclua as etapas a seguir:
- Abra o console do CloudWatch.
- No painel de navegação, clique em Logs e, depois, selecione Grupos de logs.
- Selecione o grupo de log do seu proxy, como /aws/rds/proxy/name do seu proxy.
- Na guia Fluxos de logs, selecione o fluxo de log para ver os eventos de log.
Executar consultas do CloudWatch Log Insights para detectar anomalias
Para acessar o editor de consultas no CloudWatch Logs Insights, conclua as seguintes etapas:
- Abra o console do CloudWatch.
- No painel de navegação, selecione Logs e, depois, Log Insights.
Use o editor de consultas para executar as consultas a seguir. Em cada consulta, substitua proxy-name pelo nome do proxy.
Para determinar por que uma conexão individual foi fixada, execute a seguinte consulta:
fields @message | sort @timestamp asc | filter @logStream like '{proxy-name}' | filter @message like /The client session was pinned to the database connection/
Para obter as principais conexões fixadas por contagem, execute a seguinte consulta:
fields @message | sort @timestamp asc | filter @logStream like '{proxy-name}' | filter @message like /The client session was pinned to the database connection/ | parse 'Reason: \\\*' as reason | stats count() as reasonCount by reason | sort by reasonCount desc | limit 20
Resolver alterações nas configurações da sessão
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Quando a conexão do cliente altera as configurações das variáveis no nível da sessão, o RDS Proxy fixa a conexão porque não pode reutilizá-la.
Assim, você recebe a seguinte mensagem de erro:
"The client session was pinned to the database connection [dbConnection=xxxx] for the remainder of the session. The proxy can't reuse this connection until the session ends. Reason: SQL changed session settings that the proxy doesn't track. Consider moving session configuration to the proxy's initialization query."
Todas as conexões de banco de dados devem ter configurações idênticas. Para resolver esse problema, adicione a configuração da consulta de inicialização ao criar um proxy. Especifique instruções SQL para que o proxy seja executado ao abrir cada nova conexão de banco de dados. Para modificar um proxy, é possível usar o console do Amazon RDS ou executar o comando modify-db-proxy-target-group da AWS CLI.
Importante: não adicione dados sensíveis, como senhas ou chaves de criptografia de longa duração, à consulta de inicialização. Os métodos criptográficos ou de autenticação não o protegem porque qualquer pessoa com acesso à configuração do seu grupo-alvo de proxy pode visualizar a consulta de inicialização.
Normalmente, você usa a configuração da consulta de inicialização com instruções SET para que cada conexão tenha configurações idênticas. Para incluir várias variáveis em uma única declaração SET, use vírgulas como separadores.
Por exemplo, é possível executar o seguinte comando para definir uma variável de fuso horário na consulta de inicialização:
aws rds modify-db-proxy-target-group --target-group-name default --db-proxy-name proxy --connection-pool-config '{ > "InitQuery": "SET time_zone = \"+00:00\";" > }'
Observação: substitua proxy pelo nome do proxy.
Resolver erros de mensagens de análise e declarações preparadas em nível de protocolo
Quando bibliotecas específicas, como asyncpg/mysql.connector, usam internamente instruções preparadas em nível de protocolo, você recebe uma das seguintes mensagens de erro:
- "The client session was pinned to the database connection [dbConnection=xxxx] for the remainder of the session. The proxy can't reuse this connection until the session ends. Reason: A parse message was detected."
- "The client session was pinned to the database connection [dbConnection=xxxx] for the remainder of the session. The proxy can't reuse this connection until the session ends. Reason: A protocol-level prepared statement was detected."
Se o cliente usar as instruções preparadas, o RDS Proxy fixará a conexão.
Para resolver esse problema, feche todas as conexões que usam instruções preparadas depois que o proxy as usou explicitamente.
Resolver consultas SQL grandes
É possível receber a seguinte mensagem de erro:
"The client session was pinned to the database connection [dbConnection=xxxx] for the remainder of the session. The proxy can't reuse this connection until the session ends. Reason: The connection ran a SQL query which exceeded the 16384 byte limit."
Para todos os mecanismos de banco de dados compatíveis com o proxy RDS, o RDS Proxy fixa uma sessão quando encontra instruções SQL maiores que 16 KB. É uma prática recomendada reduzir o tamanho das instruções SQL. Por exemplo, é possível remover comentários ou limitar o uso de alias.
Reduzir as fixações de conexão
Para evitar solicitações desnecessárias de banco de dados que podem fazer com que o proxy fixe uma conexão, execute as seguintes ações:
- Remova as operações do banco de dados que iniciam uma fixação de conexão.
- Use operações em lote para combinar solicitações relacionadas em uma única consulta.
Para padronizar as configurações de conexão, execute as seguintes ações:
- Mantenha configurações e variáveis consistentes em todas as conexões para gerenciar a reutilização em nível de transação.
- Para o Amazon RDS para PostgreSQL, defina as variáveis no lado do banco de dados. Quando você define as variáveis no lado do cliente, o RDS Proxy fixa a conexão do banco de dados.
- Para bancos de dados Amazon RDS para MySQL, use filtros de fixação de sessão para especificar as operações de banco de dados que podem evitar com segurança os requisitos de fixação de sessão.
É uma prática recomendada mover instruções SET comuns para a consulta de inicialização do proxy para uma inicialização idêntica em todas as conexões e manter a reutilização no nível da transação.
Informações relacionadas
- Idioma
- Português

Conteúdo relevante
- feita há um ano
- feita há 7 meses