Cara Mengenal Pasti Proses yang Membebankan CPU Linux
Kenapa Server Linux Anda Menjadi Lembap?
Pernahkah anda mengalami situasi di mana pelayan Linux anda tiba-tiba menjadi sangat perlahan sehingga arahan mudah pun mengambil masa beberapa saat untuk dilaksanakan? Masalah linux high cpu usage selalunya menjadi punca utama kepada isu prestasi ini. Apabila CPU bekerja pada kapasiti maksimum secara berterusan, sistem tidak lagi mampu mengendalikan permintaan masuk dengan efisien, yang akhirnya membawa kepada masalah *latency* atau lebih teruk lagi, sistem terhenti sepenuhnya (*system crash*).
Bagi pentadbir sistem atau pemilik laman web, memahami cara mengenal pasti proses yang memakan sumber adalah kemahiran asas yang wajib dikuasai. Anda tidak boleh sekadar melakukan *restart* pelayan setiap kali masalah berlaku kerana itu hanyalah penyelesaian sementara. Anda perlu mencari punca sebenar, sama ada ia berpunca daripada skrip PHP yang tidak efisien, serangan DDoS, atau proses latar belakang yang tersangkut.
Dalam panduan ini, saya akan kongsikan langkah demi langkah menggunakan alat terbina dalam Linux untuk mengesan dan menganalisis proses yang membebankan CPU. Fokus kita adalah untuk memberikan gambaran jelas tentang apa yang berlaku di sebalik tabir sistem operasi anda.
Langkah Pertama Mengenal Pasti Linux High CPU Usage
Sebelum kita masuk ke bahagian teknikal, anda perlu tahu bahawa CPU Linux menguruskan tugas melalui konsep *time-sharing*. Jika satu proses mengambil terlalu banyak kitaran CPU, proses lain terpaksa menunggu giliran. Inilah yang menyebabkan rasa “lag” pada terminal atau aplikasi web anda.
Langkah pertama yang paling asas adalah dengan melihat beban keseluruhan sistem. Anda boleh menggunakan arahan `uptime` untuk melihat *load average*. Nilai ini menunjukkan purata beban sistem bagi tempoh 1, 5, dan 15 minit. Jika nilai ini melebihi jumlah teras (core) CPU yang anda miliki, maka sah bahawa pelayan anda sedang mengalami tekanan sumber yang tinggi.
Menggunakan Perintah Top untuk Analisis Pantas
`top` adalah alat standard yang ada pada hampir semua distro Linux. Ia memberikan paparan masa nyata tentang proses yang sedang berjalan dan penggunaan sumber secara keseluruhan.
Apabila anda menjalankan arahan `top`, anda akan melihat senarai proses yang disusun mengikut penggunaan CPU secara default. Perhatikan kolum `%CPU`. Jika ada proses yang menunjukkan angka 90% atau lebih secara konsisten, itulah suspek utama anda.
Beberapa pintasan penting semasa menggunakan `top`:
- Tekan P untuk menyusun proses mengikut penggunaan CPU tertinggi.
- Tekan M untuk menyusun mengikut penggunaan memori (RAM).
- Tekan k untuk membunuh (*kill*) proses tertentu dengan memasukkan PID (Process ID).
- Tekan q untuk keluar dari paparan.
Namun, `top` mempunyai kekurangan iaitu paparan yang agak membosankan dan sukar dibaca bagi pemula. Itulah sebabnya ramai profesional lebih gemar menggunakan alternatif yang lebih visual.
Htop: Alternatif Visual yang Lebih Power
Jika anda mahukan pengalaman yang lebih mesra pengguna, `htop` adalah jawapannya. Berbeza dengan `top`, `htop` menyediakan bar warna yang menunjukkan beban setiap teras CPU secara individu. Ini sangat membantu jika anda mempunyai pelayan dengan banyak teras kerana anda boleh melihat jika hanya satu teras sahaja yang bekerja keras atau kesemuanya.
Untuk memasang `htop` pada Ubuntu atau Debian, anda boleh gunakan:
sudo apt install htop
Kelebihan utama `htop` adalah keupayaannya untuk melakukan carian proses dan penapisan secara langsung. Anda tidak perlu menghafal PID untuk menghentikan proses; anda hanya perlu memilih proses tersebut menggunakan anak panah keyboard dan menekan F9 untuk melakukan *kill*.
Pengalaman saya menguruskan pelayan menunjukkan bahawa htop jauh lebih efektif untuk mengesan “zombie processes” atau proses yang tergantung yang sering menyebabkan linux high cpu usage tanpa disedari.
Menganalisis Proses Secara Mendalam dengan Ps
Walaupun `top` dan `htop` sangat berguna untuk pemantauan masa nyata, ada kalanya anda memerlukan laporan statik atau ingin mencari proses spesifik melalui skrip. Di sinilah arahan `ps` (process status) memainkan peranannya.
Arahan `ps aux` adalah kombinasi yang paling kerap digunakan. `a` menunjukkan semua proses, `u` memaparkan maklumat pengguna, dan `x` menyertakan proses yang tidak mempunyai terminal kawalan.
Untuk mencari 10 proses teratas yang memakan CPU, anda boleh menggabungkan `ps` dengan `sort` dan `head`:
ps aux --sort=-%cpu | head -n 11
Arahan ini akan memberikan senarai bersih yang mengandungi:
- USER: Siapa yang menjalankan proses tersebut (contoh: root, www-data).
- PID: Nombor pengenalan unik proses.
- %CPU: Peratusan penggunaan CPU.
- COMMAND: Arahan atau fail yang sedang dijalankan.
Jika anda mendapati proses `mysql` atau `apache2` berada di puncak senarai, ini menandakan masalah mungkin berpunca daripada query pangkalan data yang berat atau trafik laman web yang melonjak. Bagi mereka yang menggunakan web hosting Malaysia, pemantauan berkala terhadap proses ini adalah kritikal untuk memastikan kestabilan laman web.
Kaitan Antara CPU dan Perkhidmatan Web
Sering kali, linux high cpu usage bukan disebabkan oleh pepijat sistem, tetapi oleh konfigurasi aplikasi yang tidak tepat. Sebagai contoh, jika anda menjalankan laman WordPress dengan terlalu banyak plugin yang berat, proses PHP-FPM akan menggunakan CPU yang sangat tinggi.
Berikut adalah jadual ringkas untuk membantu anda mengenal pasti punca berdasarkan nama proses yang muncul:
| Nama Proses | Kemungkinan Punca | Tindakan Cadangan |
|---|---|---|
| mysql / mysqld | Query tidak dioptimumkan atau ketiadaan index. | Gunakan Slow Query Log untuk analisis. |
| php-fpm / apache2 | Trafik tinggi atau skrip PHP yang tidak efisien. | Aktifkan caching atau naik taraf sumber. |
| kworker / systemd | Isu kernel atau pemacu (driver) perkakasan. | Semak dmesg atau log sistem. |
| java | Aplikasi backend yang menggunakan memori tinggi. | Laraskan JVM heap size. |
Jika anda tidak mempunyai masa untuk menguruskan semua teknikaliti ini, mempertimbangkan website maintenance packages adalah langkah bijak supaya pakar boleh membantu anda mengoptimumkan prestasi pelayan.
Cara Menangani Proses yang Membebankan CPU
Setelah anda berjaya mengenal pasti proses yang menyebabkan masalah, langkah seterusnya adalah mengambil tindakan. Anda mempunyai beberapa pilihan bergantung kepada tahap kritikal proses tersebut.
1. Menghantar Isyarat SIGTERM (Lembut)
Cara paling selamat untuk menghentikan proses adalah dengan meminta proses tersebut menutup dirinya sendiri secara teratur.
kill [PID]
Ini memberi peluang kepada aplikasi untuk menyimpan data sebelum ditutup.
2. Menghantar Isyarat SIGKILL (Paksa)
Jika proses tersebut tidak bertindak balas (hang), anda perlu menggunakan arahan paksa.
kill -9 [PID]
Amaran: Gunakan ini dengan berhati-hati kerana ia boleh menyebabkan kehilangan data yang belum disimpan.
3. Menukar Keutamaan Proses (Renice)
Jika anda tidak mahu mematikan proses tersebut tetapi mahu ia menggunakan kurang CPU, anda boleh mengubah nilai *niceness*. Nilai niceness berkisar dari -20 (keutamaan tertinggi) hingga 19 (keutamaan terendah).
renice +10 [PID]
Dengan meningkatkan nilai niceness, anda memberitahu kernel Linux supaya memberikan lebih banyak sumber kepada proses lain terlebih dahulu.
Strategi Pencegahan Jangka Panjang
Mengenal pasti masalah adalah satu perkara, tetapi memastikan ia tidak berulang adalah perkara lain. Untuk mengelakkan linux high cpu usage pada masa hadapan, anda boleh melaksanakan beberapa strategi berikut:
- Implementasi Caching: Gunakan Redis atau Memcached untuk mengurangkan beban pada pangkalan data dan CPU.
- Hadkan Sumber (Resource Limiting): Gunakan cgroups atau Docker untuk mengehadkan jumlah CPU yang boleh digunakan oleh satu-satu aplikasi.
- Automasi Pemantauan: Pasang alat seperti Prometheus atau Netdata untuk menerima amaran (alert) apabila penggunaan CPU melebihi 80% selama lebih 5 minit.
- Audit Log Secara Berkala: Semak `/var/log/syslog` atau `/var/log/auth.log` untuk melihat jika ada cubaan serangan brute force yang membebankan CPU.
Jika anda merasa pengurusan pelayan terlalu rumit, anda boleh melayari Ewallz Solutions untuk mendapatkan khidmat nasihat profesional mengenai infrastruktur IT anda.
Kesimpulan
Menangani masalah linux high cpu usage memerlukan pendekatan yang sistematik. Bermula dengan pemeriksaan beban sistem menggunakan `uptime`, menganalisis proses secara visual dengan `htop`, dan akhirnya melakukan bedah siasat terperinci menggunakan `ps aux`. Kunci utama dalam troubleshooting adalah jangan terburu-buru mematikan proses tanpa mengetahui fungsinya, kerana sesetengah proses sistem adalah kritikal untuk kestabilan pelayan.
Dengan menguasai alat-alat ini, anda bukan sahaja dapat memulihkan prestasi pelayan dengan cepat, malah dapat mengoptimumkan konfigurasi sistem untuk mengelakkan masalah yang sama berulang. Ingat, pelayan yang stabil adalah asas kepada pengalaman pengguna yang cemerlang.
Soalan Lazim (FAQ)
1. Adakah penggunaan CPU 100% sentiasa bermaksud ada masalah?
Tidak semestinya. Jika CPU mencecah 100% semasa melakukan tugasan berat seperti kompilasi kod atau backup pangkalan data, itu adalah normal. Ia menjadi masalah jika penggunaan tinggi berlaku secara berterusan tanpa ada tugasan berat yang dijalankan.
2. Apakah perbezaan antara top dan htop?
`top` adalah alat asas yang sudah terpasang dalam Linux, manakala `htop` adalah versi yang lebih moden, berwarna, dan menyokong interaksi menggunakan tetikus serta navigasi yang lebih mudah.
3. Bolehkah saya menghentikan proses root?
Boleh, tetapi sangat berisiko. Menghentikan proses sistem yang penting boleh menyebabkan pelayan anda terhenti secara tiba-tiba atau mengalami kernel panic. Pastikan anda tahu fungsi proses tersebut sebelum melakukan `kill`.
4. Kenapa arahan kill -9 tidak berfungsi pada sesetengah proses?
Ini biasanya berlaku jika proses tersebut berada dalam keadaan “Uninterruptible Sleep” (ditandai dengan status D dalam top). Ini sering disebabkan oleh masalah I/O seperti cakera keras yang rosak atau masalah network file system (NFS) yang tergantung.
5. Bagaimanakah cara paling cepat untuk melihat proses yang paling banyak makan RAM?
Anda boleh menggunakan `htop` dan tekan F6 untuk menyusun mengikut MEM%, atau gunakan arahan `ps aux –sort=-%mem | head` dalam terminal.
