Mitos Server Tanpa Swap: Ketika Apa yang Disebut “Best Practice” Justru Membunuh Sistem
Di banyak diskusi DevOps, ada satu kalimat yang sering terdengar seperti dogma:
“Best practice server itu tidak boleh ada swap.”
Kalimat ini terdengar tegas, modern, dan seolah-olah sudah final. Padahal, dalam banyak kasus, pemahaman ini keliru, berbahaya, dan justru mempercepat terjadinya downtime.
Artikel ini membongkar:
- Asal-usul miskonsepsi no swap
- Contoh nyata kasus OOM Killer
- Perbedaan antara performance tuning dan system survivability
- Best practice swap yang benar untuk server produksi
Asal Mula Mitos: “Server Tidak Boleh Ada Swap”
Mitos ini biasanya lahir dari konteks sempit, lalu digeneralisasi. Hal ini menyebabkan banyak kasus dimana aplikasi dimatikan secara paksa oleh OOM Killer.
Konteks yang Sering Melahirkan Klaim Ini
Latency-sensitive system
- Trading, dalam sistem seperti ini keberadaan swap jika salah konfigurasi akan memperlambat aplikasi karena penggunaan swap yang terlalu sering.
- Real-time processing, swap juga akan memperlambat aplikasi karena alasan yang sama.
- Sistem yang lebih baik mati daripada lambat, kadang ada aplikasi yang secara alami harus memegang prinsip ini.
Pengalaman buruk dengan swap default Linux
swappinessterlalu tinggi, membuat penggunaan swap lebih sering.- Server terasa hang, karena sering switch context antara memory dan swap.
- Swap disalahkan, bukan konfigurasinya, seharusnya swap bisa dikonfigurasi agar digunakan saat critical dan saat memory misal-nya menyentuh angka 90%.
Narasi simplistik
“Kalau pakai swap berarti aplikasinya salah.”
Pernyataan ini sebagian benar, tapi kesimpulannya salah arah.
Fakta Penting yang Sering Diabaikan
Swap ≠ Solusi Performa
Swap memang:
- Lambat
- Tidak cocok untuk beban real-time
Namun:
Swap tidak dirancang untuk performa, tapi untuk stabilitas sistem. Hal ini harus dimengerti terlebih dahulu, karena merupakan penyebab kenapa artikel ini dibuat.
OOM Killer Jauh Lebih Brutal daripada Swap
Ketika memory habis dan tidak ada swap:
- Kernel tidak punya ruang manuver
- OOM Killer langsung aktif
- Proses dipilih dan di-SIGKILL
Ciri khas OOM Killer:
- Tidak bisa ditangkap aplikasi
- Tidak ada graceful shutdown
- Bisa mematikan proses paling penting
Dalam banyak kasus, OOM Killer adalah last line of failure dari desain yang keliru.
Studi Kasus Nyata: PHP + No Swap
Kondisi Server
- RAM: 4GB
- Swap: tidak ada
- PHP-FPM worker: banyak
memory_limitbesar
Yang Terjadi
- Beberapa request PHP berat berjalan bersamaan
- Memory sistem mendekati 70–80%, bahkan sampai di atas 90%
- Kernel kehabisan opsi reclaim
- OOM Killer mengeksekusi proses PHP
Log menunjukkan:
- Penggunaan memory PHP ~3GB
- PHP sebagai kandidat terkuat untuk di-kill
Intinya
Tanpa swap:
OOM Killer tidak punya alternatif selain membunuh proses.
Swap kecil saja sudah cukup untuk menunda dan mencegah eksekusi brutal ini.
Kesalahan Konseptual yang Paling Umum
❌ “Kalau Ada Swap, Server Jadi Tidak Sehat”
Fakta:
- Server sehat boleh punya swap
- Yang tidak sehat adalah swap dipakai terus-menerus
❌ “Swap Menyembunyikan Memory Leak”
Fakta:
- Swap tidak menyembuhkan desain buruk
- Tapi memberi waktu observasi dan mitigasi
Downtime instan karena OOM justru menghilangkan kesempatan debugging.
Best Practice Swap untuk Server Produksi
Swap Kecil, Bukan Besar
Tujuan swap:
- Buffer darurat
- Bukan perpanjangan RAM
Rekomendasi kasar:
- RAM ≤ 8GB → swap 1–2GB
- RAM besar → swap kecil tetap berguna
Atur vm.swappiness
Default Linux sering terlalu agresif (sering karena ketidaktahuan ini dan menggunakan konfigurasi default, maka menolak swap).
Rekomendasi:
vm.swappiness = 1 # swap digunakan hanya saat critical
atau
vm.swappiness = 5 # swap digunakan saat penggunaan memory 95%
Artinya:
Swap hampir tidak pernah digunakan, kecuali saat memory kritis atau penggunaan memory diatas 95%.
Swap sebagai Airbag Sistem
Perilaku ideal untuk swap di dalam server:
- Swap usage hampir selalu 0%, hanya digunakan saat critical atau penggunaan memory sudah sangat besar di dalam server.
- Naik sebentar saat spike, ini menandakan konfigurasi sudah benar dan swap tidak digunakan sebagai ekstensi memory oleh server.
- Turun kembali, jika tidak pernah turun maka perlu dicermati ada konfigurasi yang salah.
Jika swap terus aktif, maka:
Itu alarm desain, bukan keberhasilan konfigurasi.
Kombinasikan dengan Memory Limit Aplikasi
Swap bukan solusi tunggal, swap hanya strategy untuk meningkatkan survivability server.
Harus dibarengi:
- Memory limit aplikasi yang realistis, agar tidak ada aplikasi yang memakan memory secara tidak terukur.
- Batas worker, sebagian besar aplikasi seperti php, menerapkan batas memory per worker, semakin banyak worker, maka semakin banyak memory secara total yang digunakan oleh aplikasi, ingat total penggunaan memory aplikasi (dalam kontek ini) = max memory aplikasi * jumlah worker.
- Isolasi workload berat, tempatkan aplikasi dengan workload berat di tempat lain, karena memerlukan treatment tambahan/khusus.
Swap melindungi sistem, bukan membenarkan overcommit memory.
Pantau swap, Jangan mengharamkan swap
Monitoring sangatlah penting, aspek yang perlu dimonitor:
- Swap usage, untuk mengetahui apakah swap digunakan terus menerus atau penggunaan melebihi ukuran tertentu selama beberapa waktu (ini menandakan ada yang salah karena artinya swap digunakan terus menerus oleh server).
- OOM log, untuk mengetahui apakah di dalam server ada OOM Killer yang aktif, agar bisa segera dicheck untuk ditindaklanjuti.
- Memory per proses, untuk mengetahui penggunaan memory oleh setiap proses di server dan melakukan mitigasi jika ada penggunaan memory yang abnormal.
Swap yang dipantau ≠ swap yang berbahaya.
Kapan No Swap Memang Masuk Akal?
No swap bisa dibenarkan jika:
- Sistem ultra low-latency
- Jenis aplikasi lebih baik mati daripada lambat
- Aplikasi sudah memory-safe dan dibatasi keras
Di luar itu?
No swap lebih sering menjadi ideologis daripada teknis.
Alasan Penguat Penggunaan Swap (Lainnya)
Tokoh penting Linux seperti Chris Down (Insinyur di Meta/Facebook) berargumen bahwa menjalankan server tanpa swap justru bisa memperburuk stabilitas server, bahkan di server dengan RAM besar sekalipun.
Berikut adalah alasan penguat mengapa tetap menggunakan swap sebagai safety net adalah keputusan yang tepat:
1. Swap Meningkatkan “Efisiensi” RAM
Tanpa swap, data “sampah” (proses yang hanya jalan sekali saat booting dan tidak pernah dipakai lagi) akan terus duduk manis di RAM. Dengan adanya swap, kernel bisa membuang data sampah ini ke disk sehingga RAM fisik yang berharga bisa dialokasikan sepenuhnya untuk File Cache yang membuat performa I/O server jauh lebih cepat.
2. Mencegah “OOM Terlalu Dini”
Tanpa swap, Linux terkadang bisa menjadi terlalu agresif. Saat RAM penuh oleh cache, dan ada aplikasi minta memori tambahan, kernel bisa panik dan menjalankan OOM Killer padahal sebenarnya masih ada ruang jika data pasif dipindahkan sebentar. Swap mencegah “kematian mendadak” yang tidak perlu ini.
3. Memberikan Kesempatan untuk Debugging
Ini adalah poin paling krusial untuk yang tidak punya monitoring:
- Tanpa Swap: Aplikasi mati → User komplain → Bingung kenapa mati.
- Dengan Swap: Server melambat → Merasa ada yang aneh → Masih bisa masuk lewat SSH → Bisa menjalankan top atau htop untuk melihat proses mana yang memakan RAM sebelum segalanya hancur.
4. Strategi “Golden Middle” (Jalan Tengah)
Untuk eksekusi terbaik, gunakan konfigurasi ini:
- Ukuran Swap: 2GB (cukup untuk menampung lonjakan tanpa menghabiskan disk).
- Swappiness: Set di angka 1, 5 atau 10. Ini adalah angka “keramat” yang berarti: “Gunakan RAM sampai benar-benar mepet, tapi jangan ragu pindahkan data pasif ke swap jika memang butuh.”
- VFS Cache Pressure: Set vm.vfs_cache_pressure = 50. Ini akan membuat kernel lebih suka menyimpan cache file di RAM daripada membuangnya, yang membantu performa aplikasi web seperti PHP.
Tapi sekali lagi, untuk sistem yang menuntut low latency, ketiadaan swap adalah sebuah keharusan, yang terpenting dibarengi dengan observability, strategy recovery dan mitigasi yang ketat.
Kesimpulan Tegas
- ❌ “Server tidak boleh ada swap” bukan best practice universal
- ✅ Swap kecil, terkontrol, jarang dipakai adalah best practice stabilitas
- ❌ OOM Killer bukan solusi
- ✅ Swap memberi survivability
Swap bukan musuh. Ketidaktahuan kontekslah musuh sebenarnya.
Penutup
Dalam sistem produksi, tujuan utama bukan sekadar cepat — tapi tetap hidup di kondisi terburuk.
Server tanpa swap mungkin terlihat bersih di atas kertas, tapi dalam dunia nyata, ia mati lebih cepat saat tekanan datang.
Stabilitas, observability, dan survivability selalu lebih bernilai daripada dogma.
Ada kondisi khusus dimana swap memang sangat tidak direkomendasikan untuk diaktifkan di server, misalnya di kubernetes cluster karena bisa mengganggu perhitungan memory dari kubernetes sendiri terkait alokasi memory pada pod, tetapi artikel ini tidak masuk ke pembahasan di kasus seperti ini yang bahkan swap secara konteks memang harus ditiadakan.