Bagaimana cara menemukan proses dengan beban tertinggi?

10

Saya memiliki VPS inti tunggal dengan rata-rata beban melebihi 25 kali. Ketika mencapai itu, ia menjadi lambat tak tertahankan, dan bahkan perintah dijalankan dash, yang lebih cepat dan menggunakan lebih sedikit RAM daripada bash, butuh beberapa saat untuk dijalankan. Bagaimana saya bisa melacak proses apa yang menyebabkan beban tinggi?

NerdOfLinux
sumber
2
sudo apt install htopmemberi Anda alat mode teks yang berguna untuk tujuan ini (lebih ramah pengguna daripada standar top). Tapi topbagus kalau mau cetak kaki kecil.
sudodus
2
Panjang antrian memuat menunjukkan berapa banyak proses yang siap untuk menggunakan CPU. Ini mungkin bukan proses tunggal yang menyebabkan masalah.
Thorbjørn Ravn Andersen

Jawaban:

16

Anda dapat menginstal htop. Hal yang baik tentang itu htopadalah ia akan menunjukkan kepada Anda penggunaan Anda per CPU, serta grafik teks yang bermakna dari memori Anda dan menukar penggunaan tepat di atas.

Untuk menginstal htop:

sudo apt-get install htop

Mulai itu:

htop

masukkan deskripsi gambar di sini

Tekan F6untuk mengurutkan proses, lalu menggunakan tombol navigasi yang dapat Anda pilih PERCENT_CPUdan tekan enter.

masukkan deskripsi gambar di sini

Atau Anda dapat menggunakan topcara ini ( sumber ):

top -b -n 1 | head -n 12
neferpitou
sumber
2
Sebagai jalan pintas, Anda dapat menggunakan Puntuk mengurutkan berdasarkan penggunaan prosesor, Muntuk memori, atau Tuntuk waktu, dan tuntuk kembali ke tata letak pohon.
deltab
Menariknya, htopmemiliki beberapa dukungan mouse dasar. Jika Anda mengklik kolom, itu akan memungkinkan Anda untuk mengurutkannya juga (jika saya tidak salah). Ada beberapa operasi lain yang berfungsi dengan mouse Anda.
Ismael Miguel
11

Di bawah ini hanya dicuri dari Unix.SE: Temukan proses yang mengambil penggunaan CPU maksimum jika penggunaan CPU lebih dari 60%? , meskipun tentu saja disesuaikan dengan pertanyaan ini.

daftar proses berdasarkan penggunaan CPU tertentu

ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'

Ini memberikan daftar proses yang memiliki >0.0% penggunaan CPU , Anda dapat mengubah nilai ini sesuai dengan kebutuhan Anda, misalnya >50.0. Setiap baris berisi penggunaan CPU dalam persen, PID dan file proses.

daftar proses dengan penggunaan CPU paling banyak

ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'

Ini menunjukkan 5 NR<=5proses teratas ( ) yang saat ini paling banyak menyebabkan beban CPU.

pencuci mulut
sumber
1

Kemarin saya belajar awkdan saya bermain dengan dua jawaban lainnya. Inilah hasilnya:

  • Hanya dapatkan proses dengan penggunaan CPU paling tinggi, menggunakan ps aux:

    ps auxh | awk -v max=0 '{if($3>max){CPU=$3; PID=$2; NAME=$11; max=$3}} END{printf "%5s %6d %s\n",CPU,PID,NAME}'
    
  • Dapatkan tiga proses dengan penggunaan CPU paling tinggi, menggunakan top:

    top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
    
  • Dapatkan tiga proses dengan penggunaan CPU paling tinggi, menggunakan ps aux:

    ps auxh --sort=-c | awk 'NR<=3 {printf "ps:  %5s %6d %s\n",$3,$2,$11}'
    

Saya sudah mencoba menjalankan dua perintah terakhir secara bersamaan (dengan <command>; wait; <command>dan <command> & <command> &), tetapi kemudian saya menyadari itu tidak mungkin sama sekali :)


Referensi:

pa4080
sumber
Yang terakhir tidak menunjukkan proses dengan penggunaan CPU paling banyak, tetapi dimulai dengan yang kedua, Anda mungkin bermaksud di NR>=2sana - ternyata psmemberikan opsi hyang menghilangkan baris header, lihat jawaban saya yang diperbarui.
hidangan penutup
@Dabut, Anda benar, sebelumnya itu NR>=2, tapi NR>1pendek :) Saya sudah memperbarui jawabannya.
pa4080
1

Gunakan topperintah

top- Menampilkan proses Linux

Program teratas memberikan tampilan real-time dinamis dari sistem yang sedang berjalan. Ini dapat menampilkan informasi ringkasan sistem serta daftar proses atau utas yang saat ini dikelola oleh kernel Linux. Jenis-jenis informasi ringkasan sistem yang ditampilkan dan jenis, urutan dan ukuran informasi yang ditampilkan untuk semua proses dapat dikonfigurasi pengguna dan konfigurasi tersebut dapat dibuat secara persisten di seluruh restart.

sumber

tutorial youtube yang bagus

Eric Korolev
sumber