Quero monitorar os grupos de conexão de proxy do Amazon Relational Database Services (Amazon RDS) e otimizar minhas conexões de banco de dados.
Resolução
Monitorar as métricas do RDS Proxy e do banco de dados de RDS de destino
Conclua as etapas a seguir:
- Abra o console do Amazon CloudWatch.
- No painel de navegação, escolha Métricas e, em seguida, Todas as métricas.
- Na guia Procurar, escolha RDS e, em seguida, Métricas por proxy.
- Pesquise as seguintes métricas:
ClientConnections para o número de conexões de entrada da aplicação.
MaxDatabaseConnectionsAllowed para o número máximo de conexões de banco de dados que o RDS Proxy permite.
DatabaseConnections para o número atual de conexões que o RDS Proxy estabelece com o banco de dados de destino.
- Na guia Procurar, escolha RDS e, em seguida, DBInstanceIdentifier.
- Pesquise a métrica DatabaseConnections para obter o número total de conexões que o RDS Proxy estabelece com o banco de dados de destino e todas as outras conexões com o banco de dados de destino.
É uma prática recomendada analisar essas métricas com uma granularidade de 1 minuto e usar a estatística Sum para obter mais detalhes sobre os padrões de uso da conexão.
Analisar eventos de log do RDS Proxy
Modifique o RDS Proxy para ativar o Registro em log avançado para que seja possível obter detalhes avançados, como as conexões que estão abrindo ou fechando. Também é possível obter detalhes de operações internas, como fixação e empréstimo.
Observação: o registro em log avançado é desativado automaticamente após 24 horas.
Para analisar os eventos de log do RDS Proxy, conclua as seguintes etapas:
- Abra o console do CloudWatch.
- No painel de navegação, clique em Logs e, depois, selecione Grupos de logs.
- Selecione o grupo de logs do seu proxy /aws/rds/proxy/.
- Na guia Fluxos de logs, selecione o fluxo de log para ver os eventos de log.
Executar consultas do CloudWatch Logs 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, clique em Logs Insights.
Use o editor de consultas para executar as consultas a seguir. Em cada consulta, substitua prx-000##### pelo ID do proxy.
Para consultar erros ou avisos, execute a seguinte consulta:
fields @timestamp, @message
| sort @timestamp asc
| filter @logStream like 'prx-000#####'
| filter @message like / ERROR: / or @message like / WARN: /
Para determinar por que a conexão do cliente foi encerrada, execute a seguinte consulta:
fields @message
| sort @timestamp asc
| filter @logStream like 'prx-000#####'
| filter @message like /The client connection closed/ and @message like /CUSTOMER/
| parse 'Reason: *' as reason
| stats count() as reasonCount by reason
| sort by reasonCount desc
| limit 20
Para determinar por que a conexão com o banco de dados foi fechada, execute a seguinte consulta:
fields @message
| sort @timestamp asc
| filter @logStream like 'prx-000xxxxx'
| filter @message like /The database connection closed/ and @message like /CUSTOMER/
| parse 'Reason: *' as reason
| stats count() as reasonCount by reason
| sort by reasonCount desc
| limit 20
Modificar as configurações de conexão do RDS Proxy
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.
MaxConnectionsPercent
Se seu banco de dados atingiu a configuração máxima de conexão, você receberá a seguinte mensagem de erro:
"The database connection closed. Reason: The pool reached the maximum connection setting, and a connection with different properties was required."
Para resolver esse problema, monitore as métricas do CloudWatch DatabaseConnections e MaxDatabaseConnectionsAllowed. Se DatabaseConnections estiver atingindo MaxDatabaseConnectionsAllowed, limite o tráfego de entrada. Ou execute o comando modify-db-proxy-target-group da AWS CLI ou a operação da API ModifyDBProxyTargetGroup para aumentar a configuração MaxConnectionsPercent. Defina MaxConnectionsPercent em, pelo menos, 30% acima do seu uso máximo monitorado recente.
MaxIdleConnectionsPercent
Se houver muitas conexões inativas no grupo, você receberá a seguinte mensagem:
"The database connection closed. Reason: There were too many idle connections in the connection pool. A new slot in the connection pool is now available."
Para resolver esse problema, monitore as métricas do CloudWatch ClientConnections e DatabaseConnections. Se ClientConnections for continuamente menor que DatabaseConnections, haverá conexões ociosas com seu banco de dados de destino. Por padrão, a configuração MaxIdleConnectionsPercent é 50% do valor de MaxConnectionsPercent. Para modificar MaxIdleConnectionsPercent, execute o comando modify-db-proxy-target-group da AWS CLI ou a operação da API ModifyDBProxyTargetGroup. Mantenha aberta uma alta porcentagem de conexões de banco de dados ociosas. Use valores mais baixos para workloads consistentes para evitar o uso inativo de recursos.
IdleClientTimeout
Se seu banco de dados exceder o tempo limite de inatividade da conexão do cliente, você receberá a seguinte mensagem:
"The client connection closed. Reason: The idle timeout was exceeded."
Para remover conexões inativas, reduza IdleClientTimeout. Se seu workload estabelecer conexões frequentes com o proxy, aumente IdleClientTimeout para que você não precise estabelecer conexões. Para modificar IdleClientTimeout, execute o comando modify-db-proxy da AWS CLI ou a operação da API ModifyDBProxy.
ConnectionBorrowTimeout
Se você receber um erro de tempo limite, o RDS Proxy não poderá estabelecer uma conexão com o banco de dados.
Para definir a configuração ConnectionBorrowTimeout como um valor menor que o valor do tempo limite de conexão, execute o comando modify-db-proxy-target-group da AWS CLI ou a operação da API ModifyDBProxyTargetGroup.
Encerrar manualmente as conexões abertas
Se uma conexão de banco de dados ficar inativa por mais de 24 horas, você receberá a seguinte mensagem de erro:
"The database connection closed. Reason: The idle connection exceeded the maximum connection duration."
Não é possível modificar a duração máxima de uma conexão de banco de dados ociosa no RDS Proxy. Em vez disso, é uma prática recomendada encerrar manualmente as conexões que a aplicação não precisa reutilizar.
Informações relacionadas
Conceitos e terminologia do RDS Proxy
Monitorar métricas do proxy do RDS com o Amazon CloudWatch