VPS dengan RAM kecil punya satu masalah klasik: begitu beban naik sedikit saja, entah karena build aplikasi, proses backup database, atau traffic visitor yang tiba-tiba ramai, RAM langsung penuh dan proses penting bisa mati sendiri tanpa peringatan. Kalau kita pernah menemukan aplikasi yang tiba-tiba berhenti tanpa error yang jelas di log aplikasinya, kemungkinan besar penyebabnya adalah OOM killer (Out of Memory Killer), mekanisme kernel Linux yang mematikan proses secara paksa saat RAM benar-benar habis.
Solusi paling cepat untuk masalah ini adalah membuat swap lewat file, bukan lewat partisi. Caranya tidak butuh downtime, tidak perlu reboot, dan tidak perlu resize partisi disk yang ribet di kebanyakan provider VPS. Artikel ini membahas langkah lengkapnya: mulai dari cek status swap yang sudah ada, menentukan ukuran yang ideal, membuat dan mengaktifkan swap file, membuatnya permanen lewat /etc/fstab, sampai tuning swappiness supaya swap bekerja optimal tanpa bikin server justru lebih lambat.
1. Swap dan Kebutuhan VPS
Swap adalah ruang di storage yang dipakai kernel Linux sebagai perpanjangan RAM. Saat RAM penuh, kernel memindahkan halaman memori yang jarang dipakai (inactive pages) ke swap, supaya RAM fisik yang tersisa bisa dipakai proses yang lebih aktif. Swap bukan pengganti RAM, kecepatannya jauh di bawah RAM karena harus lewat operasi baca-tulis disk, tapi keberadaannya cukup untuk mencegah kernel langsung mengeksekusi OOM killer saat terjadi lonjakan pemakaian memori sesaat.
Ada dua cara menyediakan swap: swap partition (partisi disk khusus) dan swap file (file biasa di dalam filesystem yang sudah ada). Untuk VPS, swap file jauh lebih relevan. Kebanyakan provider cloud memberi disk dalam satu partisi tunggal saat provisioning, jadi menambah partisi baru berarti harus resize disk dulu, proses yang lebih ribet dan kadang butuh downtime. Swap file cukup dibuat sebagai file biasa, ukurannya gampang diubah kapan saja tanpa menyentuh skema partisi sama sekali.
Skenario yang sering memicu kebutuhan swap di VPS RAM kecil di antaranya adalah Developer yang menjalankan npm install atau composer install untuk proyek besar, proses compress atau backup database yang menyedot RAM sesaat, atau aplikasi dengan cache yang tumbuh cepat saat traffic visitor naik mendadak. Semua kasus ini punya pola yang sama, lonjakan pemakaian RAM yang sifatnya sementara, bukan kebutuhan RAM besar secara terus-menerus.
Swap File vs Swap Partition
Menurut Ubuntu Community Help Wiki, performa swap file pada filesystem modern (kernel 2.6 ke atas) setara dengan swap partition, jadi bukan lagi pertimbangan utama. Perbedaan nyata ada di fleksibilitas:
- Fleksibilitas ukuran: Swap file bisa diperbesar, diperkecil, atau dihapus kapan saja tanpa mengubah skema partisi. Swap partition butuh proses resize partisi yang lebih rumit dan berisiko.
- Kemudahan setup: Swap file cukup dibuat dengan beberapa perintah di filesystem yang sudah ada. Swap partition harus direncanakan sejak awal instalasi OS atau lewat partisi ulang disk.
- Hibernasi: Untuk mesin yang butuh fitur hibernate, swap partition lebih disarankan karena dukungannya lebih stabil. Ini jarang relevan untuk VPS, karena VPS selalu menyala (always-on) dan tidak pernah di-hibernate seperti laptop.
Karena VPS tidak butuh hibernasi dan disk-nya umumnya sudah berbasis SSD atau NVMe cloud storage, swap file jadi pilihan default yang lebih praktis. Semua langkah di artikel ini fokus ke swap file.
2. Cek Status Swap dan Storage
Jangan langsung buat swap file baru sebelum memastikan dua hal: apakah VPS sudah punya swap aktif, dan apakah sisa ruang disk cukup untuk menampungnya. Login ke VPS lewat SSH, lalu jalankan tiga perintah berikut.
Cek RAM dan swap yang aktif saat ini:
free -hContoh output pada VPS dengan RAM 1GB yang belum punya swap:
total used free shared buff/cache available
Mem: 973Mi 412Mi 89Mi 11Mi 472Mi 431Mi
Swap: 0B 0B 0BBaris Swap yang menunjukkan angka 0B di semua kolom berarti belum ada swap aktif. Total RAM yang terbaca (973Mi) sedikit lebih kecil dari 1GB, ini wajar karena sebagian kecil memori dipakai firmware dan kernel sebelum dilaporkan ke userspace.
Cek lebih spesifik apakah ada partisi atau file swap yang sedang aktif:
swapon --showKalau perintah ini tidak menampilkan output apa pun (kosong), artinya memang belum ada swap yang aktif di sistem, aman untuk lanjut membuat swap file baru.
Terakhir, cek sisa ruang disk supaya swap file yang dibuat tidak menghabiskan storage:
df -hFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 4.8G 19G 21% /Kalau swapon --show sudah menampilkan baris file atau partisi swap, VPS ini sudah punya swap aktif. Tidak perlu membuat swap baru kecuali memang ingin resize ke ukuran lain, caranya ada di bagian Hapus atau Nonaktifkan Swap File di bawah.
3. Ukuran Swap File Ideal
Ukuran swap yang pas tergantung jumlah RAM dan pola beban kerja VPS. Rule of thumb yang umum dipakai untuk server (bukan mesin desktop yang butuh hibernasi) adalah:
- RAM di bawah 2GB: swap sebesar 2x RAM.
- RAM 2GB-8GB: swap sebesar 1x RAM.
- RAM di atas 8GB: swap secukupnya saja, misalnya 4GB-8GB, bukan strict rasio 1:1. Menurut panduan DigitalOcean, swap lebih dari 4GB umumnya sudah tidak banyak berguna kalau fungsinya cuma sebagai cadangan darurat RAM.
Ubuntu Community Help Wiki (SwapFaq) sebenarnya punya formula yang sedikit berbeda: untuk sistem tanpa kebutuhan hibernasi, swap minimum bisa serendah round(sqrt(RAM)) dengan batas atas 2x RAM, sementara sistem yang butuh hibernasi wajib punya swap sebesar RAM itu sendiri. Karena VPS nyaris tidak pernah butuh hibernasi, rule of thumb yang lebih sederhana di atas (2x RAM untuk RAM kecil) tetap aman dipakai dan lebih mudah diingat, sekaligus memberi ruang lebih untuk menyerap lonjakan proses seperti build aplikasi.
Catatan: Jangan asal bikin swap sebesar mungkin. Swap tetap berjalan di atas disk, dan kalau VPS memakai storage berbasis jaringan (network-attached storage) yang lebih lambat dari SSD lokal, swap yang terlalu besar dan terpakai terus-menerus justru memicu swap thrashing, kondisi saat sistem sibuk baca-tulis swap sampai performanya lebih lambat daripada kalau proses itu langsung di-kill oleh OOM killer.
Untuk contoh di artikel ini, kita pakai VPS dengan RAM 1GB, jadi ukuran swap yang dibuat adalah 2GB.
4. Membuat Swap File di VPS
Semua perintah di bagian ini dijalankan sebagai root atau lewat sudo.
Langkah 1: Buat File Swap
Cara tercepat membuat file swap adalah lewat fallocate, perintah yang langsung mengalokasikan ruang disk tanpa menulis data byte demi byte:
sudo fallocate -l 2G /swapfilePerintah ini bekerja baik di filesystem ext4 (default di kebanyakan instalasi Ubuntu Server) maupun XFS. Root cause-nya kalau fallocate gagal biasanya karena dua hal: filesystem yang dipakai tidak mendukung operasi preallocation ini (jarang terjadi di ext4/XFS), atau khusus di filesystem Btrfs, mekanisme copy-on-write bawaannya membuat swap file hasil fallocate berpotensi ditolak kernel saat mkswap dijalankan.
Kalau fallocate gagal atau VPS memakai Btrfs, pakai dd sebagai alternatif yang lebih universal, meski lebih lambat karena menulis data nol byte demi byte:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progressAngka count=2048 dikalikan bs=1M menghasilkan file 2048MB (2GB), sesuaikan dengan ukuran yang sudah ditentukan di langkah sebelumnya.
Langkah 2: Atur Permission Swap
Batasi akses file swap supaya hanya root yang bisa membacanya:
sudo chmod 600 /swapfileLangkah ini bukan formalitas. Swap menyimpan salinan mentah dari isi RAM, yang bisa saja berisi data sensitif seperti password atau token yang sedang diproses aplikasi. Kalau permission file swap dibiarkan longgar, user lain di VPS yang sama, atau attacker yang berhasil mendapat akses terbatas, berpotensi membaca isi memori itu langsung dari file swap. chmod 600 memastikan hanya root yang bisa membaca dan menulis file ini.
Langkah 3: Format Jadi Area Swap
Format file yang sudah dibuat menjadi area swap yang valid:
sudo mkswap /swapfileOutput yang muncul kurang lebih seperti ini:
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=3f9d2b1a-8e4f-4c2b-9a1d-6f2e8b3c7a90UUID di baris output ini unik untuk setiap swap file yang dibuat, jadi nilainya pasti berbeda di VPS masing-masing. Selama tidak ada pesan error di output, file swap sudah siap diaktifkan.
Langkah 4: Aktifkan Swap
Aktifkan swap file yang baru dibuat:
sudo swapon /swapfileVerifikasi swap sudah aktif:
sudo swapon --showNAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2Cek ulang dengan free -h, kolom Swap sekarang harus menunjukkan ukuran yang sesuai:
total used free shared buff/cache available
Mem: 973Mi 415Mi 86Mi 11Mi 472Mi 428Mi
Swap: 2.0Gi 0B 2.0GiSwap yang diaktifkan lewat swapon saja sifatnya sementara. Begitu VPS reboot, konfigurasi ini hilang dan kita harus mengulang dari Langkah 4. Supaya swap otomatis aktif setiap boot, lanjut ke bagian berikutnya.
5. Swap Permanen Lewat fstab
Sistem init (systemd) di Ubuntu Server membaca /etc/fstab setiap kali boot untuk menentukan filesystem dan swap apa saja yang harus di-mount otomatis. Supaya swap file kita ikut diaktifkan tanpa perlu menjalankan swapon manual lagi, tambahkan entrinya di file ini.
Backup dulu file /etc/fstab sebelum diedit, sebagai jaring pengaman kalau ada salah ketik:
sudo cp /etc/fstab /etc/fstab.bakBuka file /etc/fstab dengan editor teks (misalnya nano), lalu tambahkan baris berikut di akhir file:
/swapfile none swap sw 0 0Format baris ini sesuai standar Ubuntu Community Help Wiki: kolom pertama path file swap, kolom kedua none karena swap tidak punya mount point, kolom ketiga tipe filesystem (swap), kolom keempat opsi mount (sw), dan dua kolom terakhir untuk dump serta fsck yang memang selalu 0 untuk swap.
Verifikasi konfigurasi ini benar tanpa perlu reboot VPS:
sudo swapon -a
sudo swapon --showPerintah swapon -a mengaktifkan semua entri swap yang terdaftar di /etc/fstab yang belum aktif. Kalau swapon --show tetap menampilkan /swapfile setelah perintah ini, artinya konfigurasi permanen sudah benar dan siap bertahan lewat reboot berikutnya.
6. Tuning Swappiness
swappiness (parameter kernel vm.swappiness) adalah nilai yang mengatur seberapa agresif kernel memindahkan data dari RAM ke swap. Menurut dokumentasi resmi kernel Linux, nilainya berkisar 0 sampai 200, dengan nilai default di kebanyakan distro Linux termasuk Ubuntu adalah 60. Jangan asumsikan nilai ini sama di semua sistem, selalu cek nilai aktual yang sedang berjalan di VPS:
cat /proc/sys/vm/swappinessSemakin tinggi nilainya, kernel semakin agresif memakai swap meski RAM sebenarnya masih tersisa. Untuk VPS, ini bukan perilaku yang diinginkan, karena swap ada di disk yang jauh lebih lambat dari RAM. Turunkan nilai ini supaya kernel mengutamakan RAM dan hanya memakai swap sebagai cadangan darurat, bukan dipakai proaktif.
Ubah nilai swappiness sementara (hilang setelah reboot), cocok untuk testing dulu:
sudo sysctl vm.swappiness=10Kalau nilai ini sudah sesuai, buat permanen dengan menambahkannya ke /etc/sysctl.conf:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -pPerintah sysctl -p memuat ulang semua parameter di /etc/sysctl.conf tanpa perlu reboot. Angka 10 adalah titik awal yang aman untuk kebanyakan VPS, cukup rendah supaya swap jarang dipakai untuk beban kerja normal, tapi tetap aktif sebagai jaring pengaman saat terjadi lonjakan RAM mendadak.
7. Otomatisasi dengan Bash Script
Empat langkah manual di atas gampang diikuti untuk satu VPS, tapi jadi rawan kesalahan kalau kita mengelola belasan VPS sekaligus atau harus setup swap setiap kali provisioning server baru. Salah ketik path di /etc/fstab saja bisa membuat proses boot gagal. Menuliskan urutan perintah itu sebagai script bash menyelesaikan dua masalah sekaligus: urutan perintah selalu konsisten sama persis di setiap server, dan script bisa dibuat idempotent, yaitu aman dijalankan berulang kali tanpa membuat entri ganda di /etc/fstab kalau ternyata swap sudah pernah dibuat sebelumnya. Script seperti ini juga gampang dipanggil dari tool automasi seperti Ansible atau user data cloud-init saat VPS baru pertama kali dibuat.
Simpan script berikut sebagai create-swap.sh:
#!/usr/bin/env bash
set -euo pipefail
SWAP_FILE="/swapfile"
SWAP_SIZE="${1:-2G}"
SWAPPINESS=10
if swapon --show | grep -q "^${SWAP_FILE}"; then
echo "Swap file ${SWAP_FILE} sudah aktif, keluar."
exit 1
fi
fallocate -l "${SWAP_SIZE}" "${SWAP_FILE}" || \
dd if=/dev/zero of="${SWAP_FILE}" bs=1M count=$(( ${SWAP_SIZE%G} * 1024 )) status=progress
chmod 600 "${SWAP_FILE}"
mkswap "${SWAP_FILE}"
swapon "${SWAP_FILE}"
if ! grep -q "^${SWAP_FILE} " /etc/fstab; then
cp /etc/fstab /etc/fstab.bak
echo "${SWAP_FILE} none swap sw 0 0" >> /etc/fstab
fi
sysctl "vm.swappiness=${SWAPPINESS}"
if ! grep -q "^vm.swappiness" /etc/sysctl.conf; then
echo "vm.swappiness=${SWAPPINESS}" >> /etc/sysctl.conf
fi
swapon --show
free -hScript ini merangkum semua langkah di bagian sebelumnya: cek swap yang sudah aktif supaya tidak jalan dua kali, coba fallocate lebih dulu lalu jatuh ke dd kalau gagal, atur permission, format dan aktifkan swap, tambahkan entri /etc/fstab hanya kalau belum ada, lalu set vm.swappiness ke 10. Argumen SWAP_SIZE harus diakhiri huruf G (misalnya 2G atau 4G), karena perhitungan count untuk dd mengasumsikan satuan gigabyte.
Cara menjalankannya, beri izin eksekusi lebih dulu:
chmod +x create-swap.shLalu jalankan sebagai root, dengan argumen ukuran swap sesuai kebutuhan (default 2G kalau tidak diisi):
sudo ./create-swap.sh 2GKalau butuh ukuran lain, misalnya 4GB untuk VPS dengan RAM 2GB-4GB, ganti argumennya:
sudo ./create-swap.sh 4G8. Hapus atau Nonaktifkan Swap File
Kadang kita perlu resize swap file ke ukuran lain, atau memang ingin menghapusnya sama sekali. Karena file swap yang sedang aktif tidak bisa langsung dihapus, nonaktifkan dulu sebelum diubah.
Matikan swap yang sedang aktif:
sudo swapoff /swapfileHapus baris /swapfile yang sudah ditambahkan di /etc/fstab, lalu hapus filenya:
sudo rm /swapfileKalau tujuannya resize ke ukuran lain, ulangi Langkah 1 sampai Langkah 4 di bagian sebelumnya dengan ukuran baru, lalu pastikan baris di /etc/fstab masih mengarah ke path yang benar.
9. Troubleshooting Swap File
Error "insufficient permission" saat menjalankan mkswap
Root cause-nya hampir selalu karena perintah dijalankan tanpa hak akses root. Pastikan memakai sudo di depan setiap perintah, atau login sebagai root langsung.
Swap tidak aktif otomatis setelah reboot
Cek kembali syntax baris di /etc/fstab, kesalahan ketik sekecil apa pun (spasi ganda, path yang salah) bisa membuat systemd gagal mount entri itu saat boot. Jalankan sudo mount -a untuk menguji ulang tanpa reboot, error syntax biasanya langsung ditampilkan di terminal.
VPS masih terasa lambat meski swap sudah aktif
Ini indikasi swap thrashing, kondisi ketika sistem terus-menerus baca-tulis ke swap karena kebutuhan RAM aplikasi memang lebih besar dari kapasitas fisik yang tersedia. Root cause-nya bukan konfigurasi swap yang salah, tapi RAM yang memang sudah tidak cukup untuk beban kerja saat ini. Swap hanya menunda gejala, bukan menghilangkan akar masalahnya.
VPS dengan storage berbasis jaringan (network-attached)
Kalau VPS memakai block storage berbasis jaringan, bukan SSD/NVMe lokal, latency swap bisa jauh lebih tinggi dari biasanya karena setiap operasi baca-tulis swap harus melewati jaringan internal provider dulu. Kalau beban kerja terus tumbuh dan swap makin sering dipakai, ini pertanda kuat untuk upgrade RAM, bukan menambah swap lagi.
10. Kapan Harus Upgrade RAM?
Swap adalah safety net, bukan pengganti permanen RAM fisik. Untuk beban kerja produksi yang terus tumbuh, ada dua tanda jelas bahwa saatnya upgrade RAM alih-alih menambah swap lagi:
- Swap terpakai terus-menerus dalam jumlah besar, bukan cuma naik sesaat lalu turun lagi. Cek polanya lewat
free -hsecara berkala, kalau kolomSwapkonsisten terpakai tinggi setiap saat, itu bukan lonjakan sementara. - Performa aplikasi tetap lambat meski swap sudah diperbesar. Ini tanda kuat bahwa masalahnya bukan kekurangan ruang swap, tapi memang kebutuhan RAM aplikasi sudah melewati kapasitas VPS saat ini.
Posisikan swap file sebagai penahan darurat untuk lonjakan RAM yang sifatnya sesaat, seperti build aplikasi atau backup database. Kalau pola pemakaian RAM sudah berubah jadi kebutuhan yang konsisten tinggi, upgrade RAM adalah solusi yang lebih tepat daripada terus memperbesar swap.
11. Kesimpulan
Swap file adalah solusi cepat dan aman untuk mencegah OOM killer mematikan proses penting di VPS RAM kecil, tanpa perlu downtime atau resize partisi. Alurnya singkat: cek status swap yang ada, tentukan ukuran sesuai RAM, buat file dengan fallocate atau dd, atur permission, format dengan mkswap, aktifkan dengan swapon, lalu daftarkan di /etc/fstab supaya permanen. Jangan lupa turunkan vm.swappiness supaya swap dipakai secara efisien, bukan agresif.
Cek sekarang juga status swap di VPS yang sedang dikelola lewat free -h. Kalau kolom Swap masih menunjukkan 0B dan RAM sering mepet, langkah-langkah di atas bisa langsung dipraktikkan hari ini juga.
12. FAQ
Apakah swap file mengurangi umur SSD?
Operasi baca-tulis swap memang menambah jumlah write cycle ke SSD, tapi untuk penggunaan swap sebagai cadangan darurat (bukan dipakai terus-menerus karena RAM kurang), dampaknya kecil dibanding umur pakai SSD modern secara keseluruhan. Menurunkan vm.swappiness supaya swap tidak dipakai agresif juga membantu mengurangi write cycle yang tidak perlu.
Berapa ukuran swap yang ideal untuk VPS 1GB RAM?
Mengikuti rule of thumb RAM di bawah 2GB, ukuran swap yang disarankan adalah 2x RAM, jadi sekitar 2GB untuk VPS dengan RAM 1GB, seperti contoh yang dipakai di artikel ini.
Apakah swap file aman digunakan di production?
Aman, selama permission-nya diatur benar (chmod 600) dan ukurannya disesuaikan dengan RAM serta jenis storage VPS. Swap file sudah jadi praktik standar di banyak VPS production berskala kecil-menengah, terutama untuk menahan lonjakan RAM sesaat.
Apa bedanya swap file dengan swap partition?
Keduanya sama-sama menyediakan ruang swap dengan performa setara di filesystem modern. Bedanya ada di fleksibilitas: swap file bisa diubah ukurannya atau dihapus kapan saja tanpa menyentuh skema partisi, sementara swap partition butuh proses resize partisi yang lebih rumit. Swap partition lebih disarankan hanya untuk mesin yang butuh fitur hibernasi, kebutuhan yang jarang relevan untuk VPS.




