503 Service Unavailable berarti server sedang berjalan, memahami permintaan dengan sempurna, dan menolak melayaninya sekarang. Itu perbedaan penting dibanding 500 atau 502 — tidak ada yang rusak dalam arti biasa, layanannya hanya sementara tidak siap.
Karena itu 503 terbagi menjadi dua kelompok yang sangat berbeda. Kelompok pertama disengaja: Anda mengaktifkan mode maintenance, atau sebuah aturan rate limit sedang bekerja sebagaimana mestinya. Kelompok kedua tidak disengaja: server sudah begitu kewalahan sehingga melindungi diri dengan berhenti menerima permintaan baru. Hal pertama yang harus dilakukan selalu menentukan Anda ada di kelompok mana.
Beda 503 dengan 500, 502, dan 504
Keempatnya adalah error 5xx sehingga terlihat sama bagi pengunjung, tapi penyebabnya ada di tempat yang sama sekali berbeda.
| Kode | Apa yang terjadi | Disengaja? |
|---|---|---|
| 503 Service Unavailable | Server menolak pekerjaan saat ini | Sering kali ya |
| 500 Internal Server Error | Kode gagal di tengah jalan | Tidak |
| 502 Bad Gateway | Backend mati atau balasannya rusak | Tidak |
| 504 Gateway Timeout | Backend hidup tapi terlalu lambat | Tidak |
Penyebab umum, dari yang paling sering
- Mode maintenance yang tersangkut. Di WordPress, pembaruan yang gagal meninggalkan file .maintenance di folder root dan situs terus menampilkan 503 sampai file itu dihapus.
- Worker PHP-FPM habis. Semua proses sibuk, antrean penuh, dan process manager mulai menolak permintaan baru alih-alih mengantre tanpa batas.
- RAM habis. Kernel membunuh proses untuk membebaskan memori, layanan jadi setengah hidup, dan proxy di depannya mengembalikan 503.
- Plugin atau tema bermasalah yang membuat PHP gagal massal. Biasanya diselingi 500, dan hampir selalu dimulai tepat setelah sebuah pembaruan.
- Rate limiting atau aturan anti-DDoS. Cloudflare, ModSecurity, dan modul rate-limit memakai 503 saat memblokir trafik di atas ambang batas.
- Lonjakan pengunjung melebihi kapasitas server. Artikel yang viral maupun gelombang bot menghasilkan gejala yang persis sama.
- Layanan backend belum selesai menyala. Setelah reboot, Nginx naik beberapa detik lebih dulu daripada aplikasi dan semua permintaan di jeda itu mendapat 503.
Periksa dengan urutan ini
- Kalau ini WordPress, periksa file .maintenance di folder root lebih dulu. File itu muncul saat pembaruan terputus, dan menghapusnya adalah perbaikan lima detik.
- Pastikan layanan backend berjalan. Jalankan "systemctl status php8.2-fpm" atau yang sesuai stack Anda; kalau mati, hidupkan lalu baca log untuk tahu penyebabnya.
- Periksa RAM dengan "free -m" dan cari jejak OOM killer dengan "dmesg | grep -i oom". Kalau kernel sudah membunuh proses, sisanya hanya akibat.
- Lihat log PHP-FPM untuk peringatan soal pm.max_children. Kalau ada, worker Anda habis dan yang perlu ditangani adalah bagian lambat yang menahannya, bukan sekadar menambah worker.
- Baca error log Nginx atau Apache sambil memuat ulang halaman. 503 karena rate limit terlihat sangat berbeda dari 503 karena backend mati, dan log menyatakannya dengan jelas.
- Kalau situs di belakang Cloudflare, periksa apakah halaman error datang dari Cloudflare atau dari server. Halaman Cloudflare mencantumkan ray ID; kalau begitu, aturannya ada di dashboard mereka.
- Kalau baru terjadi setelah sebuah pembaruan, nonaktifkan plugin terakhir lewat FTP dengan mengganti nama foldernya. Ini pemeriksaan tercepat saat Anda tidak bisa masuk halaman admin.
Cara memakai 503 dengan benar saat maintenance
Saat Anda sengaja menutup situs untuk pembaruan, 503 justru kode yang tepat — asal Anda menyertakan informasi yang diperlukan.
Selalu sertakan header Retry-After berisi jumlah detik atau waktu tertentu. Header ini memberi tahu mesin pencari bahwa kondisinya sementara dan kapan sebaiknya kembali, alih-alih membiarkan mereka menebak.
Jangan pernah memakai 200 untuk halaman maintenance. Halaman "kami segera kembali" yang mengembalikan kode sukses adalah undangan bagi Google untuk mengindeks halaman itu sebagai pengganti konten asli Anda — dan pemulihannya jauh lebih lama daripada maintenance-nya sendiri.
Jangan pakai 302 ke halaman maintenance. Cara itu menghilangkan URL asli di mata crawler dan menciptakan halaman baru yang tidak Anda inginkan di indeks.
Buat jendela maintenance sesingkat mungkin. Google menoleransi 503 selama beberapa jam hingga beberapa hari tanpa konsekuensi; kalau berminggu-minggu, URL mulai keluar dari indeks.
Ketika 503 terus berulang
503 yang muncul sesekali saat jam ramai adalah pesan tentang kapasitas, bukan bug yang perlu ditambal. Server sedang mengatakan bahwa permintaan melebihi kemampuannya melayani secara bersamaan.
Langkah pertama yang paling bernilai adalah mengaktifkan page cache. Situs konten yang menyajikan HTML statis memangkas jumlah permintaan yang menyentuh PHP menjadi sebagian kecil, dan banyak kasus 503 berkala hilang sepenuhnya hanya dengan langkah ini.
Berikutnya adalah mencari query lambat. Worker yang tertahan lama persis itulah alasan mereka habis; memperbaiki satu query tanpa index sering membebaskan kapasitas lebih banyak daripada menggandakan jumlah worker.
Baru setelah cache dan optimasi dilakukan, kekurangan sumber daya menjadi kesimpulan yang masuk akal. Tandanya akan jelas: CPU tinggi terus, RAM habis, dan swap aktif tanpa henti bahkan saat trafik normal.
Butuh kapasitas stabil, bukan mentok saat jam ramai?
Cloud VPS NVMe dengan sumber daya khusus dan akses root penuh — atur sendiri worker, cache, dan rate limit. Mulai ฿150/bulan.
Pertanyaan yang Sering Diajukan
WordPress saya 503 setelah update. Bagaimana memperbaikinya?
Masuk ke folder root situs lewat FTP atau File Manager dan hapus file bernama .maintenance. WordPress membuatnya saat memulai pembaruan dan menghapusnya saat selesai; kalau prosesnya terputus, file itu tertinggal dan semua pengunjung mendapat 503.
Berapa lama 503 mulai memengaruhi peringkat?
Beberapa jam hampir tidak berdampak — Google memahami 503 sebagai kondisi sementara dan akan kembali. Kalau berhari-hari, laju crawl menurun, dan setelah sekitar seminggu URL mulai keluar dari indeks. Header Retry-After membantu Google memilih waktu kembali yang lebih tepat.
Bagaimana tahu 503 dari server atau dari Cloudflare?
Halaman error Cloudflare punya branding dan mencantumkan ray ID di bagian bawah; 503 dari server adalah halaman polos Nginx atau Apache. Kalau dari Cloudflare, periksa aturan firewall dan konfigurasi rate-limit mereka, bukan server Anda.
Apakah menaikkan pm.max_children menyelesaikan 503?
Kadang, tapi biasanya arahnya keliru. Setiap worker memakan RAM, jadi menaikkannya berlebihan akan menukar 503 dengan error kehabisan memori. Cari dulu penyebab worker tertahan lama — hampir selalu query lambat atau panggilan API tanpa timeout.
GUIDES
Artikel terkait
Lanjut membaca topik serupa
502 Bad Gateway — Arti dan Cara Mengatasinya
502 berarti satu server meminta halaman ke server lain dan menerima jawaban yang tidak bisa dipakai. Panduan ini menjelaskan dua mesin mana yang terlibat, beda 502 dengan 500 dan 504, serta urutan pemeriksaan supaya Anda menemukan penyebab aslinya lebih dulu.
Baca selengkapnya504 Gateway Timeout — Penyebab dan Cara Mengatasinya
504 bukan berarti backend mati, melainkan backend hidup tapi terlalu lambat. Itu mengubah tempat Anda mencari: bukan log crash, melainkan query atau panggilan eksternal yang berjalan lebih lama daripada kesabaran server.
Baca selengkapnya500 Internal Server Error — Penyebab dan Cara Mengatasinya
500 adalah error paling tidak informatif di web: artinya "ada yang salah dan saya tidak akan bilang apa". Kabar baiknya, server hampir selalu menuliskan alasan sebenarnya ke sebuah file log. Panduan ini menunjukkan di mana log itu dan urutan pemeriksaan yang paling cepat menemukan biangnya.
Baca selengkapnya