Deskripsi masalah
Situs web atau aplikasi yang dihosting pada instans Elastic Compute Service (ECS) merespons lambat, mengalami timeout, atau menampilkan log error terkait I/O.
Metrik IOPS, throughput, atau utilisasi perangkat (
%util) untuk instans tersebut sangat tinggi.
Penyebab
Proses dengan konsumsi I/O tinggi: Sebuah proses pada instans—seperti operasi baca/tulis database, penulisan log intensif, atau pekerjaan cadangan (backup job)—menghasilkan banyak permintaan baca/tulis disk dan menghabiskan seluruh bandwidth I/O disk.
Kemacetan kinerja disk: Permintaan I/O normal dari bisnis Anda saat ini melebihi batas kinerja (IOPS atau throughput) disk yang terpasang pada instans.
Solusi
Gunakan iostat untuk mengonfirmasi bottleneck disk, lalu gunakan iotop untuk mengidentifikasi proses spesifik. Terakhir, optimalkan atau tingkatkan resource sesuai kebutuhan.
Langkah 1: Konfirmasi bottleneck I/O disk
Login ke instans ECS.
Buka ECS console - Instances. Pada bilah navigasi atas, pilih wilayah dan kelompok sumber daya yang dituju.
Buka halaman detail instans target. Klik Connect dan pilih Workbench. Ikuti petunjuk pada halaman untuk login ke terminal.
Gunakan
iostatuntuk memantau status I/O disk.Instal paket sysstat.
Alibaba Cloud Linux / CentOS / Fedora
sudo yum install -y sysstatUbuntu / Debian
sudo apt install -y sysstatopenSUSE
sudo zypper install -y sysstatJalankan
iostatuntuk merefresh data setiap 2 detik.iostat -d -x -k 2
Analisis output
iostat. Perhatikan metrik berikut:r/s,w/s: Jumlah permintaan baca dan tulis per detik (IOPS).rkB/s,wkB/s: Jumlah data yang dibaca dan ditulis per detik (throughput).%util: Utilisasi I/O disk. Jika nilai ini secara konsisten mendekati 100%, perangkat disk telah jenuh.
Langkah 2: Temukan proses dengan konsumsi I/O tinggi
Setelah Anda mengonfirmasi bahwa I/O disk telah jenuh, identifikasi proses yang menyebabkan beban tinggi tersebut.
Gunakan
iotopuntuk melihat aktivitas I/O proses secara real-time.Instal
iotop.Alibaba Cloud Linux / CentOS / Fedora
sudo yum install -y iotopUbuntu / Debian
sudo apt install -y iotopopenSUSE
sudo zypper install -y iotopTampilkan proses I/O aktif.
sudo iotop -o
Analisis output
iotop.Identifikasi proses: Temukan proses dengan I/O tertinggi pada kolom
DISK WRITEatauDISK READ.Konteks tambahan: Kolom
IO>menunjukkan persentase waktu proses menunggu I/O.
Langkah 3: Analisis dan tangani proses abnormal
Analisis penyebab: Penyebab yang mungkin termasuk kueri SQL lambat, tingkat log yang tinggi, atau operasi baca/tulis file yang terlalu sering.
Metode penyelesaian (termasuk namun tidak terbatas pada):
Database: Periksa log kueri lambat. Optimalkan pernyataan SQL dan indeks.
Layanan log: Turunkan tingkat log aplikasi (misalnya, dari DEBUG ke INFO) dan konfigurasikan rotasi log.
Strategi I/O file: Periksa logika baca/tulis file. Gunakan cache memori dan tingkatkan ukuran buffer.
Langkah 4: Evaluasi dan tingkatkan kinerja disk (Opsional)
Jika Anda tidak dapat mengurangi beban melalui optimasi lapisan aplikasi, tingkatkan disk untuk meningkatkan kinerja.
Evaluasi kebutuhan: Tentukan target kinerja berdasarkan IOPS dan throughput aktual yang dilaporkan oleh
iostat.Lakukan peningkatan: Berdasarkan target kinerja tersebut, upgrade disk ke spesifikasi yang lebih tinggi.
Rekomendasi
Konfigurasikan pemantauan dan peringatan: Untuk metrik disk utama seperti
%util, IOPS, dan throughput, konfigurasikan ambang batas peringatan yang wajar (misalnya, 80%) untuk mendeteksi masalah lebih awal.Optimasi I/O aplikasi: Pada lapisan aplikasi, terapkan caching sebisa mungkin untuk mengurangi operasi baca/tulis langsung ke disk. Untuk skenario yang intensif menulis, pertimbangkan penggunaan penulisan asinkron atau batch untuk meratakan puncak I/O.