Sintomas
Resposta lenta: Comandos do protocolo Secure Shell (SSH) apresentam atrasos. O acesso a sites ou APIs está lento ou atinge o tempo limite.
Métricas elevadas: As métricas de CPU, memória e I/O de disco excedem consistentemente 80%.
Interrupção de serviço: O sistema encerra processos críticos devido a um erro de falta de memória (OOM) e a instância reinicia automaticamente.
Falha de login: Conexões SSH são recusadas.
Causas
Problemas na aplicação: O código da aplicação apresenta gargalos de desempenho ou vazamentos de memória.
Picos de tráfego: O acesso simultâneo supera a capacidade de processamento da instância.
Gargalo de I/O: As operações de leitura e gravação no disco estão saturadas, causando alto
iowaitda CPU.
Soluções
Etapa 1: Use o htop para identificar rapidamente processos anômalos
-
Faça login em uma instância ECS usando uma conexão VNC.
Acesse ECS console - Instances. No canto superior esquerdo, selecione a região e o grupo de recursos da instância de destino.
Acesse a página de detalhes da instância desejada. Clique em Connect e selecione VNC. Insira suas credenciais para fazer login na instância ECS.
-
Instale e execute o htop.
sudo yum install -y htop htop -
Analise a saída na interface do htop.
Para localizar processos com alto consumo de CPU, pressione a tecla
F6e ordene porPERCENT_CPUem ordem decrescente.Para encontrar processos com alto consumo de memória, pressione a tecla
F6e ordene porPERCENT_MEMem ordem decrescente.
Etapa 2: Use o sar para diagnosticar gargalos de recursos
Após usar o htop para identificar um sintoma, utilize o sar para obter dados quantitativos e confirmar se o gargalo é de CPU, memória ou I/O.
-
Instale e ative o sysstat.
sudo yum install -y sysstat systemctl start sysstat && systemctl enable sysstat -
Execute uma análise direcionada.
-
Analise o uso da CPU (
sar -u) para confirmar onde o tempo da CPU é consumido.# Collect data once per second for a total of 5 times sar -u 1 5%userelevado: Indica problema na aplicação.%systemelevado: Indica chamadas frequentes ao kernel ou de I/O.%iowaitconsistentemente maior que 20%: Indica gargalo de I/O de disco.
-
Avalie a carga do sistema (
sar -q) para medir o nível de ocupação do sistema.# Collect data once every 2 seconds for a total of 5 times sar -q 2 5ldavg-1maior que o número de núcleos da CPU: O sistema está sobrecarregado.runq-szelevado: Muitos processos aguardam na fila pela CPU.
-
Verifique a atividade de memória e swap (
sar -resar -W) para determinar se a memória está esgotada.# Analyze memory usage sar -r 1 3 # Analyze swap activity (Swap) sar -W 1 3pswpin/soupswpout/sconsistentemente maior que 0: A memória física é insuficiente e o sistema usa o disco como swap, degradando o desempenho.
-
Examine o I/O de disco (
sar -d) para identificar gargalos de desempenho do disco.# Collect data once per second for a total of 3 times to analyze a specific disk sar -d 1 3%utilpróximo de 100%: O I/O do disco está saturado.awaitmaior que 20 ms: O tempo de processamento das solicitações de I/O é excessivo.
-
Etapa 3: Aplique soluções e otimizações direcionadas
-
Para processos de aplicação com alto consumo de CPU:
Otimização de código: Utilize ferramentas como
perf(C/C++) ejstack(Java) para identificar e otimizar trechos de código críticos.Otimização de lógica: Verifique e corrija operações ineficientes, como loops infinitos e consultas SQL com varredura completa de tabelas.
-
Em casos de memória insuficiente ou troca frequente (swapping):
Investigue vazamentos: Empregue ferramentas como
valgrind(C/C++) ejmap(Java) para analisar vazamentos de memória.Ajuste configurações: Configure parâmetros de memória da aplicação, como
-Xmse-Xmxpara uma Java Virtual Machine (JVM).Atualize recursos: Aumente a memória física alterando o tipo da instância. Para mais informações, consulte Visão geral das alterações de tipo de instância.
I/O de disco elevado: Para mais informações, consulte Solucionar problemas de carga alta de I/O de disco em sistemas Linux.
Próximas etapas
Configurar monitoramento e alertas: Defina limiares de alerta para métricas essenciais, como CPU, memória, carga e disco, para receber avisos antecipados.
Planejar o Auto Scaling: Para cargas de trabalho com flutuações, como aplicações web, configure políticas de Auto Scaling para adicionar ou remover instâncias automaticamente conforme as mudanças no tráfego.