Solusi 1:
Ada beberapa cara yang memungkinkan untuk melakukan ini.Perhatikan bahwa sangat mungkin ada banyak proses dalam skenario pelarian yang menyebabkan hal ini, bukan hanya satu.
Cara pertama adalah menyiapkan pidstat agar berjalan di latar belakang dan menghasilkan data.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Ini akan memberi Anda pandangan yang cukup rinci tentang jalannya sistem pada interval sepuluh menit. Saya menyarankan ini menjadi tempat panggilan pertama Anda karena ini menghasilkan data yang paling berharga/dapat diandalkan untuk digunakan.
Ada masalah dengan ini, terutama jika kotak masuk ke loop cpu yang tidak terkendali dan menghasilkan beban yang sangat besar - Anda tidak menjamin bahwa proses Anda yang sebenarnya akan dieksekusi tepat waktu selama pemuatan (jika sama sekali) sehingga Anda benar-benar dapat melewatkan hasilnya !
Cara kedua untuk mencari ini adalah mengaktifkan proses akuntansi. Mungkin lebih merupakan opsi jangka panjang.
accton on
Ini akan memungkinkan proses akuntansi (jika belum ditambahkan). Jika tidak berjalan sebelumnya, ini perlu waktu untuk berjalan.
Setelah dijalankan, katakanlah 24 jam - Anda kemudian dapat menjalankan perintah seperti itu (yang akan menghasilkan keluaran seperti ini)
# 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
Kolom diurutkan seperti:
- Jumlah panggilan
- Persentase panggilan
- Jumlah waktu nyata yang dihabiskan untuk semua proses jenis ini.
- Persentase.
- Waktu CPU pengguna
- Persentase
- Waktu CPU sistem.
- Rata-rata panggilan IO.
- Persentase
- Nama perintah
Yang akan Anda cari adalah jenis proses yang menghasilkan waktu CPU Pengguna/Sistem paling banyak.
Ini memecah data sebagai jumlah total waktu CPU (baris atas) dan kemudian bagaimana waktu CPU itu dibagi. Akuntansi proses hanya menghitung dengan benar saat aktif saat proses bertelur, jadi mungkin yang terbaik adalah memulai ulang sistem setelah mengaktifkannya untuk memastikan semua layanan diperhitungkan.
Ini, sama sekali tidak benar-benar memberi Anda gambaran pasti proses apa yang mungkin menjadi penyebab masalah ini, tetapi mungkin memberi Anda perasaan yang baik. Karena ini bisa menjadi snapshot 24 jam, ada kemungkinan hasil yang miring, jadi ingatlah itu. Itu juga harus selalu masuk karena ini adalah fitur kernel dan tidak seperti pidstat akan selalu menghasilkan keluaran bahkan selama beban berat.
Opsi terakhir yang tersedia juga menggunakan akuntansi proses sehingga Anda dapat mengaktifkannya seperti di atas, tetapi kemudian gunakan program "lastcomm" untuk menghasilkan beberapa statistik proses yang dijalankan sekitar waktu terjadinya masalah bersama dengan statistik cpu untuk setiap proses.
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
Ini mungkin memberi Anda beberapa petunjuk juga tentang apa yang mungkin menyebabkan masalah.
Solusi 2:
Atop adalah daemon yang sangat berguna untuk melihat perincian ke tingkat proses dan secara default mengarsipkan data ini selama 28 hari. Selain menghadirkan antarmuka pemantauan real-time yang mengagumkan, Anda dapat menentukan file log tersebut untuk dibuka dan ditelusuri.
Artikel tersebut memberikan beberapa gambaran tentang kemampuannya, dan Anda dapat menemukan lebih banyak lagi di halaman manual.
Ini benar-benar perangkat lunak yang luar biasa.
Solusi 3:
Program seperti psmon dan monit mungkin berguna bagi Anda. Mereka dapat memantau proses yang berjalan pada sistem Anda dan jika ada ambang batas (penggunaan CPU, penggunaan memori...) terlampaui, Anda dapat mengaturnya mengirimi Anda laporan email tentang apa yang terjadi.
Anda juga dapat memulai ulang proses yang bermasalah secara otomatis.