全部产品
Search
文档中心

:Pemecahan masalah dan penyelesaian penggunaan CPU tinggi atau beban tinggi pada instans Linux

更新时间:Dec 11, 2025

Gejala

Saat penggunaan CPU atau beban sistem tinggi, Anda mungkin mengalami gejala berikut:

  1. Layanan bisnis tidak normal

    • Koneksi remote Protokol Secure Shell (SSH) menjadi lambat atau tidak merespons. Dalam kasus parah, Anda bahkan tidak dapat membuat koneksi.

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

    • Permintaan sering mengalami timeout, panggilan API gagal, dan kapasitas layanan menurun.

  2. Sumber daya sistem tidak normal

    • Penggunaan CPU instans secara konsisten di atas 80%, atau bahkan mendekati 100%.

    • Rata-rata beban sistem (load average) secara konsisten melebihi jumlah core CPU logis. Misalnya, beban lebih dari 4 pada mesin 4-core.

    • CloudMonitor memicu peringatan beban tinggi, seperti pesan teks atau email.

Penyebab

  • Proses komputasi yang intensif CPU: Proses tertentu mengonsumsi banyak sumber daya CPU karena masalah logika kode, seperti loop tak terbatas, tugas komputasi kompleks, atau permintaan bisnis dengan konkurensi tinggi.

  • Kemacetan performa I/O: Operasi baca/tulis disk yang sering atau performa penyimpanan yang buruk menyebabkan proses menunggu lama untuk operasi I/O. Hal ini meningkatkan rata-rata beban sistem.

  • Panggilan kernel atau sistem: Sering terjadi context switch, tugas kernel, atau pengecualian driver yang meningkatkan penggunaan CPU dalam mode kernel.

  • Program tidak normal atau berbahaya: Instans terinfeksi program penambangan atau virus Trojan, atau memiliki proses rootkit tersembunyi yang mengonsumsi banyak sumber daya komputasi.

Solusi

Pertama, gunakan tool top untuk mengidentifikasi metrik yang menyebabkan penggunaan CPU atau beban tinggi. Metrik tersebut bisa berupa mode user, mode kernel, atau waktu tunggu I/O (I/O wait). Kemudian, gunakan tool seperti perf, iotop, atau vmstat untuk menganalisis jenis metrik tersebut. Terakhir, lakukan tindakan untuk mengoptimalkan atau menyelesaikan masalah tersebut.

Langkah 1: Identifikasi metrik bottleneck CPU

  1. Login ke instans ECS menggunakan koneksi VNC.

    1. Buka ECS console - Instances. Pada 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. Lihat beban sistem dan aktivitas proses.

    sudo top
  3. Identifikasi penyebab masalah.

    Pada antarmuka interaktif top, tekan tombol P untuk mengurutkan proses berdasarkan penggunaan CPU secara menurun. Identifikasi ID proses (PID) dan nama proses (COMMAND) dengan konsumsi CPU tertinggi.

    • Jika penggunaan CPU oleh proses bisnis seperti java, python, atau php-fpm secara konsisten di atas 80%, lihat Handle busy business processes.

    • Jika waktu tunggu I/O (wa) pada bagian %Cpu(s) secara konsisten di atas 20%, sedangkan mode user (us) dan mode kernel (sy) rendah, serta rata-rata beban jauh lebih tinggi daripada jumlah core CPU, hal ini menunjukkan bahwa CPU menghabiskan terlalu banyak waktu menunggu respons disk. Dalam kasus ini, lihat Handle disk I/O bottlenecks.

      Saat suatu proses menunggu operasi I/O disk, proses tersebut masuk ke status D (uninterruptible sleep). Anda tidak dapat menghentikan proses dalam status ini. Banyak proses dalam status D menandakan respons disk yang lambat. Hal ini memaksa CPU menunggu dan meningkatkan beban sistem.
    • Jika sy (system) pada bagian %Cpu(s) secara konsisten di atas 30%, kernel sering mengeksekusi panggilan sistem atau menangani interrupt. Dalam kasus ini, lihat Handle busy kernel or system calls.

    • Jika si (softirq) pada bagian %Cpu(s) secara konsisten di atas 15%, lalu lintas jaringan tinggi. Dalam kasus ini, lihat Handle busy network interrupts.

Langkah 2: Analisis dan selesaikan masalah

Handle busy business processes

  • Analisis dan optimalkan kode:

    Gunakan tool analisis performa untuk menemukan hot spot pada kode.

    • Aplikasi Java: Gunakan jstack <PID> untuk mengekspor stack thread. Temukan thread dalam status RUNNABLE. Periksa apakah tumpukan panggilan tersangkut pada metode tertentu.

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

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

  • Tingkatkan sumber daya: Jika bottleneck sumber daya disebabkan oleh pertumbuhan bisnis normal, upgrade the instance type.

Handle disk I/O bottlenecks

  1. Temukan proses dengan I/O tinggi. Untuk informasi selengkapnya, lihat Troubleshoot high disk I/O load on a Linux system.

  2. Periksa akumulasi proses dalam status D:

    sudo ps -axjf | grep " D"
  3. Ambil tindakan:

    • Optimalkan aplikasi: Turunkan tingkat log. Tambahkan indeks pada query database untuk mengurangi operasi baca/tulis disk.

    • Tingkatkan penyimpanan: Upgrade the disk category, misalnya dari ESSD PL1 ke ESSD PL2 atau PL3, untuk meningkatkan input/output operations per second (IOPS) dan throughput. IOPS disk pada akhirnya dibatasi oleh tipe instans tempat disk tersebut dipasang. Jika batas IOPS tipe instans lebih rendah daripada kemampuan disk, Anda juga perlu upgrade the instance type.

    • Restart sistem: Jika terdapat akumulasi proses dalam status D, Anda dapat menyelesaikan masalah dengan me-restart sistem.

Handle busy kernel or system calls

  1. Periksa context switch: Jalankan perintah vmstat 1. Perhatikan nilai pada kolom cs (context switch). Jika nilainya secara konsisten melebihi 100.000, context switch terlalu sering terjadi. Periksa apakah aplikasi Anda membuat atau menghapus terlalu banyak thread.

  2. Periksa tugas kernel: Jika proses kswapd0 memiliki penggunaan tinggi, memori fisik tidak mencukupi, dan kernel sering melakukan reclaim memori. Upgrade the instance type.

    Saat memori fisik rendah, kswapd0 sering memindai halaman, mereclaim memori, dan menukar halaman ke swap. Tugas-tugas komputasi-intensif ini menggunakan banyak sumber daya CPU dan meningkatkan penggunaannya.

Handle busy network interrupts

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

  2. Untuk menangani beban jaringan tinggi, enable multi-queue for the network interface card (NIC). Ini mendistribusikan interrupt ke beberapa core CPU.

  3. Lakukan pemeriksaan keamanan: Buka Security Center untuk memeriksa adanya serangan jaringan.

Rekomendasi

  • Configure monitoring and alerting: Tetapkan ambang batas peringatan yang wajar untuk metrik seperti penggunaan CPU, beban, dan waktu tunggu I/O. Hal ini memberikan peringatan dini terhadap potensi masalah. Untuk meninjau dan menganalisis metrik historis sistem Linux, use the atop tool to monitor Linux system metrics.

  • Perform regular security inspections: Gunakan Security Center untuk secara berkala memindai host Anda terhadap vulnerabilities, viruses, dan baseline risks. Perbaiki setiap potensi masalah keamanan.

  • Perform regular reviews and optimizations: Lakukan audit rutin terhadap performa sistem dan aplikasi Anda. Tinjau kode Anda untuk menemukan dan menyelesaikan potensi bottleneck performa.

  • Plan capacity: Rencanakan kapasitas berdasarkan tren pertumbuhan bisnis. Hal ini memastikan sumber daya sistem Anda mampu menangani peningkatan beban di masa depan.