All Products
Search
Document Center

:Pemecahan Masalah Utilisasi CPU Tinggi atau Beban pada Instans Linux

Last Updated:Mar 26, 2026

Gejala

Utilisasi CPU tinggi atau beban sistem dapat menyebabkan gejala berikut:

  1. Masalah layanan aplikasi

    • Koneksi SSH jarak jauh menjadi lambat atau tidak merespons, bahkan gagal dalam kasus parah.

    • Waktu respons situs web atau aplikasi Anda meningkat secara signifikan, dan halaman dimuat dengan lambat.

    • Permintaan sering mengalami timeout, panggilan API gagal, serta kapasitas pemrosesan keseluruhan layanan Anda menurun.

  2. Anomali sumber daya sistem

    • Utilisasi CPU instans secara konsisten melebihi 80%, bahkan mendekati 100%.

    • Beban sistem (load average) secara konsisten lebih tinggi daripada jumlah core CPU logis. Misalnya, load average melebihi 4 pada instans 4-core.

    • CloudMonitor telah memicu peringatan beban sistem tinggi melalui SMS atau email.

Penyebab

  • Proses intensif CPU: Masalah ini sering disebabkan oleh logika aplikasi yang cacat, seperti infinite loop, tugas komputasi kompleks, atau permintaan konkurensi tinggi, yang dapat mencakup lalu lintas sah maupun serangan berbahaya.

  • Hambatan kinerja I/O: Operasi baca/tulis disk yang sering atau kinerja penyimpanan yang tidak memadai menyebabkan proses menghabiskan waktu lama menunggu I/O, sehingga meningkatkan load average sistem.

  • Panggilan kernel atau sistem: Context switch yang sering, tugas kernel, atau masalah driver menyebabkan utilisasi CPU tinggi dalam mode kernel.

  • Program abnormal atau berbahaya: Instans terinfeksi perangkat lunak penambangan kripto, Trojan horse, atau rootkit dengan proses tersembunyi yang mengonsumsi sejumlah besar sumber daya komputasi.

Penyelesaian

Gunakan tool top untuk mengidentifikasi penyebab utama utilisasi CPU tinggi atau beban sistem, seperti ruang pengguna (user space), ruang kernel (kernel space), atau waktu tunggu I/O (I/O wait). Kemudian, gunakan tool seperti perf, iotop, atau vmstat untuk melakukan analisis lebih mendalam dan menyelesaikan masalah tersebut.

Langkah 1: Identifikasi bottleneck CPU

  1. Login ke instans ECS menggunakan koneksi VNC.

    1. Buka ECS console - Instances. Di bilah navigasi atas, pilih wilayah dan kelompok sumber daya yang dituju.

    2. Buka halaman detail instans target. Klik Connect dan pilih VNC. Masukkan username dan password untuk login ke instans ECS.

  2. Periksa beban sistem dan aktivitas proses.

    sudo top
  3. Identifikasi penyebab masalah.

    Pada antarmuka interaktif top, tekan P untuk mengurutkan proses berdasarkan utilisasi CPU secara menurun. Identifikasi ID proses (PID) dan nama perintah (COMMAND) dari proses yang paling banyak mengonsumsi CPU.

    • Jika proses aplikasi seperti java, python, atau php-fpm secara konsisten menggunakan lebih dari 80% CPU, lihat Tangani proses aplikasi yang sibuk.

    • Jika nilai waktu tunggu I/O (wa) pada baris %Cpu(s) secara konsisten di atas 20%, sedangkan nilai ruang pengguna (us) dan ruang kernel (sy) rendah, serta load average jauh lebih tinggi daripada jumlah core CPU, hal ini menunjukkan bahwa CPU menghabiskan banyak waktu menganggur sambil menunggu operasi I/O disk. Dalam kasus ini, lihat Tangani hambatan I/O disk.

      Saat suatu proses menunggu operasi I/O disk selesai, proses tersebut masuk ke status tidur tak terputus (D state) dan tidak dapat dihentikan. Banyaknya proses dalam D state menunjukkan respons disk yang lambat, sehingga memaksa CPU menunggu dan meningkatkan beban sistem.
    • Jika nilai sistem (sy) pada baris %Cpu(s) secara konsisten di atas 30%, biasanya menunjukkan bahwa kernel sering menjalankan panggilan sistem atau menangani interupsi. Dalam kasus ini, lihat Tangani kernel atau panggilan sistem yang sibuk.

    • Jika nilai softirq (si) pada baris %Cpu(s) secara konsisten di atas 15%, hal ini menunjukkan traffic jaringan tinggi. Dalam kasus ini, lihat Tangani interupsi jaringan yang sibuk.

