Sistemas Operacionais

Encontrando Scripts que Consomem CPU e RAM no Servidor Linux com o Comando "htop"

  • 20 minutos de leitura
  • Equipe Hostragons
Encontrando Scripts que Consomem CPU e RAM no Servidor Linux com o Comando "htop"

O comando htop no servidor Linux é uma das ferramentas de monitoramento mais práticas utilizadas para identificar scripts que consomem excessivamente a CPU e a RAM em tempo real. Ao observar as colunas CPU%, MEM%, PID, USER, TIME+ e COMMAND na tela do htop, você pode descobrir quais processos PHP, Python, Node.js, cron, de banco de dados ou do sistema estão sobrecarregando o servidor; então, você pode intervir de maneira segura, verificando o proprietário do processo, o caminho do arquivo e o propósito da execução.

Independentemente de ser hospedagem compartilhada, VPS, VDS ou servidor dedicado, uma parte significativa das lentidões repentinas se origina de scripts que estão sendo executados sem controle. Por exemplo, um plugin WordPress com erro, um arquivo PHP que entra em um loop infinito, uma tarefa cron que consome muitos recursos, uma consulta de banco de dados não otimizada ou um arquivo da web comprometido podem rapidamente fazer o uso da CPU se aproximar de 100%. Quando o consumo de RAM aumenta, os serviços podem travar, as conexões MySQL podem ser interrompidas, os sites podem retornar erro 503 ou o kernel Linux pode encerrar alguns processos com o OOM Killer.

Neste guia, abordaremos passo a passo desde a instalação do htop até como ler a tela, identificar scripts que consomem CPU e RAM, encontrar o caminho do arquivo através do PID e como intervir de forma segura no processo. Também iremos incluir considerações sobre suspeitas de segurança, controle de cron, análise de logs e sugestões de otimização aplicáveis para evitar a recorrência do problema. Se você está enfrentando frequentemente problemas de limite de recursos em seu servidor, você pode revisar a seleção de infraestrutura em Pacotes de servidor VPS e Hospedagem web de alto desempenho.

O que é htop e por que é mais útil do que o comando top?

htop é uma ferramenta de terminal que permite monitorar interativamente os processos em sistemas Linux. Embora seja semelhante ao comando top, oferece uma interface mais legível, indicadores de recursos coloridos, fácil ordenação, busca, filtragem e gerenciamento de processos. Por isso, especialmente ao diagnosticar rapidamente em um servidor ativo, o htop é uma das primeiras ferramentas que muitos administradores de sistema consultam.

Com o htop, você pode ver instantaneamente as seguintes informações:

  • Porcentagem de CPU utilizada por cada processo
  • Porcentagem e quantidade de RAM utilizada por cada processo
  • Número PID do processo
  • Usuário que está executando o processo
  • Nome do comando ou script
  • Duração de execução e prioridade
  • Média de carga, RAM total, uso de swap e uso de núcleos da CPU

Particularmente em um ambiente de hospedagem onde vários sites, usuários ou serviços estão operando no mesmo servidor, não basta apenas observar o uso total de recursos. É necessário descobrir a qual usuário, site, tarefa cron ou arquivo de script pertence o problema. O comando htop no servidor Linux fornece um diagnóstico rápido nesse ponto.

Instalação do htop: Comandos de acordo com a distribuição

Em muitas distribuições Linux modernas, o htop pode não estar pré-instalado. Se você tiver permissões de root ou sudo, pode instalá-lo em poucos segundos. Antes da instalação, atualizar a lista de pacotes ajuda a reduzir a probabilidade de erros, especialmente em servidores recém-configurados.

Instalação do htop em Servidores Ubuntu e Debian

Em um servidor baseado em Ubuntu ou Debian, os seguintes comandos podem ser utilizados:

sudo apt update

sudo apt install htop -y

Após a instalação, você pode iniciar a ferramenta digitando o comando htop. Se você não tiver permissões sudo, pode ser necessário solicitar suporte ao seu provedor de hospedagem. Se você está usando um VPS gerenciável, geralmente você tem acesso root.

Instalação em AlmaLinux, Rocky Linux, CentOS e RHEL

Em sistemas baseados em RHEL, o gerenciador de pacotes pode ser dnf ou yum, dependendo da versão:

