Existem algumas maneiras possíveis de fazer isso. Observe que é inteiramente possível seus muitos processos em um cenário descontrolado, causando isso, não apenas um.
A primeira maneira é configurar o pidstat para executar em segundo plano e produzir dados.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Isso fornecerá uma visão bastante detalhada da execução do sistema em intervalos de dez minutos. Eu sugeriria que este seja seu primeiro porto de escala, pois produz os dados mais valiosos / confiáveis para trabalhar.
Existe um problema com isso, principalmente se a caixa entrar em um loop descontrolado da CPU e produzir uma carga enorme - você não garante que seu processo real seja executado em tempo hábil durante a carga (se houver), para que você possa realmente perder a saída !
A segunda maneira de procurar isso é habilitar a contabilidade do processo. Possivelmente mais uma opção de longo prazo.
accton on
Isso permitirá a contabilidade do processo (se ainda não tiver sido adicionada). Se ele não estava sendo executado antes, isso precisará de tempo para ser executado.
Tendo sido executado, por exemplo, 24 horas - você pode executar um comando (que produzirá uma saída como esta)
# sa --percentages --separate-times
108 100.00% 7.84re 100.00% 0.00u 100.00% 0.00s 100.00% 0avio 19803k
2 1.85% 0.00re 0.05% 0.00u 75.00% 0.00s 0.00% 0avio 29328k troff
2 1.85% 0.37re 4.73% 0.00u 25.00% 0.00s 44.44% 0avio 29632k man
7 6.48% 0.00re 0.01% 0.00u 0.00% 0.00s 44.44% 0avio 28400k ps
4 3.70% 0.00re 0.02% 0.00u 0.00% 0.00s 11.11% 0avio 9753k ***other*
26 24.07% 0.08re 1.01% 0.00u 0.00% 0.00s 0.00% 0avio 1130k sa
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28544k ksmtuned*
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28096k awk
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 29623k man*
7 6.48% 7.00re 89.26% 0.00u 0.00% 0.00s
As colunas são ordenadas da seguinte forma:
- Número de chamadas
- Porcentagem de chamadas
- Quantidade de tempo real gasto em todos os processos desse tipo.
- Percentagem.
- Tempo de CPU do usuário
- Percentagem
- Tempo de CPU do sistema.
- Média de chamadas de E / S.
- Percentagem
- Nome do comando
O que você procurará são os tipos de processo que geram mais tempo de CPU do usuário / sistema.
Isso divide os dados como a quantidade total de tempo da CPU (a linha superior) e, em seguida, como esse tempo foi dividido. A contabilização de processos é contabilizada corretamente apenas quando os processos são ativados, portanto é provavelmente melhor reiniciar o sistema depois de permitir que ele garanta que todos os serviços sejam contabilizados.
Isso, de maneira alguma, realmente lhe dá uma idéia definitiva de qual processo pode ser a causa desse problema, mas pode lhe dar uma boa sensação. Como pode ser um instantâneo de 24 horas, existe a possibilidade de resultados distorcidos, portanto, lembre-se disso. Ele também deve sempre registrar, pois é um recurso do kernel e, diferentemente do pidstat, sempre produzirá saída mesmo durante carga pesada.
A última opção disponível também usa a contabilidade do processo para que você possa ativá-la como acima, mas use o programa "lastcomm" para produzir algumas estatísticas dos processos executados na época do problema, juntamente com as estatísticas da CPU para cada processo.
lastcomm | grep "May 8 22:[01234]"
kworker/1:0 F root __ 0.00 secs Tue May 8 22:20
sleep root __ 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa X root pts/0 0.00 secs Tue May 8 22:49
ksmtuned F root __ 0.00 secs Tue May 8 22:49
awk root __ 0.00 secs Tue May 8 22:49
Isso pode lhe dar algumas dicas também sobre o que pode estar causando o problema.
Atop é um daemon particularmente útil para analisar detalhadamente o nível do processo e, por padrão, arquiva esses dados por 28 dias. Além de apresentar uma incrível interface de monitoramento em tempo real, você pode especificar esses arquivos de log para abrir e percorrê-los.
O artigo fornece uma idéia dos recursos e você pode encontrar mais na página de manual .
É realmente um software maravilhoso.
fonte
Programas como psmon e monit talvez útil para você. Eles podem monitorar os processos em execução no seu sistema e se algum limite (uso da CPU, uso de memória ...) for excedido, você poderá configurá-los para enviar um relatório por e-mail sobre o que está acontecendo.
Também é possível reiniciar automaticamente os processos que se comportam mal.
fonte
Uma solução é escrever um script que é executado via cron de um minuto ou em um ciclo de suspensão e envia um email / scp job / dump para um volume ebs ... com saída relevante (dmesg, pstree -pa e ps aux, provavelmente vmstat) no instante em que encontra a média de carga acima de um determinado limite ...
fonte