Saya memiliki server yang memiliki beban sangat tinggi. Tidak ada yang melompat ke arah saya dalam hal penggunaan CPU, dan itu tidak bertukar.
Saya pikir itu menyebabkan beberapa proses menunggu disk IO, dan saya ingin melihat apa yang menunggu.
Apakah ada program yang akan menunjukkan kepada saya proses apa yang menunggu untuk IO? Saya tahu iotop
tapi itu menunjukkan apa yang sedang dilakukan IO.
Atau ini pertanyaan konyol? (Jika demikian jelaskan caranya :))
iowait
informasi yang diperlukan ,iotop
memerlukan hak yang lebih tinggi.watch
,,ps
danawk
hanya memberikan informasi yang diperlukan, dan tidak memerlukan hak yang lebih tinggi.ps
flag POSIX danawk
mengeditnya secara berbeda:watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
- dengan cara ini Anda mendapatkan judul kolom, dan stat, pid, dan perintah.ps axu
dan mencari proses yang dalam kondisi "D". Berdasarkan halaman ps (1) , proses yang dalam status D berada dalam kondisi tidur yang tidak terputus, yang hampir selalu berarti 'menunggu IO'. Sayangnya, membunuh proses ini biasanya tidak mungkin.sumber
Jawaban Zanchey adalah yang terbaik yang saya tahu untuk mencari tahu apa yang sedang menunggu IO.
Ketika Anda mengatakan server Anda berada di bawah beban tinggi, apa yang Anda maksud dengan itu? Sesuatu yang lambat merespons?
Jika Anda bertanya-tanya apakah Disk IO Anda adalah hambatan, saya akan menggunakan perintah iostat (bagian dari paket sysstat) untuk melihat apakah disk tersebut benar-benar berada di bawah beban berat.
Contoh:
sumber
Aktifkan pencatatan block_dump dari proses apa yang melakukan operasi baca / tulis blok:
setelah selesai, nonaktifkan penelusuran agar Anda tidak mengirim spam file log Anda:
sumber