Todos os produtos
Search
Central de documentação

:Solucionar problemas de alta utilização de CPU ou carga em uma instância Linux

Última atualização: Jun 23, 2026

Descrição do problema

A alta utilização de CPU ou carga do sistema pode causar os seguintes sintomas:

  1. Problemas nos serviços de aplicativo

    • As conexões remotas SSH ficam lentas ou sem resposta e podem falhar em casos graves.

    • O tempo de resposta do site ou aplicativo aumenta significativamente e as páginas carregam lentamente.

    • As requisições expiram com frequência, as chamadas de API falham e a capacidade geral de processamento dos serviços diminui de forma perceptível.

  2. Anomalias de recursos do sistema

    • A utilização de CPU da instância excede consistentemente 80% ou até se aproxima de 100%.

    • A carga do sistema (load average) é consistentemente maior que o número de núcleos lógicos de CPU. Por exemplo, o load average é maior que 4 em uma instância de 4 núcleos.

    • O CloudMonitor acionou alertas de alta carga do sistema por SMS ou e-mail.

Causas

  • Processos intensivos de CPU: falhas na lógica do aplicativo costumam causar esse problema, como loops infinitos, tarefas computacionais complexas ou requisições de alta concorrência, que podem incluir tráfego legítimo e ataques maliciosos.

  • Gargalo de desempenho de I/O: operações frequentes de leitura/gravação em disco ou desempenho insuficiente de armazenamento fazem com que os processos aguardem longos períodos por I/O, o que aumenta o load average do sistema.

  • Chamadas de kernel ou sistema: trocas de contexto frequentes, tarefas de kernel ou problemas de driver levam a alta utilização de CPU no modo kernel.

  • Programas anormais ou maliciosos: a instância está infectada com software de mineração de criptomoedas, cavalo de Troia ou rootkit com processos ocultos que consomem grande quantidade de recursos computacionais.

Resolução

Use a ferramenta top para identificar a causa principal da alta utilização de CPU ou carga do sistema, como espaço do usuário, espaço do kernel ou espera de I/O. Em seguida, use ferramentas como perf, iotop ou vmstat para uma análise mais aprofundada e resolva o problema.

Etapa 1: Identificar o gargalo de CPU

  1. Faça login em uma instância ECS usando uma conexão VNC.

    1. Acesse ECS console - Instances. No canto superior esquerdo, selecione a região e o grupo de recursos da instância de destino.

    2. Acesse a página de detalhes da instância de destino. Clique em Connect e selecione VNC. Insira suas credenciais para fazer login na instância ECS.

  2. Verifique a carga do sistema e a atividade dos processos.

    sudo top
  3. Identifique a causa do problema.

    Na interface interativa do top, pressione P para ordenar os processos por utilização de CPU em ordem decrescente. Identifique o ID do processo (PID) e o nome do comando (COMMAND) do processo que mais consome CPU.

    • Se um processo de aplicativo como java, python ou php-fpm utiliza consistentemente mais de 80% da CPU, consulte Processos de aplicativo sobrecarregados.

    • Se o valor de espera de I/O (wa) na linha %Cpu(s) estiver consistentemente acima de 20%, enquanto os valores de espaço do usuário (us) e espaço do kernel (sy) são baixos, e o load average é muito maior que o número de núcleos de CPU, isso indica que a CPU está ociosa aguardando I/O de disco por muito tempo. Nesse caso, consulte Gargalos de I/O de disco.

      Quando um processo aguarda a conclusão de uma operação de I/O de disco, ele entra em um estado de suspensão ininterruptível (estado D) e não pode ser encerrado. Um grande número de processos no estado D indica resposta lenta do disco, o que força a CPU a aguardar e aumenta a carga do sistema.
    • Se o valor de sistema (sy) na linha %Cpu(s) estiver consistentemente acima de 30%, geralmente indica que o kernel está executando chamadas de sistema ou tratando interrupções com frequência. Nesse caso, consulte Chamadas de kernel ou sistema sobrecarregadas.

    • Se o valor de softirq (si) na linha %Cpu(s) estiver consistentemente acima de 15%, indica alto tráfego de rede. Nesse caso, consulte Interrupções de rede sobrecarregadas.