sudo dnf install htop -y

Nas versões mais antigas do CentOS, pode ser necessário o repositório EPEL:

sudo yum install epel-release -y

sudo yum install htop -y

Se a instalação for bem-sucedida, ao digitar htop no terminal, a tela de monitoramento colorida será exibida. Se você é novo na administração de servidores, o conteúdo do guia de comandos Linux também fornece um bom ponto de partida.

Lendo a Tela do htop: O que cada coluna significa?

Quando o htop é aberto, a parte superior da tela exibe informações sobre núcleos da CPU, RAM, swap, número de tarefas, número de threads, média de carga e tempo de atividade. Na parte inferior, os processos em execução são listados. As áreas mais comumente usadas para diagnóstico de problemas são as seguintes.

Lendo a Tela do htop: O que cada coluna significa?
Coluna Significado Quando suspeitar?
PID É o número de identificação único do processo. Necessário para investigar o caminho do arquivo e as conexões.
USER É o usuário do Linux que está executando o processo. Processos em execução sob usuários inesperados devem ser verificados.
CPU% É a taxa de uso da CPU pelo processo em tempo real. Processos que permanecem entre 80-100% por longos períodos devem ser investigados.
MEM% É a participação do processo na RAM total. Se um único script usa mais de 20% de RAM, é arriscado.
TIME+ É o tempo total de CPU utilizado pelo processo. Mostra trabalhos que consomem recursos por longos períodos, não temporariamente.
COMMAND É a informação sobre o comando, serviço ou script em execução. O caminho do arquivo deve ser pesquisado em processos como php, python, node, perl, bash, java.

Um ponto importante a ser observado é que um pico momentâneo de CPU nem sempre é um problema. Por exemplo, durante backups, otimizações de imagem, limpeza de cache ou tráfego intenso, a CPU pode experimentar uma alta temporária. O problema ocorre quando o mesmo processo consome CPU ou RAM alta por minutos, a média de carga se eleva muito acima do número de núcleos e os serviços da web se tornam incapazes de responder.

Encontrando Scripts que Consomem CPU com htop

Para encontrar scripts que consomem excessivamente a CPU, você pode selecionar o campo de ordenação pressionando a tecla F6 enquanto estiver na tela do htop ou ordenar pela coluna CPU%. Em alguns terminais, se o suporte ao mouse estiver habilitado, clicar no cabeçalho CPU% também pode ser suficiente. Os processos exibidos no topo são os que mais consomem CPU naquele momento.

Passo 1: Ordene pela Coluna CPU%

Enquanto o htop está em execução, ordene os processos pelo uso de CPU. Por exemplo, se um dos processos como php-fpm, php, python3, node, java, mysqld ou bash estiver sempre no topo, anote esse processo. Em uma utilização de núcleo único, 100% pode parecer o limite normal, enquanto em sistemas multi-core, um processo pode mostrar valores como 200% ou 400%. Isso significa que o processo está utilizando múltiplos núcleos.

Passo 2: Anote as Informações de PID e USER

Registre o número PID e as informações de USER do processo suspeito. Por exemplo, se o PID for 24819, USER for siteuser e na coluna COMMAND você vê php /home/siteuser/public_html/wp-cron.php, a probabilidade é alta de que o problema esteja relacionado ao cron ou à mecânica do WordPress no site em questão. Se a coluna COMMAND for muito curta, você pode habilitar a exibição completa da linha de comando nas configurações do htop ou obter detalhes com o comando ps.

Passo 3: Veja o Comando Real do Processo

Para ver a linha de comando detalhada através do PID, você pode usar o seguinte comando:

ps -fp PID

Exemplo de uso:

ps -fp 24819

Essa saída normalmente mostra de qual arquivo o script está sendo executado. Se o comando aparecer como php /home/kullanici/public_html/index.php, pode ser uma solicitação da web baseada em tráfego. Se aparecer como php /home/kullanici/public_html/wp-content/plugins/bilinmeyen-eklenti/task.php, pode ser um problema relacionado a um plugin.

Passo 4: Verifique o Caminho do Arquivo e os Arquivos Abertos

Uma ferramenta muito valiosa para ver quais arquivos um processo está utilizando é o comando lsof:

