Soluzione 1:
Ci sono un paio di possibili modi per farlo. Tieni presente che è del tutto possibile che siano molti i processi in uno scenario in fuga che causano questo, non solo uno.
Il primo modo è configurare pidstat in modo che venga eseguito in background e produca dati.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Questo ti darà una visione abbastanza dettagliata del funzionamento del sistema a intervalli di dieci minuti. Suggerirei che questo sia il tuo primo punto di riferimento poiché produce i dati più preziosi/affidabili con cui lavorare.
C'è un problema con questo, principalmente se la scatola entra in un ciclo cpu in fuga e produce un carico enorme:non è garantito che il tuo processo effettivo verrà eseguito in modo tempestivo durante il caricamento (se non del tutto), quindi potresti effettivamente perdere l'output !
Il secondo modo per cercare questo è abilitare la contabilità di processo. Forse più di un'opzione a lungo termine.
accton on
Ciò abiliterà la contabilità di processo (se non già aggiunta). Se non era in esecuzione prima, ci vorrà del tempo per essere eseguito.
Dopo essere stato eseguito, diciamo per 24 ore, puoi quindi eseguire un tale comando (che produrrà un output come questo)
# 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
Le colonne sono ordinate come segue:
- Numero di chiamate
- Percentuale di chiamate
- Quantità di tempo reale speso per tutti i processi di questo tipo.
- Percentuale.
- Tempo CPU utente
- Percentuale
- Tempo CPU di sistema.
- Chiamate IO nella media.
- Percentuale
- Nome comando
Quello che cercherai sono i tipi di processo che generano la maggior parte del tempo CPU utente/sistema.
Questo suddivide i dati come la quantità totale di tempo della CPU (la riga superiore) e quindi come è stato suddiviso il tempo della CPU. L'accounting dei processi viene contabilizzato correttamente solo quando è attivo quando i processi vengono generati, quindi probabilmente è meglio riavviare il sistema dopo averlo abilitato per garantire che tutti i servizi vengano contabilizzati.
Questo, in realtà, non ti dà in alcun modo un'idea precisa di quale processo potrebbe essere la causa di questo problema, ma potrebbe darti una buona sensazione. Poiché potrebbe trattarsi di un'istantanea di 24 ore, esiste la possibilità di risultati distorti, quindi tienilo a mente. Inoltre dovrebbe sempre registrare poiché è una funzionalità del kernel e diversamente da pidstat produrrà sempre output anche durante carichi pesanti.
L'ultima opzione disponibile utilizza anche l'accounting del processo, quindi puoi attivarlo come sopra, ma poi usa il programma "lastcomm" per produrre alcune statistiche dei processi eseguiti nel momento in cui si è verificato il problema insieme alle statistiche della cpu per ciascun 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
Questo potrebbe darti anche qualche suggerimento su cosa potrebbe causare il problema.
Soluzione 2:
Atop è un demone particolarmente utile per esaminare i drill-down a livello di processo e per impostazione predefinita archivia questi dati per 28 giorni. Oltre a presentare una fantastica interfaccia di monitoraggio in tempo reale, puoi specificare quei file di registro da aprire e passarci attraverso.
L'articolo dà un'idea delle capacità e puoi trovarne di più nella manpage.
È davvero un software meraviglioso.
Soluzione 3:
Programmi come psmon e monit potrebbero esserti utili. Questi possono monitorare i processi in esecuzione sul tuo sistema e se viene superata qualsiasi soglia (utilizzo della CPU, utilizzo della memoria ...), puoi impostarli per inviarti un rapporto via e-mail su cosa sta succedendo.
È anche possibile riavviare automaticamente i processi che si comportano in modo anomalo.