Etapa 2: Analisar e resolver o problema

Processos de aplicativo sobrecarregados

  • Analisar e otimizar o código:

    Use ferramentas de profiling de desempenho para localizar pontos críticos no código.

    • Aplicativos Java: use jstack <PID> para exportar pilhas de threads. Procure threads no estado RUNNABLE e verifique se a pilha de chamadas está presa em um método específico por muito tempo.

    • Aplicativos C/C++: use perf top -p <PID> para visualizar os símbolos de função específicos que mais consomem CPU.

    Com base na análise, otimize algoritmos, corrija loops infinitos ou reduza computações desnecessárias.

  • Mitigar ataques na camada de aplicativo: se você está enfrentando um ataque malicioso de CC na camada de aplicativo, caracterizado por um grande número de requisições HTTP incomuns, implante um web application firewall (WAF) para proteção. Para mais informações, consulte Proteger uma instância ECS contra ataques de CC usando WAF.

  • Fazer upgrade de recursos: se o gargalo é causado pelo crescimento normal dos negócios, faça upgrade do tipo de instância.

Gargalos de I/O de disco

  1. Identifique o processo que causa alto I/O: Solucionar problemas de alta carga de I/O de disco em um sistema Linux.

  2. Verifique o acúmulo de processos no estado D:

    sudo ps -axjf | grep " D"
    • Otimização de aplicativo: reduza os níveis de log e adicione índices às consultas de banco de dados para diminuir as operações de leitura/gravação em disco.

    • Fazer upgrade de armazenamento: faça upgrade da categoria do disco em nuvem (por exemplo, de ESSD PL1 para ESSD PL2/PL3) para melhorar o IOPS e o throughput. O IOPS máximo de um disco em nuvem também é limitado pelo tipo de instância anexada. Se o limite de IOPS do tipo de instância é menor que a capacidade do disco em nuvem, faça upgrade do tipo de instância.

    • Reiniciar o sistema: uma reinicialização do sistema pode limpar o acúmulo de processos no estado D.

Chamadas de kernel ou sistema sobrecarregadas

  1. Verificar trocas de contexto: execute o comando vmstat 1 e observe o valor na coluna cs (troca de contexto). Se esse valor exceder consistentemente 100.000, a taxa de trocas de contexto é excessiva. Verifique se o aplicativo está criando e destruindo muitas threads.

  2. Verificar tarefas de kernel: se o processo kswapd0 apresenta alta utilização de CPU, a memória física é insuficiente e o kernel está recuperando memória com frequência. Para resolver, faça upgrade do tipo de instância.

    Quando a memória física está baixa, o kswapd0 verifica, recupera e faz swap de páginas de memória com frequência. Essas tarefas intensivas em computação consomem recursos significativos de CPU e causam alta utilização.

Interrupções de rede sobrecarregadas

  1. Analisar tráfego: use ferramentas como iftop ou iptraf-ng para analisar a origem e o tipo do tráfego de rede.

  2. Verificar a configuração: para cargas de trabalho de rede altas, ative multi-queue para a placa de interface de rede (NIC) para distribuir as interrupções entre múltiplos núcleos de CPU.

  3. Responder a ataques de rede:

Próximas etapas

  • Configurar monitoramento e alertas: defina limiares de alerta razoáveis para métricas como utilização de CPU, carga do sistema e espera de I/O para receber avisos antecipados. Para análise histórica de métricas do sistema Linux, use a ferramenta atop para monitorar métricas do sistema Linux.

  • Realizar verificações de segurança regulares: use o Security Center para executar periodicamente verificações de vulnerabilidade, verificações de vírus e verificações de baseline nos hosts para corrigir riscos de segurança em potencial.

  • Realizar revisões e otimizações regulares: revise periodicamente o desempenho e o código dos sistemas e aplicativos para identificar e resolver possíveis gargalos de desempenho.

  • Planejamento de capacidade: planeje a capacidade de recursos com base nas tendências de crescimento dos negócios para garantir que o sistema possa suportar a carga futura.