Gejala
Tanggapan lambat: Perintah Protokol Secure Shell (SSH) tertunda. Akses situs web atau API menjadi lambat atau timeout.
Metrik tinggi: Metrik CPU, memori, dan I/O disk secara konsisten melebihi 80%.
Gangguan layanan: Sistem menghentikan proses penting karena kesalahan kehabisan memori (OOM), dan instans otomatis dimulai ulang.
Kegagalan logon: Koneksi SSH ditolak.
Penyebab
Masalah aplikasi: Kode aplikasi memiliki bottleneck kinerja atau kebocoran memori.
Puncak trafik: Akses konkuren melebihi kapasitas pemrosesan instans.
Bottleneck I/O: Operasi baca dan tulis disk jenuh, yang menyebabkan CPU
iowaittinggi.
Solusi
Langkah 1: Gunakan htop untuk mengidentifikasi proses abnormal dengan cepat
Login ke instans ECS menggunakan koneksi VNC.
Buka ECS console - Instance. Di bilah navigasi atas, pilih wilayah dan kelompok sumber daya yang dituju.
Buka halaman detail instans yang dituju. Klik Connect dan pilih VNC. Masukkan nama pengguna dan kata sandi untuk login ke instans ECS.
Instal dan jalankan htop.
sudo yum install -y htop htopAnalisis keluaran pada antarmuka htop.
Untuk menemukan proses dengan konsumsi CPU tinggi, tekan tombol
F6dan urutkan berdasarkanPERCENT_CPUsecara menurun.Untuk menemukan proses dengan konsumsi memori tinggi, tekan tombol
F6dan urutkan berdasarkanPERCENT_MEMsecara menurun.
Langkah 2: Gunakan sar untuk mendiagnosis bottleneck sumber daya
Setelah Anda menggunakan htop untuk mengidentifikasi gejala, gunakan sar untuk mendapatkan data kuantitatif dan memastikan apakah bottleneck terjadi pada CPU, memori, atau I/O.
Instal dan aktifkan sysstat.
sudo yum install -y sysstat systemctl start sysstat && systemctl enable sysstatJalankan analisis terarah.
Analisis penggunaan CPU (
sar -u) untuk memastikan di mana waktu CPU dihabiskan.# Kumpulkan data sekali per detik sebanyak 5 kali sar -u 1 5%usertinggi: Menunjukkan adanya masalah aplikasi.%systemtinggi: Menunjukkan panggilan kernel atau I/O yang sering terjadi.%iowaitsecara konsisten lebih besar dari 20%: Menunjukkan bottleneck I/O disk.
Analisis beban sistem (
sar -q) untuk mengukur seberapa sibuk sistem tersebut.# Kumpulkan data sekali setiap 2 detik sebanyak 5 kali sar -q 2 5ldavg-1lebih besar dari jumlah core CPU: Sistem kelebihan beban.runq-sztinggi: Banyak proses dalam antrian menunggu CPU.
Analisis aktivitas memori dan swap (
sar -rdansar -W) untuk menentukan apakah memori telah habis.# Analisis penggunaan memori sar -r 1 3 # Analisis aktivitas swap (Swap) sar -W 1 3pswpin/sataupswpout/ssecara konsisten lebih besar dari 0: Memori fisik tidak mencukupi, dan sistem melakukan swapping ke disk. Hal ini menurunkan kinerja.
Analisis I/O disk (
sar -d) untuk mengidentifikasi bottleneck kinerja disk.# Kumpulkan data sekali per detik sebanyak 3 kali untuk menganalisis disk tertentu sar -d 1 3%utilmendekati 100%: I/O disk jenuh.awaitlebih besar dari 20 ms: Waktu pemrosesan permintaan I/O terlalu lama.
Langkah 3: Terapkan solusi dan optimasi yang ditargetkan
Untuk proses aplikasi dengan konsumsi CPU tinggi:
Optimasi kode: Gunakan alat seperti
perf(C/C++) danjstack(Java) untuk mengidentifikasi dan mengoptimalkan kode hot spot.Optimasi logika: Periksa dan perbaiki operasi tidak efisien seperti loop tak terbatas dan kueri SQL yang melakukan pemindaian tabel penuh.
Untuk memori tidak mencukupi atau swapping yang sering terjadi:
Investigasi kebocoran: Gunakan alat seperti
valgrind(C/C++) danjmap(Java) untuk menganalisis kebocoran memori.Sesuaikan konfigurasi: Konfigurasikan parameter memori aplikasi, seperti parameter
-Xmsdan-Xmxuntuk Java Virtual Machine (JVM).Tingkatkan sumber daya: Tambahkan memori fisik dengan mengubah tipe instans. Untuk informasi selengkapnya, lihat Overview of instance type changes.
I/O disk tinggi: Untuk informasi selengkapnya, lihat Troubleshoot high disk I/O load on Linux systems.
Langkah Selanjutnya
Configure monitoring and alerts: Tetapkan ambang batas peringatan untuk metrik utama seperti CPU, memori, beban, dan disk untuk menerima peringatan dini.
Plan for Auto Scaling: Untuk beban kerja yang fluktuatif, seperti aplikasi web, konfigurasikan kebijakan Auto Scaling untuk secara otomatis menambah atau menghapus instans sebagai respons terhadap perubahan trafik.