lsof -p PID

Esse comando mostrará os arquivos, bibliotecas, logs e conexões de rede que o processo mantém abertos. Em ambientes de hospedagem, essa saída ajuda a entender qual diretório do site está ativo. Por exemplo, se você ver um arquivo PHP com um nome estranho em /home/example/public_html/wp-content/uploads, isso pode ser um sinal de violação de segurança. Nesse caso, não é suficiente apenas encerrar o processo; é necessário realizar limpeza de arquivos, troca de senhas, atualização de plugins e verificação de segurança. Para configurações de SSL e conexão segura, a página soluções de certificados SSL também pode ser revisada.

Encontrando Scripts que Consomem RAM com htop

Problemas de RAM podem ser mais sutis do que problemas de CPU. Quando a CPU sobe, geralmente é percebido como uma lentidão momentânea; quando a RAM se esgota, os serviços podem ser encerrados inesperadamente, a swap pode ser utilizada intensivamente e a latência no servidor pode aumentar. No htop, você pode listar os processos que mais consomem memória ordenando pela coluna MEM%.

Compreendendo a Relação entre MEM%, RES e Swap

Na visualização padrão do htop, a taxa MEM% é exibida. Em algumas configurações, as colunas VIRT, RES e SHR também podem ser visíveis. Ao analisar a RAM, o valor RES é particularmente importante, pois representa a área realmente utilizada pelo processo na memória física. O valor VIRT nem sempre significa consumo real de RAM, portanto, pode ser enganoso se analisado isoladamente.

Por exemplo, em um VPS com 4 GB de RAM, o uso de 900 MB RES por um único processo PHP não é normal. Da mesma forma, se uma aplicação Node.js aumenta de 200 MB para 1.5 GB ao longo do tempo, isso sugere a possibilidade de um vazamento de memória. Um alto uso de RAM no MySQL ou MariaDB pode às vezes ser um comportamento normal de cache; aqui, o desempenho da consulta, configurações de buffer e a memória total do sistema devem ser avaliados em conjunto.

Causas Típicas de Scripts que Consomem RAM

  • Códigos PHP, Python ou Node.js que entram em loop infinito
  • Carregamento de arquivos grandes CSV, XML ou JSON na memória de uma só vez
  • Plugins e funções de tema do WordPress não otimizados
  • Processos de processamento de imagem, geração de PDF ou conversão de vídeo
  • Consultas pesadas que se repetem devido ao uso inadequado de cache
  • Tráfego de bots ou ataques que fazem com que o mesmo script seja executado várias vezes
  • Serviços de fundo de longa duração com vazamento de memória

Nesses casos, encerrar o processo apenas com o comando kill proporciona um alívio temporário. Para uma solução duradoura, é necessário analisar o que o script está fazendo, quais entradas estão desencadeando-o e por que ele não está liberando a memória corretamente.

Busca, Filtragem e Visualização em Árvore no htop

Se houver centenas de processos em execução no servidor, a busca manual na lista pode ser complicada. O htop oferece atalhos úteis para isso. Você pode buscar com F3, aplicar filtros com F4 e alternar para a visualização em árvore com F5. A visualização em árvore é especialmente importante para ver relacionamentos de parent-child. Por exemplo, você pode visualizar de forma mais clara os processos filhos do php-fpm que estão sendo executados sob nginx ou Apache, scripts acionados sob cron ou serviços Node.js gerenciados pelo supervisor.

Exemplos Práticos de Filtros

  • Digite php para visualizar apenas processos PHP.
  • Digite python para filtrar scripts Python.
  • Digite wp-cron para verificar o comportamento do cron do WordPress.
  • Digite node para examinar aplicações Node.js.
  • Filtre pelo nome de usuário para visualizar os processos de uma única conta de hospedagem.

Esses filtros economizam tempo, especialmente em servidores multiusuários. Por exemplo, se 30 sites diferentes estão hospedados no mesmo servidor, inspecionar a coluna USER e o caminho do comando rapidamente revela de qual conta o problema está se originando. Se você deseja simplificar a administração de seus projetos baseados em domínio, você pode conferir a página Consulta de domínio e registro.

Plano de Intervenção Segura para PIDs Suspeitos

Quando você encontra um processo que consome recursos, pode ser tentador imediatamente usar kill -9. No entanto, essa abordagem pode levar a perda de dados, operações de gravação inacabadas ou inconsistências nos serviços. É necessário seguir um plano mais seguro.

1. Documente o Processo

Primeiro, anote o PID, USER, COMMAND, CPU%, MEM% e o tempo. Se possível, tire uma captura de tela do htop. Esses registros facilitam a comparação em problemas recorrentes. Esses dados são úteis especialmente ao apresentar explicações técnicas a clientes em projetos de agências, e-commerce ou corporativos.

2. Verifique o Caminho do Arquivo do Processo

Verifique o caminho do arquivo com as saídas de ps -fp PID e lsof -p PID. Se o arquivo estiver no diretório raiz da web, examine os logs da aplicação correspondente. Para WordPress, o wp-content/debug.log, para o servidor web, os logs de acesso e erro, e para PHP-FPM, o slow log fornecem pistas importantes.

3. Tente Encerrar Gentilmente Primeiro

Se o processo realmente estiver fora de controle, envie primeiro um sinal de encerramento padrão:

kill PID

Aguarde alguns segundos e verifique na tela do htop se o processo foi encerrado. Se não estiver sendo encerrado e estiver prejudicando seriamente a saúde do sistema, você pode usar o seguinte comando como último recurso:

kill -9 PID

O sinal kill -9 encerra o processo sem dar a ele a oportunidade de realizar a limpeza. Portanto, deve ser usado com cautela para operações de banco de dados, processos de escrita de arquivos ou tarefas de backup.

4. Se Reiniciar, Encontre o Acionador

Se você fechar um processo e ele reiniciar em questão de segundos, pode haver um cron, serviço systemd, supervisor, requisição web ou tráfego de bot por trás disso. Para registros de cron, verifique crontab -l, para serviços de sistema use systemctl status nome-do-serviço, e para tráfego web, examine os logs de acesso. Se o problema for causado pelo wp-cron do WordPress, a configuração real do cron e a política de cache devem ser revisadas.

Combinando Descobertas do htop com Logs

Combinando Descobertas do htop com Logs

O htop mostra o que está consumindo recursos; os logs ajudam a entender o porquê disso. Quando esses dois dados não são usados em conjunto, o diagnóstico pode ficar incompleto. Por exemplo, um processo php-fpm no htop pode estar utilizando 180% da CPU; mas você pode não conseguir ver qual URL ou bot está acionando esse processo sem os logs de acesso.

Exemplos de logs que podem ser verificados incluem:

  • Log de acesso do servidor web: mostra URLs que recebem muitas requisições.
  • Log de erro do servidor web: exibe erros PHP, permissões de arquivo e erros 500.
  • Slow log do PHP-FPM: identifica arquivos e funções PHP que estão lentas.
  • Slow query log do MySQL: detecta consultas SQL pesadas.
  • Auth log ou secure log: mostra tentativas de acesso suspeitas.
  • Cron log: indica quando as tarefas agendadas foram executadas.

Por exemplo, se o PID que consome muita CPU no htop também está recebendo milhares de requisições para /wp-admin/admin-ajax.php no log de acesso na mesma minuto, o problema pode ser um plugin, tráfego de bot ou uma operação AJAX mal projetada. Nesse caso, devem ser considerados WAF, limitadores de taxa, cache e otimização de plugins. Para abordar o desempenho do site em uma escala mais ampla, o conteúdo sobre Otimização de velocidade de site pode ser útil.

Como Distinguir Carga Normal de Carga Problemática?

Nem todo alto uso de recursos significa um crise. O hardware do servidor, o nível de tráfego, o tipo de aplicação e as operações de manutenção devem ser considerados. Para um VPS com 2 núcleos, uma média de carga que permanece em torno de 6-8 por longos períodos é um sério gargalo. Em um servidor dedicado com 16 núcleos, o mesmo valor pode ser normal. Portanto, ao interpretar a média de carga, o número de núcleos sempre deve ser conhecido.

