Ada beberapa cara yang memungkinkan Anda untuk melakukan ini. Perhatikan bahwa sangat mungkin banyak prosesnya dalam skenario pelarian yang menyebabkan ini, bukan hanya satu.
Cara pertama adalah mengatur pidstat untuk berjalan di latar belakang dan menghasilkan data.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Ini akan memberi Anda gambaran yang cukup rinci tentang jalannya sistem pada interval sepuluh menit. Saya akan menyarankan ini menjadi pelabuhan panggilan pertama Anda karena ini menghasilkan data yang paling berharga / dapat diandalkan untuk bekerja dengannya.
Ada masalah dengan ini, terutama jika kotak masuk ke loop cpu pelarian dan menghasilkan beban besar - Anda tidak dijamin bahwa proses Anda yang sebenarnya akan dieksekusi tepat waktu selama memuat (jika sama sekali) sehingga Anda benar-benar dapat kehilangan output !
Cara kedua untuk mencari ini adalah mengaktifkan proses akuntansi. Mungkin lebih dari opsi jangka panjang.
accton on
Ini akan memungkinkan proses akuntansi (jika belum ditambahkan). Jika tidak berjalan sebelum ini perlu waktu untuk berjalan.
Setelah dijalankan, misalnya 24 jam - Anda kemudian dapat menjalankan perintah seperti itu (yang akan menghasilkan output 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 disusun seperti itu:
- Jumlah panggilan
- Persentase panggilan
- Jumlah waktu nyata yang dihabiskan untuk semua proses jenis ini.
- Persentase.
- Waktu CPU pengguna
- Persentase
- Waktu sistem CPU.
- Panggilan IO rata-rata.
- Persentase
- Nama perintah
Apa yang akan Anda cari adalah jenis proses yang menghasilkan waktu CPU Pengguna / Sistem terbanyak.
Ini memecah data sebagai jumlah total waktu CPU (baris atas) dan kemudian bagaimana waktu CPU telah dibagi. Memproses akuntansi hanya memperhitungkan dengan benar saat proses menyala, sehingga mungkin yang terbaik untuk me-restart sistem setelah memungkinkannya untuk memastikan semua layanan dicatat.
Ini, sama sekali tidak benar-benar memberi Anda ide 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 login karena fitur kernel dan tidak seperti pidstat akan selalu menghasilkan output 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 dieksekusi sekitar waktu 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.
Di atas adalah daemon yang sangat berguna untuk melihat drill-down ke tingkat proses dan secara default mengarsipkan data ini selama 28 hari. Selain menghadirkan antarmuka pemantauan waktu nyata yang mengagumkan, Anda dapat menentukan file-file log yang akan dibuka dan melangkahinya.
The Artikel memberikan beberapa gagasan tentang kemampuan, dan Anda dapat menemukan lebih banyak di manualnya .
Ini benar-benar software yang luar biasa.
sumber
Program seperti psmon dan monit mungkin bermanfaat bagi Anda. Mereka dapat memonitor proses yang berjalan di sistem Anda dan jika ada ambang batas (penggunaan CPU, penggunaan memori ...) terlampaui, Anda dapat mengaturnya mengirimi Anda laporan email tentang apa yang terjadi.
Dimungkinkan juga untuk memulai kembali proses perilaku buruk secara otomatis.
sumber
Salah satu solusinya adalah menulis skrip yang dijalankan melalui cron satu menit atau dalam loop tidur, dan mengirimkan Anda pekerjaan email / scp / dump ke volume ebs ... dengan output yang relevan (dmesg, pstree -pa dan ps aux, mungkin vmstat) instan ia menemukan rata-rata beban melebihi batas tertentu ...
sumber