CPU > 80% - como posso depurar?

CPU > 80% - como posso depurar?

Estou executando um aplicativo laravel em um vps digital ocean Ubuntu 14.04 e estou usando o New Relic para monitorar o servidor.

Recebi um alerta por e-mail informando que meu uso de CPU estava acima de 80%. Entrei no New Relic e agora ele mostra meu uso de CPU em 99% há 18 horas. Mas quando eu entro no meu shell e executo 'top', o uso da CPU dos processos não chega nem a 10%.

O que pode estar errado? Quais são outros comandos que eu poderia executar para verificar o uso real e o que está usando tanto? (Talvez um loop infinito no aplicativo?)

Este é o meu resultado htop:

insira a descrição da imagem aqui

E isso é htop depois de shift+K

insira a descrição da imagem aqui

Qualquer link ou ajuda seria muito apreciado.

Responder1

Não tenho certeza do que está acontecendo, mas acho que a coluna% CPU do processo individual não está dizendo o que você acha que ela diz. Na página de manual superior:

  k: %CPU  --  CPU usage
  The task’s share of the elapsed CPU time since the last screen update,
  expressed as a percentage of total CPU time. 

Digamos que você esteja atualizando a cada 4 segundos. O tempo total de CPU consumido nesses 2 segundos é de 6%nesses 4 segundos. Mas digamos que em um desses segundos ele disparou e usou 24% do tempo da CPU. Não estou dizendo que isso está acontecendo, mas pode ser.

Estou feliz topaqui. Posso ver o uso da CPU dividido por CPU e ainda por user, sys, nice, idle, wait(em E/S), atendendo interrupções de hardware e software (oi, sim). Você provavelmente htoptambém pode conseguir isso . Contanto que você tenha uma CPU com pelo menos 20% de inatividade, não há muito com o que se preocupar, a menos que seu ventilador esteja incomodando. Mas se você estiver preocupado, talvez o que esteja acontecendo é que %wait e %hi/%si estão muito altos; nesse caso, nenhum processo individual está tendo um alto uso de CPU, mas sim, o kernel está muito, muito ocupado por algum motivo.

Responder2

Eu tive um problema semelhante e executei o comando TOP em segundo plano e redirecionei-o para um arquivo txt

topo> topo.txt &

Obrigado, você pode ver qual processo desperdiça sua CPU

Responder3

Existem algumas opções. Minha preferência é o programa htopque geralmente não é instalado por padrão, mas está disponível para quase todas as distros. Ele fornece as mesmas informações, topmas com um conjunto de recursos MUITO mais rico. É ótimo para encontrar interativamente o processo do problema, mas não é ótimo para scripts. Se você deseja incorporar algo em um script de monitoramento, o comando ps -eo pid,pcpu,commserá seu amigo. Ele imprime todos os processos atuais junto com seu PID e uso de CPU em um formato bastante fácil de analisar.

Responder4

O que pode estar errado?

A primeira coisa é que você está usando o Laravel, que gosta de muita memória e tem menos de meio giga. Você está executando-o em um sistema operacional sem suporte - o que é ruim. E você não nos contou sobre o resto da pilha (servidor web, PHP SAPI, versão PHP).

informação relacionada