Como Distinguir Carga Normal de Carga Problemática?
Observação Situação Potencial Ação Recomendada
CPU atinge rapidamente 100% e depois volta ao normal Processamento intenso temporário Verifique os logs, não intervenha imediatamente.
O mesmo PID usa CPU alta por minutos Ciclo infinito ou processamento pesado Encontre o caminho do PID, examine o script.
A RAM continua aumentando e não diminui Vazamento de memória Verifique o código do serviço e as configurações do worker.
O uso de swap aumenta rapidamente RAM física insuficiente Planeje a otimização de RAM ou um upgrade de pacote.
Há muitos processos PHP idênticos Tráfego de bot ou requisições intensas Verifique os logs de acesso, firewall e controle de cache.

Essa comparação ajuda a distinguir entre pânico desnecessário e uma verdadeira crise de desempenho. Especialmente em sites de e-commerce, períodos de campanha, integrações de pagamento e atualizações de estoque podem causar um aumento temporário nos recursos. Contudo, se esse aumento prejudicar a experiência do usuário, a otimização da aplicação e a capacidade do servidor devem ser avaliadas em conjunto.

Suspeita de Segurança: O Script que Consome Recursos Pode Ser Malicioso?

Um script que consome CPU ou RAM pode não ser apenas um erro inocente. Em sites web comprometidos, atacantes podem executar envios de spam, mineração de criptomoedas, tráfego proxy, botnets DDoS ou scripts de backdoor. Comandos estranhos executados por usuários inesperados no htop, arquivos com nomes aleatórios, binários executados do diretório /tmp ou arquivos PHP em public_html/uploads devem ser levados a sério do ponto de vista de segurança.

Sinais Suspeitos

  • Nomes de arquivos sem sentido ou com caracteres aleatórios na coluna COMMAND
  • Arquivos sendo executados do diretório /tmp, /dev/shm ou uploads
  • Processos de perl, python ou bash que normalmente não deveriam estar presentes
  • Processos que geram alta conectividade de rede externa
  • Um único usuário iniciando um grande número de processos em um curto espaço de tempo
  • Alterações não autorizadas recentes em arquivos da web

Nesse caso, antes de encerrar o processo, tente coletar saídas de comando como evidência. Em seguida, verifique as permissões dos arquivos, isole os arquivos maliciosos, troque todas as senhas do painel e CMS, atualize os arquivos principais de plugins e temas e realize uma varredura de segurança. Além disso, usar autenticação de dois fatores em painéis administrativos e remover permissões de escrita desnecessárias ajuda a reduzir o risco a longo prazo.

Melhores Práticas para Prevenir a Recorrência de Problemas de Desempenho

Encontrar o problema com o htop é importante; no entanto, o verdadeiro valor está em prevenir a recorrência do mesmo. As seguintes medidas reduzem significativamente as interrupções causadas por CPU e RAM em servidores Linux.

  • Ajuste os valores de PHP memory_limit, max_execution_time e pm.max_children com base na capacidade do servidor.
  • Utilize um mecanismo de cache em WordPress, Joomla ou softwares personalizados.
  • Remova plugins, temas e módulos desnecessários.
  • Otimize consultas pesadas usando o slow query log do MySQL.
  • Não agende várias tarefas cron para serem executadas ao mesmo tempo; faça isso de maneira espaçada.
  • Imponha limites de taxa, use robots.txt e regras de firewall para tráfego de bots.
  • Gire os logs de aplicação regularmente; monitore o impacto de arquivos de log massivos em disco e RAM.
  • Monitore métricas do servidor não apenas em momentos de crise, mas regularmente.

Se, mesmo após as otimizações, o uso de recursos continuar alto, o problema pode não estar apenas no software. O tráfego pode ter aumentado, a aplicação pode ter crescido ou o pacote de hospedagem atual pode não ser mais suficiente. Nesse caso, um VPS escalável, mais RAM, um disco NVMe mais rápido ou um servidor de recursos isolados podem se tornar opções viáveis. Para análise de necessidades, você pode comparar opções através dos links Pacotes de hosting e soluções de servidor corporativo.

Cenário Exemplo: Explosão de CPU em um Site WordPress

Vamos seguir um cenário realista. Em um VPS com 4 núcleos e 8 GB de RAM, vários sites WordPress estão operando. Os usuários relatam que o site está lento e, às vezes, apresentam erro 502. Ao abrir o htop no terminal, a média de carga está em 12, todos os núcleos da CPU estão ocupados e muitos processos php-fpm do mesmo usuário estão visíveis no topo.

