Como soluciono problemas de uma instância Linux do EC2 que falha em uma verificação de status devido à utilização excessiva de recursos?
A instância Linux do Amazon Elastic Compute Cloud (Amazon EC2) falhou na verificação do status da instância devido à utilização excessiva dos seus recursos.
Breve descrição
A seguir estão três dos motivos mais comuns pelos quais a verificação de integridade pode falhar devido à utilização excessiva de recursos:
- A utilização da CPU da sua instância atingiu quase 100%, e a instância não tinha mais capacidade computacional para a execução do kernel.
- O dispositivo raiz está 100% cheio e está impedindo a conclusão ou início de outros processos.
- Os processos em execução na instância usaram toda a memória, impedindo a execução do kernel.
Resolução
Interrompa e inicie a instância
Aviso:
- os dados armazenados em volumes de armazenamento de instâncias são perdidos quando a instância é interrompida. Salve um backup dos dados antes de interromper a instância. Diferentemente dos volumes baseados em EBS, os volumes de armazenamento de instâncias são efêmeros e não oferecem suporte à persistência de dados. Para obter mais informações, acesse O que acontece quando uma instância é interrompida.
- As operações de interrupção e inicialização na instância forçam o kernel a interromper os processos em execução. Essa é uma solução temporária para devolver recursos ao sistema operacional. Se a causa raiz do problema não for resolvida, a utilização excessiva persistirá.
- O endereço público IPv4 estático que o Amazon EC2 atribuiu automaticamente à instância na inicialização ou no início muda após a interrupção e o início. Para manter um endereço IPv4 público que não muda se a instância for interrompida, use um endereço IP elástico.
Para obter mais informações, consulte Interromper e iniciar suas instâncias.
Verifique as métricas de utilização da CPU do Amazon CloudWatch
Veja as métricas do CloudWatch da instância. Se a utilização da CPU estiver em 100% ou próximo disso, use as seguintes opções para solucionar problemas:
- Reinicialize a instância para retorná-la a um status íntegro.
Observação: se os requisitos de CPU da instância forem maiores do que os oferecidos pelo tipo de instância atual, o problema ocorrerá novamente após a reinicialização. - Considere mudar sua instância para um tipo de instância que atenda aos requisitos da sua CPU.
- Se a instância for uma instância de desempenho expansível (T2, T3 ou T3a), verifique seu CPUCreditBalance listando as métricas da instância. Você pode listar métricas usando o console do CloudWatch ou usando a AWS Command Line Interface (AWS CLI).
Se o saldo de crédito estiver próximo de zero, a CPU da instância poderá sofrer controle de utilização. Se a especificação de crédito estiver definida como padrão na instância, é possível alterar a especificação para ilimitada. Para obter mais informações, consulte Modificar a especificação de crédito de uma instância expansível.
Observação: se você receber erros ao executar os comandos da AWS CLI, utilize a versão mais recente da AWS CLI.
Verifique se há erros no log do sistema da instância
Verifique se há erros de Falta de espaço no dispositivo ou de Falta de memória no log do sistema.
Erro de falta de espaço no dispositivo
Se um erro semelhante a "OSError: [Error 28] Falta espaço no dispositivo '/var/lib/'" aparecer no log do sistema da instância, o sistema de arquivos que contém a pasta listada está cheio. Neste exemplo, /var/lib está cheio.
É possível liberar espaço no sistema de arquivos usando um dos seguintes métodos:
Método 1: use o Console de Série do EC2 para instâncias Linux
Se você ativou o Console de Série do EC2 para instâncias Linux, poderá usá-lo para solucionar problemas com tipos de instâncias baseadas em Nitro compatíveis e instâncias bare metal. O console de série ajuda você a solucionar problemas de inicialização, configuração de rede e problemas de configuração SSH. O console de série se conecta à instância sem a necessidade de uma conexão de rede ativa. É possível acessar o console de série usando o console do Amazon EC2 ou o AWS CLI.
Se você não usou o Console de Série do EC2 anteriormente, verifique os pré-requisitos e configure o acesso antes de tentar se conectar. Se a instância estiver inacessível e o acesso ao console de série não tiver sido configurado, siga as instruções do Método 2: usar uma instância de resgate. Para obter informações sobre como configurar o Console de Série do EC2 para Linux, consulte Configurar o acesso ao Console de Série do EC2.
Método 2: use uma instância de resgate
Aviso: o procedimento a seguir exige a interrupção da instância. os dados armazenados em volumes de armazenamento de instâncias são perdidos quando a instância é interrompida. Salve um backup dos dados antes de interromper a instância. Diferentemente dos volumes baseados em EBS, os volumes de armazenamento de instâncias são efêmeros e não oferecem suporte à persistência de dados. Para obter mais informações, acesse O que acontece quando uma instância é interrompida.
1. Inicie uma nova instância do EC2 na nuvem privada virtual (VPC). Use a mesma imagem de máquina da Amazon (AMI) e a mesma zona de disponibilidade da instância danificada. A nova instância se torna sua instância de resgate.
Ou use uma instância existente que possa ser acessada. A instância existente deve usar a mesma AMI e estar na mesma zona de disponibilidade da instância danificada
2. Interrompa a instância comprometida.
3. Separe o volume raiz do Amazon Elastic Block Store (Amazon EBS) (/dev/xvda ou /dev/sda1) da sua instância danificada. Anote o nome do dispositivo (/dev/xvda ou /dev/sda1) do volume raiz.
4. Anexe o volume do EBS como um dispositivo secundário (/dev/sdf) à instância de resgate.
5. Conecte-se à instância de resgate usando SSH.
6. Crie um diretório de pontos de montagem (/rescue) para o novo volume anexado à instância de resgate
$ sudo mkdir /rescue
7. Monte o volume no diretório criado na etapa 6.
$ sudo mount /dev/xvdf1 /rescue
O dispositivo (/dev/xvdf1) pode estar anexado à instância de resgate com um nome de dispositivo diferente. Use o comando lsblk para visualizar os dispositivos de disco disponíveis junto com os pontos de montagem para determinar os nomes corretos dos dispositivos.
Observação: você poderá receber uma mensagem de erro semelhante à seguinte:
"... tipo fs errado, opção incorreta, superbloco incorreto em /dev/nvme2n1, página de código ou programa auxiliar ausente ou outro erro."
O erro anterior é causado por um conflito de UUID com o sistema de arquivos XFS. Caso receba esse erro, consulte Por que não consigo montar meu volume do Amazon EBS?
8. Execute o comando du -h para verificar quais arquivos estão ocupando mais espaço.
du -shcm /rescue/var/lib/* |sort -n
9. Exclua arquivos conforme necessário para liberar espaço adicional.
10. Execute o comando unmount para desmontar o dispositivo secundário da instância de resgate.
$ sudo umount /rescue
Se a operação de desmontagem não for bem-sucedida, talvez seja necessário interromper ou reinicializar a instância de resgate para permitir uma desmontagem limpa.
11. Separe o volume secundário (/dev/sdf) da instância de resgate. Em seguida, anexe-o à instância original como /dev/xvda (volume raiz).
12. Inicie a instância e, em seguida, verifique se ela responde.
Você pode redimensionar o volume raiz do EBS realizando as seguintes etapas:
1. Solicite a modificação do tamanho do volume do EBS.
2. Amplie um sistema de arquivos Linux após redimensionar um volume usando uma instância de resgate
Erro de falta de memória
Se o erro "Sem memória: encerrar processo" aparecer no log de sistema da instância, a memória da instância está esgotada. Quando a memória está esgotada, o kernel não tem memória suficiente para ser executado e outros processos são encerrados para liberar memória.
Para obter mais informações sobre como resolver problemas de falta de memória (OOM), consulte Sem memória: encerrar processo.
Para verificar os logs de erros de memória (memória insuficiente), siga as etapas do Método 2. Use uma instância de resgate por meio da Etapa 7: Monte o volume.
Em seguida, use os comandos a seguir para pesquisar os logs de alertas de falta de memória, dependendo da sua distribuição Linux:
Amazon Linux 1 e Amazon Linux 2
sudo grep -i -r 'out of memory' /var/log/
Amazon Linux 2023
$ sudo journalctl -p err | grep -i "out of memory"
-ou-
$ sudo dmesg | grep -i "out of memory"
Para obter mais informações sobre como resolver problemas de falta de memória (OOM), consulte Sem memória: encerrar processo.
Falha na alocação de páginas
A falha na alocação de páginas ocorre quando o alocador de memória do kernel falha na solicitação de alocação. Quando isso acontece, uma mensagem de falha na alocação de páginas é adicionada ao log do sistema.
Para solucionar esse problema de falta de memória, considere atualizar a instância para um tipo de instância maior. Ou, para instâncias que usam volumes efêmeros de armazenamento de instâncias, adicione armazenamento de troca à instância para aliviar a pressão da memória.
Para obter mais informações sobre como configurar o espaço de troca, consulte o seguinte:
- Como aloco memória para funcionar como espaço de troca em uma instância do Amazon EC2 usando um arquivo de troca?
- Como aloco memória para funcionar como espaço de troca em uma instância do Amazon EC2 usando uma partição no meu disco rígido?
Observação: a instância usa espaço de troca quando a quantidade de RAM está cheia. É possível usar o espaço de troca para instâncias que têm uma pequena quantidade de RAM, mas isso não é substituto para mais RAM. Como o espaço de troca está localizado no disco rígido da instância, o desempenho é mais lento quando comparado à RAM real. Para incremento de memória e velocidade, considere aumentar o tamanho da instância.
Para obter mais informações sobre falhas de alocação de páginas, consulte O que são falhas de alocação de páginas no site access.redhat.com.
Informações relacionadas
Por que minha instância Linux do EC2 está inacessível e falhando suas verificações de status?
Quais etapas eu preciso seguir antes de alterar o tipo de instância da minha instância Linux do EC2?
Como faço para diagnosticar a alta utilização da CPU em uma instância Windows do EC2?
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano