Artikel ini dikutip dari bab 13 buku Linux in Action, diterbitkan oleh Manning.
Apakah kinerja mesin Linux Anda tidak menentu atau sangat lambat? Apakah Anda menduga bahwa permintaan yang meningkat mungkin melampaui sumber daya yang tersedia? Berikut adalah beberapa pertanyaan yang harus Anda tanyakan pada diri sendiri:
- Seberapa dekat Anda dengan CPU dan sumber daya memori yang melelahkan?
- Apakah ada sesuatu yang berjalan tidak perlu yang dapat dimatikan?
- Apakah ada sesuatu yang berkeliaran tanpa sepengetahuan Anda?
Lebih banyak sumber daya Linux
- Lembar contekan perintah Linux
- Lembar contekan perintah Linux tingkat lanjut
- Kursus online gratis:Ikhtisar Teknis RHEL
- Lembar contekan jaringan Linux
- Lembar contekan SELinux
- Lembar contekan perintah umum Linux
- Apa itu container Linux?
- Artikel Linux terbaru kami
Di mana Anda harus mencari jawaban? atas program adalah tempat yang bagus untuk memulai. Ini dapat memberi Anda ikhtisar yang kaya dan dapat diperbarui sendiri tentang proses yang berjalan di sistem Anda.
Gambar di bawah menunjukkan layar umum top
data. Baris pertama menyediakan waktu saat ini, waktu yang telah berlalu sejak boot sistem terbaru, jumlah pengguna yang saat ini masuk, dan memuat rata-rata untuk menit terakhir, lima menit, dan 15 menit. Informasi ini juga dapat dikembalikan dengan menjalankan uptime
.
Karena kami mencoba menyelesaikan masalah kinerja, kolom data yang paling menarik bagi kami adalah %CPU
(persentase kapasitas CPU yang saat ini digunakan oleh proses tertentu) dan %MEM
(persentase kapasitas memori). Anda terutama ingin mencatat proses yang muncul di bagian atas daftar.
Dalam hal ini, Anda dapat melihat bahwa daemon MySQL menggunakan 4,3% dari CPU server dan, dari kolom berikutnya, 13% dari memorinya. Jika Anda mengikuti baris itu ke kiri, Anda akan melihat bahwa ID proses (PID) adalah 1367
dan prosesnya "dimiliki" oleh mysql
pengguna.
Mungkin Anda akan menyimpulkan bahwa proses ini membutuhkan lebih banyak sumber daya daripada yang dapat dibenarkan dan harus dikorbankan (untuk kebaikan yang lebih besar, Anda mengerti). top
display memberi Anda semua yang Anda perlukan untuk membunuhnya. Karena MySQL adalah layanan yang dikelola oleh systemd (pada distro yang menggunakan systemd), pilihan pertama Anda adalah menggunakan systemctl
untuk menghentikan proses secara perlahan tanpa membahayakan data aplikasi apa pun.
systemctl stop mysqld
Jika proses yang ingin Anda matikan tidak dikelola oleh systemd, atau jika ada yang tidak beres dan systemctl
gagal menghentikannya, maka Anda dapat menggunakan kill
atau killall
untuk menghilangkan proses Anda. Beberapa sistem mengharuskan Anda menginstal killall
sebagai bagian dari psmisc
kemasan. Anda meneruskan PID ke kill
begini:
kill 1367
killall
, di sisi lain, menggunakan nama proses daripada ID-nya.
killall mysqld
Membunuh atau membunuh semua, itulah pertanyaannya . Sebenarnya, jawabannya agak jelas. kill
akan mematikan satu proses, berdasarkan PID, sementara killall
akan membunuh sebanyak mungkin contoh program tertentu yang sedang berjalan. Jadi, jika ada dua atau tiga instance MySQL terpisah—mungkin milik pengguna yang berbeda—semuanya akan dihentikan. Sebelum meluncurkan killall
, pastikan tidak ada proses dengan nama serupa yang masih ingin Anda jalankan yang dapat menjadi "kerusakan jaminan".
Tentu saja, Anda juga harus menjalankan systemctl disable
untuk memastikan proses tidak dimulai ulang saat boot berikutnya.
systemctl disable mysqld
Menguraikan bagian atas
Jika Anda membutuhkannya, baris ketiga top
output yang Anda lihat sedikit sebelumnya memberi kami nilai waktu (sebagai persentase) untuk sejumlah metrik CPU lainnya. Berikut adalah ringkasan singkat dari akronim yang akan Anda lihat di sana:
Metrik | Arti |
---|---|
us | Waktu menjalankan proses prioritas tinggi (tidak cocok) |
sy | Waktu menjalankan proses kernel |
ni | Waktu menjalankan proses dengan prioritas rendah (bagus) |
id | Waktu yang dihabiskan untuk menganggur |
wa | Waktu menunggu acara I/O selesai |
hi | Waktu yang dihabiskan untuk mengelola interupsi perangkat keras |
si | Waktu yang dihabiskan untuk mengelola interupsi perangkat lunak |
st | Waktu dicuri dari VM ini oleh hypervisor (host) |
top
tampilan dapat disesuaikan secara real time melalui input keyboard. Ketik h
untuk mempelajari lebih lanjut.
Membuat masalah (mensimulasikan beban CPU)
Ingin sekali melihat top
dalam aksi tapi, tahukah Anda, semuanya berjalan lancar?
Mengapa tidak mensimulasikan kelebihan beban CPU tingkat krisis? Sama seperti anak-anak, yes
akan mengeluarkan suara (digital) terus menerus sampai disuruh berhenti. Kalau dipikir-pikir, itu sama sekali tidak seperti anak-anak.
Perintah ini akan mengalihkan suara itu ke /dev/null
sekali pakai file dan &
karakter akan mendorong proses ke latar belakang, memberikan kontrol baris perintah kembali kepada Anda. Untuk meningkatkan tekanan, luncurkan perintah beberapa kali lagi.
$ yes > /dev/null &
Itu seharusnya membuat mereka sibuk. Sementara semua itu berjalan, tonton top
untuk melihat apa yang terjadi. Anda juga dapat mencoba menjalankan aplikasi lain untuk melihat berapa banyak yang diperlukan untuk memperlambatnya. Setelah selesai, jalankan killall
untuk menghilangkan semua yes
. Anda sesi sekaligus.
$ killall yes