Filtrando pelo nome de usuário com F4. O PID de um dos processos que consome CPU é anotado. A saída ps -fp PID mostra um worker do php-fpm; com o lsof -p PID, é notado que há acesso ao arquivo /home/site/public_html/wp-content/plugins/example-importer/import.php. Ao examinar o log de acesso, é observado que há uma requisição de administrador que aciona esse arquivo nas mesmas minutos, seguida por chamadas AJAX repetidas.

Como solução, o processo de importação é interrompido, a tarefa agendada do plugin é desativada, a importação de grandes dados é dividida em partes e o limite de max_execution_time do PHP é reconfigurado. Além disso, o cron do sistema é utilizado em vez do wp-cron. Como resultado, a média de carga caiu de 12 para 1.8, o uso da CPU retornou ao normal e os tempos de resposta da web melhoraram significativamente. Este exemplo ilustra o quanto o htop é eficaz quando usado em conjunto com ps, lsof e análise de logs.

Erros Comuns ao Usar o htop

  • Encerrar apenas o processo no topo sem investigar a causa raiz.
  • Confundir o valor VIRT com o verdadeiro uso de RAM.
  • Considerar diretamente o uso de RAM do MySQL para cache como um problema.
  • Usar kill -9 como a primeira opção.
  • Acusar a aplicação ou o usuário sem verificar os logs.
  • Interpretar o valor de carga média sem considerar o número de núcleos da CPU.
  • Não verificar a integridade dos arquivos em caso de suspeita de violação de segurança.

Evitar esses erros não só reduz o tempo de inatividade, como também diminui o risco de perda de dados devido a intervenções incorretas. Um diagnóstico correto na administração de sistemas, muitas vezes, é mais valioso do que uma rápida intervenção.

Perguntas Frequentes

Para que serve o comando htop no servidor Linux?

O comando htop no servidor Linux mostra em tempo real as informações sobre processos em execução, como CPU, RAM, usuário, PID e comandos. Isso permite que você identifique rapidamente scripts que consomem excessivamente a CPU ou a memória.

Como encontro um script que consome CPU com o htop?

Ordene os processos na tela do htop pela coluna CPU%. Anote o PID e as informações de USER do processo que permanece no topo por um longo período. Em seguida, verifique o caminho do script e o que está sendo executado usando os comandos ps -fp PID e lsof -p PID.

No consumo de RAM, devo considerar MEM% ou VIRT?

Na análise de RAM, a taxa MEM% e especialmente o valor RES são mais significativos. O VIRT mostra a quantidade de memória virtual alocada e nem sempre indica o consumo real de RAM física.

É correto encerrar um processo que consome recursos imediatamente com kill -9?

Geralmente, não. É mais seguro documentar o que o processo está fazendo, verificar o caminho do arquivo e tentar o comando kill PID antes. O kill -9 deve ser usado como último recurso, apenas se o processo não estiver respondendo e estiver prejudicando gravemente a saúde do servidor.

Um alto uso de CPU no htop sempre indica um ataque?

Não. Backup, importação, criação de cache ou tráfego intenso também podem aumentar o uso da CPU. No entanto, nomes de arquivos aleatórios, scripts executados de /tmp ou uploads e processos de usuários inesperados levantam suspeitas de segurança.

Em resumo, o comando htop no servidor Linux é um ponto de partida rápido, prático e eficaz para encontrar scripts que consomem CPU e RAM. Para os melhores resultados, os dados do htop devem ser combinados com a análise de PID, saídas do lsof, verificação de cron e análise de logs. Se você enfrenta problemas frequentes de recursos em seu servidor, avalie tanto a otimização do software quanto a capacidade da infraestrutura; em caso de necessidade, você pode comparar as soluções de hospedagem, VPS e SSL da Hostragons sem pressão de vendas para selecionar a estrutura mais adequada ao seu projeto.

Compartilhe este artigo:

Equipe Hostragons

Guias atualizados da nossa equipe de especialistas sobre hospedagem, servidores e nomes de domínio. Vamos encontrar juntos a solução ideal para o seu projeto.

Fale Conosco