Saya mempunyai masalah dengan sistem Linux yang macet dan saya telah menemukan sysstat / sar untuk melaporkan puncak besar dalam pemanfaatan I / O disk, waktu layanan rata-rata serta waktu tunggu rata-rata pada saat sistem berhenti.
Bagaimana saya bisa menentukan proses mana yang menyebabkan puncak ini saat berikutnya terjadi?
Apakah mungkin dilakukan dengan sar (yaitu: dapatkah saya menemukan info ini dari file sar yang direkam sebelumnya?
Output untuk "sar -d", system stall terjadi sekitar 12.58-13.01pm.
12:40:01 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
12:40:01 dev8-0 11.57 0.11 710.08 61.36 0.01 0.97 0.37 0.43
12:45:01 dev8-0 13.36 0.00 972.93 72.82 0.01 1.00 0.32 0.43
12:50:01 dev8-0 13.55 0.03 616.56 45.49 0.01 0.70 0.35 0.47
12:55:01 dev8-0 13.99 0.08 917.00 65.55 0.01 0.86 0.37 0.52
13:01:02 dev8-0 6.28 0.00 400.53 63.81 0.89 141.87 141.12 88.59
13:05:01 dev8-0 22.75 0.03 932.13 40.97 0.01 0.65 0.27 0.62
13:10:01 dev8-0 13.11 0.00 634.55 48.42 0.01 0.71 0.38 0.50
Ini adalah pertanyaan lanjutan untuk utas yang saya mulai kemarin: Puncak tiba-tiba di blok menunggu dan disk menunggu , saya harap tidak apa-apa bahwa saya membuat topik / pertanyaan baru tentang masalah ini karena saya belum dapat menyelesaikan masalah.
sumber
Jawaban:
Jika Anda cukup beruntung untuk menangkap periode pemanfaatan puncak berikutnya, Anda dapat mempelajari statistik I / O per-proses secara interaktif, menggunakan iotop .
sumber
Anda dapat menggunakan pidstat untuk mencetak statistik io kumulatif per proses setiap 20 detik dengan perintah ini:
Setiap baris akan memiliki kolom berikut:
Output terlihat seperti ini:
sumber
Tidak ada yang mengalahkan pemantauan yang sedang berlangsung, Anda tidak bisa mendapatkan kembali data sensitif waktu setelah acara ...
Ada beberapa hal yang mungkin bisa Anda periksa untuk mengimplikasikan atau menghilangkannya -
/proc
adalah teman Anda.Bidang 10, 11 adalah akumulasi sektor tertulis, dan akumulasi waktu (ms) penulisan. Ini akan menunjukkan partisi sistem file panas Anda.
Bidang-bidang tersebut adalah PID, perintah dan kutu tunggu-tunggu IO kumulatif. Ini akan menunjukkan proses panas Anda, meskipun hanya jika masih berjalan . (Anda mungkin ingin mengabaikan utas penjurnalan filesystem Anda.)
Kegunaan di atas tergantung pada uptime, sifat dari proses Anda yang sudah berjalan lama, dan bagaimana sistem file Anda digunakan.
Peringatan: tidak berlaku untuk kernel pra-2.6, periksa dokumentasi Anda jika tidak yakin.
(Sekarang pergi dan bantulah masa depan Anda sendiri, pasang Munin / Nagios / Cacti / apa pun ;-)
sumber
Gunakan
atop
. ( http://www.atoptool.nl/ )Tulis data ke file terkompresi yang
atop
dapat dibaca nanti dengan gaya interaktif. Ambil pembacaan (delta) setiap 10 detik. lakukan 1080 kali (3 jam; jadi jika Anda melupakannya file output tidak akan kehabisan disk):Setelah hal buruk terjadi lagi:
(bahkan jika masih berjalan di latar belakang, itu hanya ditambahkan setiap 10 detik)
Karena Anda mengatakan IO, saya akan menekan 3 tombol: tdD
sumber
Gunakan
btrace
. Mudah digunakan, misalnyabtrace /dev/sda
. Jika perintah tidak tersedia, itu mungkin tersedia dalam paket blktrace .EDIT : Karena debugf tidak diaktifkan di kernel, Anda mungkin mencoba
date >>/tmp/wtf && ps -eo "cmd,pid,min_flt,maj_flt" >>/tmp/wtf
atau serupa. Kesalahan halaman loging tentu saja tidak sama dengan menggunakan btrace, tetapi jika Anda beruntung, itu MUNGKIN memberi Anda beberapa petunjuk tentang proses lapar disk paling banyak. Saya baru saja mencoba salah satu dari server saya yang paling intensif I / O dan daftar termasuk proses yang saya tahu mengkonsumsi banyak I / O.sumber