Langkah 2: Analisis dan selesaikan masalah

Proses aplikasi yang sibuk

  • Analisis dan optimalkan kode Anda:

    Gunakan tool profiling kinerja untuk menemukan hot spot dalam kode Anda.

    • Aplikasi Java: Gunakan jstack <PID> untuk mengekspor tumpukan thread. Cari thread dalam status RUNNABLE dan periksa apakah tumpukan panggilan terjebak dalam metode tertentu dalam waktu lama.

    • Aplikasi C/C++: Gunakan perf top -p <PID> untuk melihat simbol fungsi spesifik yang paling banyak mengonsumsi CPU.

    Berdasarkan analisis tersebut, optimalkan algoritma, perbaiki infinite loop, atau kurangi komputasi yang tidak perlu.

  • Mitigasi serangan lapisan aplikasi: Jika Anda mengalami serangan CC lapisan aplikasi berbahaya, yang ditandai dengan banyaknya permintaan HTTP tidak biasa, deploy web application firewall (WAF) untuk perlindungan. Untuk informasi selengkapnya, lihat Lindungi instans ECS dari serangan CC menggunakan WAF.

  • Upgrade sumber daya: Jika bottleneck disebabkan oleh pertumbuhan bisnis normal, upgrade tipe instans.

Hambatan I/O disk

  1. Identifikasi proses yang menyebabkan I/O tinggi: Pemecahan Masalah Beban I/O Disk Tinggi pada Sistem Linux.

  2. Periksa akumulasi proses dalam D state:

    sudo ps -axjf | grep " D"
    • Optimasi aplikasi: Kurangi level logging dan tambahkan indeks pada query database untuk mengurangi operasi baca/tulis disk.

    • Upgrade penyimpanan: Anda dapat upgrade kategori cloud disk (misalnya, dari ESSD PL1 ke ESSD PL2/PL3) untuk meningkatkan IOPS dan throughput. IOPS maksimum cloud disk juga dibatasi oleh tipe instans yang terpasang. Jika batas IOPS tipe instans lebih rendah daripada kemampuan cloud disk, Anda harus upgrade tipe instans.

    • Restart sistem: Restart sistem dapat membersihkan akumulasi proses dalam D state.

Kernel atau panggilan sistem yang sibuk

  1. Periksa context switch: Jalankan perintah vmstat 1 dan amati nilai pada kolom cs (context switch). Jika nilai ini secara konsisten melebihi 100.000, laju context switch terlalu tinggi. Periksa apakah aplikasi Anda membuat dan menghancurkan terlalu banyak thread.

  2. Periksa tugas kernel: Jika proses kswapd0 menunjukkan utilisasi CPU tinggi, memori fisik tidak mencukupi dan kernel sering melakukan reclaim memori. Untuk mengatasi hal ini, upgrade tipe instans.

    Saat memori fisik rendah, kswapd0 sering memindai, mereclaim, dan menukar keluar halaman memori. Tugas-tugas komputasi-intensif ini mengonsumsi sumber daya CPU secara signifikan dan menyebabkan utilisasi CPU tinggi.

Interupsi jaringan yang sibuk

  1. Analisis traffic: Gunakan tool seperti iftop atau iptraf-ng untuk menganalisis sumber dan jenis traffic jaringan.

  2. Periksa konfigurasi: Untuk beban jaringan tinggi, Anda dapat aktifkan multi-queue untuk network interface card (NIC) agar interupsi didistribusikan ke beberapa core CPU.

  3. Tanggapi serangan jaringan:

Langkah selanjutnya

  • Konfigurasikan Pemantauan Peringatan: Tetapkan ambang batas peringatan yang wajar untuk metrik seperti utilisasi CPU, beban sistem, dan waktu tunggu I/O agar menerima peringatan dini. Untuk melakukan analisis historis metrik sistem Linux, Anda dapat gunakan tool atop untuk memantau metrik sistem Linux.

  • Lakukan pemeriksaan keamanan berkala: Gunakan Security Center untuk secara berkala melakukan pemindaian kerentanan, pemindaian virus, dan pemeriksaan baseline pada host Anda untuk memperbaiki risiko keamanan potensial.

  • Lakukan tinjauan dan optimalisasi berkala: Tinjau secara berkala kinerja dan kode sistem serta aplikasi Anda untuk mengidentifikasi dan menyelesaikan bottleneck kinerja potensial.

  • Perencanaan kapasitas: Rencanakan kapasitas sumber daya berdasarkan tren pertumbuhan bisnis untuk memastikan sistem Anda mampu menangani beban di masa depan.