503 Service Unavailable Nedir?
Kısa tanım
503 Service Unavailable, sunucunun geçici bir aşırı yük ya da planlı bakım nedeniyle isteği şu anda karşılayamadığını ve durumun bir süre sonra düzelmesinin beklendiğini bildiren HTTP durum kodudur. Yanıta, istemcinin ne kadar sonra tekrar denemesi gerektiğini belirten Retry-After başlığı eklenebilir. Kısa bakım çalışmalarında arama motorlarına doğru mesajı veren koddur.
Diğer adları: HTTP 503, 503 hatası, hizmet kullanılamıyor, bakım modu yanıtı

"Şimdi değil, biraz sonra"
503'ü diğer hata kodlarından ayıran şey geçicilik vurgusudur. RFC 9110, kodu geçici aşırı yük veya planlı bakım için tanımlar ve durumun "bir gecikmeden sonra" düzelmesinin beklendiğini söyler. Yani sunucu aslında şunu demektedir: içerik yerinde, ama şu an veremiyorum.
Bu mesaj iki durumda doğrudur: bakım penceresinde (veritabanı geçişi, büyük bir sürüm yükseltmesi) ve sunucunun kapasitesini aşan ani trafik altında. Kalıcı olarak kaldırılmış bir sayfa için 503 kullanmak ise yanlış sinyaldir; orada 404 veya 410 gerekir.
Retry-After başlığı
503 ile birlikte gönderilen Retry-After, hizmetin ne kadar süre kullanılamayacağını bildirir. Değer saniye cinsinden bir süre ya da bir HTTP tarihi olabilir:
HTTP/1.1 503 Service Unavailable
Retry-After: 3600
Content-Type: text/html; charset=utf-8
Cache-Control: no-storeCache-Control: no-store satırı küçük ama önemlidir: bakım sayfasının CDN veya tarayıcı önbelleğinde kalıp bakım bittikten sonra da gösterilmesini engeller. Nginx'te bir bayrak dosyasıyla açılıp kapatılan basit bir bakım modu şöyle kurulabilir:
location / {
if (-f /var/www/bakim.flag) {
return 503;
}
proxy_pass http://127.0.0.1:3000;
}
error_page 503 /bakim.html;
location = /bakim.html {
root /var/www/statik;
add_header Retry-After 3600 always;
}Google planlı kesintiyi nasıl yorumlar?
Google, 503'ü diğer 5xx yanıtları gibi işler: gelen içeriği dikkate almaz, taramayı geçici olarak yavaşlatır ve sunucu yeniden 2xx döndürmeye başladığında tarama hızını kademeli olarak artırır. Dizindeki URL'ler bu süreçte korunur; fakat hata sürerse dizinden düşmeye başlarlar. Google'ın bir siteyi geçici olarak durdurma rehberi, acil bir kapatma gerekiyorsa 1-2 gün boyunca içerik yerine 503 döndüren bilgilendirici bir sayfa göstermeyi ve Retry-After başlığına tahmini bir süre yazmayı önerir; bunu da en fazla birkaç günlük bir önlem olarak tanımlar.
Bakım sırasında en sık yapılan hata, "Bakımdayız" sayfasını 200 koduyla sunmaktır. Bu durumda Google bakım metnini sayfanın gerçek içeriği sanabilir ve tüm sayfalar birbirinin kopyası gibi görünür.
robots.txt'ye dikkat
Bakım modunu kurarken robots.txt dosyasını kapsam dışında bırakın; Google bu dosyanın 503 ile engellenmemesini açıkça önerir. Google robots.txt'yi alamadığında ilk 12 saat boyunca sitenin taramasını durdurur, sonraki 30 gün boyunca da elindeki son geçerli kopyayı kullanır. Yani bakım sırasında robots.txt'nin 503 döndürmesi, en azından ilk saatlerde sitenin hiç taranmamasına yol açar.
Trafik kaynaklı 503'ler
Bakımdan bağımsız olarak görülen 503'ler genellikle kapasite sorununa işaret eder: işçi süreçlerinin tükenmesi, veritabanı bağlantı sınırı ya da otomatik ölçeklemenin geç kalması. Bunların düzenli olarak tekrarlanması, Google'ın taramayı sürekli kısmasına ve büyük sitelerde tarama bütçesinin daralmasına neden olur. İstemci başına hız sınırı uyguluyorsanız doğru kod 503 değil 429 Too Many Requests olur; ancak Google 429'u da sunucu hatası gibi değerlendirir.

