Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Por que minha instância Linux do EC2 está deixando de responder devido à utilização excessiva de recursos?
Minha instância Linux do Amazon Elastic Compute Cloud (Amazon EC2) deixa de responder devido à utilização excessiva de recursos. Como posso evitar isso?
Breve descrição
Há várias causas comuns pelas quais uma instância deixa de responder:
- Memória: As instâncias do EC2 não têm espaço de swap alocado por padrão. A falta de memória invoca o gerenciador Linux Out Of Memory (OOM). O gerenciador de OOM encerra processos, como um banco de dados, servidor web ou serviço SSH.
- Rede: Sem rede, seu sistema não pode responder às solicitações ARP a partir de verificações de status. Quando isso ocorre, sua instância não consegue se comunicar com outros hosts.
- Operações de E/S: Sem E/S de disco, as instruções de leitura ou gravação ficam travadas. Por exemplo, criação de arquivos temporários, leituras de bibliotecas do sistema ou bancos de dados.
- CPU: Todas as tarefas anteriores exigem tempo de CPU para funcionar. O uso de 100% da CPU por um período prolongado impede que o kernel execute operações normais do sistema operacional.
Esses problemas também podem se acumular em um efeito bola de neve. Por exemplo, você fica sem memória e o gerenciador de OOM encerra um processo importante. Agora, um segundo processo que depende do primeiro processo que foi interrompido inicia um número muito maior de ciclos de CPU. Se essa tarefa estiver relacionada ao disco, esse ciclo também poderá esgotar o volume do Amazon Elastic Block Store (Amazon EBS). Além disso, o problema pode ser transferido para uma instância diferente que está esperando a comunicação da instância que não responde.
Resolução
Se o seu sistema tem alta utilização da CPU, ou muitas vezes deixa de responder devido à utilização excessiva de recursos, faça o seguinte:
Reúna informações
Monitore o uso da CPU usando o Amazon CloudWatch
Use uma ferramenta de monitoramento como o Amazon CloudWatch para observar tendências e padrões de alta utilização de recursos.
Use ferramentas de monitoramento do sistema
Se você tiver vários serviços e não tiver certeza de qual deles está utilizando recursos em excesso, instale um utilitário como atop. Você também pode usar ferramentas como htop, top e sar. Todas essas ferramentas ajudam a identificar os processos que estão consumindo a maior parte do uso da CPU. Para obter mais informações, consulte:
- How can I configure and use SAR to monitor performance metrics on my Amazon EC2 Linux instance?
- Como posso usar a ferramenta atop e a ferramenta atopsar para obter estatísticas históricas de uso de processos na minha instância Linux do EC2?
- Como configuro as ferramentas de monitoramento ATOP e SAR para minha instância do EC2 executando Amazon Linux, RHEL, CentOS ou Ubuntu?
Obter mais informações sobre o processo que está usando alta CPU
Use o comando pidstat ou ps para obter informações mais detalhadas sobre o processo. As informações fornecidas na saída do comando ajudam a determinar se o processo é um do sistema ou do usuário. Para obter mais informações sobre como configurar e usar as ferramentas necessárias para executar esses comandos, consulte o seguinte:
- pidstat(1) na página do manual do Linux
- ps(1) na página do manual do Linux
Verifique os log do sistema
Verifique os erros ou avisos relacionados ao alto uso da CPU. Por exemplo, use o comando dmesg para visualizar as mensagens do kernel e visualizar se há mensagens do sistema nos arquivos /var/log/syslog ou /var/log/messages. A saída do comando e o conteúdo do arquivo de log ajudam a identificar problemas no sistema ou no aplicativo que estão causando problemas.
Revise o histórico de comandos
Revise o histórico de comandos para ver se houve um erro humano. O histórico de comandos geralmente fica no arquivo ~/.bash_history.
Verifique se há trabalhos agendados
Verifique se há algum trabalho agendado ou trabalho cron em execução na instância do EC2 que possa causar alto uso da CPU. Primeiro, confirme a data e a hora do alto uso da CPU. Em seguida, execute o seguinte comando para listar os trabalhos cron:
sudo crontab -l sudo cat /etc/crontab sudo cat crontab -l -u <username>
O comando anterior lista a configuração crontab para o usuário raiz. Inclua a opção**-u** no comando para verificar o cron para um usuário específico. Em seguida, verifique a hora em que você notou o problema. Verifique seus logs, incluindo o seguinte:
/var/log/messages /var/log/syslog /var/log/dmesg /var/log/cron.log
Use o comando grep para filtrar entradas relevantes para os trabalhos cron específicos que você deseja investigar. Confirme se ocorreram erros relacionados a um dos cron identificados.
Verifique o uso da memória
O alto uso de memória pode levar ao alto uso da CPU devido ao uso do espaço de troca. Use o comando free para verificar o uso da memória. Para obter mais informações sobre como configurar e usar as ferramentas necessárias, consulte Dissecar o comando free no site redhat.com.
Verifique o tráfego de rede
O alto tráfego de rede pode causar alta utilização da CPU, especialmente se a instância está lidando com muitas solicitações de rede. Use o comando iftop para monitorar o tráfego de rede e considere otimizar sua configuração de rede ou atualizar seu tipo de instância, se necessário. Para obter mais informações sobre como configurar e usar as ferramentas necessárias, consulte Análise de interface Linux sob demanda com iftop no site redhat.com.
Verifique a E/S do disco
Uma alta E/S de disco pode causar alto uso da CPU. Use o comando iostat para monitorar a E/S do disco e identificar quaisquer processos que possam causar alta E/S. Para obter mais informações, consulte Relatórios de E/S da linha de comando do Linux no site redhat.com.
Aja com base nos dados adquiridos
Otimize o código
Se seu aplicativo estiver causando alto uso da CPU, otimize seu código. Para fazer isso, identifique e elimine gargalos de desempenho. Ferramentas de criação de perfil, como perf ou strace, ajudam a identificar códigos problemáticos. Para obter mais informações sobre como configurar e usar as ferramentas necessárias, consulte o seguinte:
- Gravar e analisar perfis de desempenho com perf
- Usar strace para rastrear chamadas do sistema feitas por um comando
Atualize sua instância
Se seus processos estão utilizando muitos recursos por motivos válidos, como alta ingestão de usuários, considere atualizar sua instância.
O AWS Compute Optimizer pode ajudar você a decidir o tipo e o tamanho apropriados da instância a ser usada. Você também pode considerar escalar horizontalmente usando o Amazon EC2 Auto Scaling.
Configure regras de auditoria do Linux
Se você quiser mais visibilidade sobre os comandos do usuário e as alterações de configuração, poderá configurar o sistema Linux Audit para rastrear alterações.
Evite a utilização excessiva futura
- Antes de implantar um novo aplicativo na produção, crie um ambiente de teste e um parâmetro para determinar a computação, a memória, o EBS e a rede necessários. Implemente de acordo com seus parâmetros e, ao mesmo tempo, desenvolva a tolerância a falhas. Para obter mais informações, consulte:
Projete as interações em um sistema distribuído para evitar falhas
Tutorial: Configurar um aplicativo escalonado e com balanceamento de carga - Verifique se os aplicativos em execução na instância estão otimizados para desempenho. A otimização envolve ajustar arquivos de configuração, otimizar consultas ao banco de dados ou otimizar o código.
- Se seu aplicativo estiver cheio de bancos de dados, considere implementar o armazenamento em cache para reduzir o número de consultas ao banco de dados.
- Verifique se seu software está atualizado com os patches de segurança e correções de erros mais recentes. Software desatualizado pode causar problemas de desempenho e vulnerabilidades, levando à alta utilização da CPU.
- Se seu aplicativo recebe alto volume de tráfego, considere usar um balanceador de carga para distribuir o tráfego em várias instâncias do EC2. Um balanceador de carga reduz a utilização da CPU em qualquer instância.
- Continue monitorando suas instâncias e crie alarmes para determinados limites de uso de recursos.

Conteúdo relevante
- feita há 3 meseslg...
- feita há um mêslg...
- Resposta aceitafeita há 3 meseslg...
- feita há 3 meseslg...
- feita há 10 diaslg...
- AWS OFICIALAtualizada há 7 meses
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano