
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:
E isso é htop depois de shift+K
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 top
aqui. 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 htop
també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 htop
que geralmente não é instalado por padrão, mas está disponível para quase todas as distros. Ele fornece as mesmas informações, top
mas 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,comm
será 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).