Cara Mencari Proses Pemakan Disk I/O di VPS Linux: Panduan iotop dan iostat
Sebagai pengelola VPS Linux untuk klien bisnis, satu hal yang sering saya temukan adalah: server berjalan lambat tanpa alasan jelas. CPU tidak tinggi, RAM masih lega — tapi website lemot.
Jawabannya hampir selalu ada di disk I/O. Dan penyebab tersering? Proses yang menulis ke disk tanpa Anda sadari.
Panduan ini mengajarkan cara mencari proses pemakan disk I/O di VPS Linux, menggunakan tool bawaan yang sudah tersedia tanpa install tambahan.

Kenapa I/O Disk Bisa Jadi Bottleneck?
VPS hosting berbagi sumber daya fisik. Meski CPU dan RAM milik Anda mencukupi, disk (terutama HDD shared atau VPS murah dengan SSD terbatas) bisa menjadi hambatan tersendiri ketika:
- Plugin WordPress menulis log terlalu agresif
- MySQL melakukan full table scan berulang-ulang
- Proses backup berjalan bersamaan dengan jam sibuk
- File session PHP tidak dibersihkan dan menumpuk ribuan file
Tool 1: iostat — Statistik I/O Disk Real-Time
iostat adalah cara paling cepat melihat beban disk secara keseluruhan:
iostat -x 2 5
-x = tampilkan statistik extended, 2 = refresh tiap 2 detik, 5 = tampilkan 5 kali
Kolom yang paling penting: – %util → persentase waktu disk sibuk (di atas 80% = bottleneck) – await → waktu tunggu rata-rata per request (ms), idealnya di bawah 20ms – r/s, w/s → jumlah baca/tulis per detik
# Jika iostat belum terinstall:
apt install sysstat -y # Debian/Ubuntu
yum install sysstat -y # CentOS/AlmaLinux

Tool 2: iotop — Siapa yang Paling Banyak Menulis ke Disk?
iotop mirip top tapi untuk I/O disk — menampilkan proses mana yang paling agresif membaca/menulis:
iotop -ao
-a = tampilkan akumulatif (bukan hanya saat ini), -o = tampilkan hanya proses yang aktif I/O
Output: “ Total DISK READ: 2.34 M/s | Total DISK WRITE: 15.67 M/s PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1842 be/4 mysql 0.00 B 12.45 M/s 0.00 % 89.12 % mysqld 891 be/4 www-data 0.00 B 2.11 M/s 0.00 % 8.33 % php-fpm: pool “
Contoh di atas: mysqld adalah penyebab utama I/O tinggi.
# Install iotop jika belum ada:
apt install iotop -y
Tool 3: lsof +D — Cari File yang Paling Sering Diakses
Jika sudah tahu proses yang biang kerok (misal MySQL), cari file apa yang sedang ia buka:
lsof -p $(pidof mysqld) | grep -v "mem\|cwd\|txt" | head -20
Atau cari file terbesar yang sedang dibaca/ditulis:
lsof +D /var/lib/mysql | head -20
Tool 4: vmstat — Lihat Swap dan I/O Sekaligus
vmstat 2 10
Kolom penting: – si/so = swap in/out (jika > 0 terus-menerus = RAM kurang) – bi/bo = blok yang dibaca/ditulis ke disk per detik

Checklist Optimasi I/O Disk VPS Linux
| Masalah | Penyebab Umum | Solusi |
|---|---|---|
| MySQL I/O tinggi | Full table scan tanpa indeks | Aktifkan slow query log, tambah indeks |
| PHP I/O tinggi | Terlalu banyak file session | Aktifkan session garbage collection, pakai Redis |
| Disk terus menulis malam hari | Cron backup berjalan | Jadwalkan backup di luar jam sibuk (03:00-05:00 WIB) |
| I/O tinggi tapi tidak tahu siapa | Log bertumpuk | find /var/log -name "*.log" -size +100M |
| %util selalu >80% | VPS I/O throttle dari host | Upgrade paket atau pindah ke SSD NVMe |
Cara Cepat Mengurangi I/O dari WordPress
Tanpa ganti hosting, beberapa langkah ini langsung terasa hasilnya:
# Nonaktifkan heartbeat WordPress (penyebab banyak request DB)
wp cron event unschedule --all 2>/dev/null
# Bersihkan sesi PHP yang menumpuk
find /tmp -name "sess_*" -mtime +1 -delete
# Cek slow query MySQL (jalankan di MySQL prompt)
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;