Linux

503 Service Unavailable Hatası Nedir ve Nasıl Çözülür?

sunucu linux kernel
Share

İnternette en sık karşımıza çıkan hatalardan birisi de HTTP Error 503 hatasıdır. Bu hata hemen hemen her internet kullanıcısının karşısına en az bir kere çıkmıştır. Bazı durumlarda sayfayı yenilemek hata ekranının kaybolmasını sağlarken bu yöntem her zaman çözüm olmamaktadır ve sayfayı bir kaç yenilemekten daha fazlasını yapmak gerekmektedir.

Masaüstü bilgisayar, tablet, telefon ya da internette bağlı ve bir ekrana sahip tüm cihazlarda bir hata meydana gelebilmektedir ve şu anda ulaşmaya çalıştığınız servisin mevcut olmadığını göstermektedir.

503 Hatasının Arkasında Ne Var?

503 hatası kullanıcılardan gelen isteklere karşılık olarak sunucunun gönderebileceği bazı hata kodlarından bir tanesi. Bu cevap aslında kullanıcının isteğinin başarılı bir şekilde işlendiğini ama sunucunun buna cevap veremediğini ya da kullanıcının isteğin işlenmesinin tamamlanması için bazı ek adımlar atması gerektiğini göstermektedir. 503 hatası, sunucu tarafında bir hata olduğunu ve gelen isteklerin işlenemeyebileceğini belirten HTTP hata kodlarından bir tanesidir. “Service Unavailable” hatası kullanıcıya erişmeye çalıştığı internet sitesinin yer aldığı sunucunun geçici olarak mevcut olmadığını göstermektedir.

Bu hata kodu farklı şekillerde çıkabilmektedir ancak içeriği ne olursa olsun aslında söylemek istediği şey aynıdır. Bazı 503 Service Unavailable hataları aşağıdaki gibidir.

  • Status code HTTP Error 503
  • HTTP 503
  • HTTP Error 503
  • HTTP Error 503 The service is unavailable
  • 503 Error
  • HTTP Server Error 503
  • Error 503 Service Unavailable
  • HTTP /1.1 Service Unavailable
  • 503 Service Unavailable Error
  • 503 Service Temporarily Unavailable
  • Service Unavailable – DNS Failure
  • Error 503 Maximum threads for service reached

503 Hatası Nasıl Giderilir?

503 Hatası çeşitli sebeplerden ortaya çıkabilmektedir. Bu nedenle hatayı giderebilmek için öncelikle hatanın neden kaynaklandığını bulmak gerekmektedir.

WordPress Pluginleri

503 hatasının en büyük nedenlerinden bir tanesi WordPress üzerinde kullanılan pluginlerdir. İlk başta problemin bundan kaynaklandığını anlamak için tüm WordPress pluginlerini geçici olarak kapatıp siteyi kontrol etmek gerekmektedir. Problem ortadan kalktığında ise sorunlu plugini bulmak gerekmektedir. Ancak 503 hatası ekrana geldiğinde WordPress yönetici paneline erişim mümkün değildir. Bu nedenle pluginlerin geçici olarak kapatmak için cPanel ya da DirectAdmin gibi kontrol panelinden ya da FileZilla gibi bir FTP istemcisinden WordPress dizinine girmek ve pluginleri manuel olarak kapatmak gerekmektedir.

Dizine bağlandıktan sonra WordPress’in kök dizinine girmek gerekmektir. Bu dizin genellikle public_html, html, public, www ya da site adına sahip klasörün içerisinde yer almaktadır. Bu klasöre girdikten sonra wp-content dizini içerisinde yer alan plugins klasörü hem aktif hem de inaktif bütün WordPress pluginlerini içermektedir. Plugins klasörüne sağ tıklayıp adını değiştirmek WordPress’in pluginlere erişmesini engellemektedir. Bu klasörün adını değiştirdikten sonra 503 hatası ortadan kalktığında hatanın pluginlerden kaynaklandığı anlaşılmaktadır. Daha sonra WordPress yönetici panelinden tek tek tüm pluginleri iptal ederek ve siteye girmek gerekmektedir. Problemli plugin tespit edildikten sonra kaldırıldığında 503 hatası da ortadan kalkmaktadır. Ancak daha sonra yine FTP istemcisi ya da kontrol paneli üzerinden adı değiştirilen plugin klasörünün adını tekrar “plugin” yapmak gerekmektedir.

WordPress Teması

503 hatası pluginlerden kaynaklanmadığında bir sonraki adım WordPress temasını kontrol etmektir. Çünkü 503 Service Unavailable hatası temada meydana gelen bir problem sonucunda da ortaya çıkabilmektedir. Ancak temanın 503 hatasına neden olduğu durumlarda problemin çözümü pluginlerdeki kadar kolay olmamaktadır. WordPress dizininde yer alan tema klasörünün adını değiştirmek “ERROR: The themes directory is either empty or doesn’t exist. Please check your installation” hatası meydana gelmektedir.

WordPress sunucusuna erişmek için phpMyAdmin bölümüne gitmek gerekmektedir. Bu ekranın sol tarafında yer alan dizin listesinden “wp_options” tablosuna girerek bu tablo içerisinde “option_name” altında “template” kelimesini aratmak gerekmektedir. Gelen sonuçlarda “option_value” sütunun altında mevcut temanızın adı yer almaktadır. Bu temanın adını “twentynineteen” gibi WordPress’in varsayılan temalarından biriyle değiştirmek gerekmektedir. Bu işlemden sonra internet sitenizi kontrol ettiğinizde herhangi bir problem olmadan erişebilmeniz 503 hata kodunun tema ile alakalı olduğunu göstermektedir. Bu hatayı gidermek için temayı değiştirmek ya da sitenin alınmış en son yedeğine geri dönüş yapmak yeterli olmaktadır.

CDN’i Geçici Olarak İptal Etmek

503 hatası her zaman sitenin içerisinde yer alan bir problemden kaynaklandığı anlamına gelmemektedir. Bazı durumlarda kısaca CDN olarak bilinen “İçerik Dağıtım Ağı” kaynaklı olabilmektedir. Eğer CDN kullanıyorsanız CDN hizmetini geçici olarak inaktif ederek bu problemin kaynağını belirleyebilirsiniz. CDN’i kapatmak hizmet alınan CDN servisine göre değişiklik göstermektedir. Ayrıca Cloudflare’in bazı durumlarda 503 hatasına neden olduğu bilinmektedir. Eğer CDN kullanmıyorsanız ya da bu hizmet geçici olarak inaktif etmek 503 hatasını çözmediyse CDN’i tekrar aktif ederek diğer adımları atabilirsiniz.

WordPress’in ‘Heartbeat’ API’sini Kısıtlamak

WordPress’in içerisinde yer alan Heartbeat isimli API içeriği otomatik olarak kaydetme, plugin bildirimlerini gösterme, erişmeye çalıştığınız gönderinin üzerinde kimlerin çalıştığını gösterme gibi birçok göreve sahiptir. Bu API arka planda hiçbir şeyi kaçırmamak için sürekli olarak çalışmaktadır ve sunucu kaynaklarından kullanmaktadır. Her ne kadar 503 Service Unavailable hatası bu API’den kaynaklı olmasa da API’nin sunucu kaynaklarını aşırı derecede kullanması, sunucu yükü kaldırmadığında 503 hatasına neden olabilmektedir.

503 hatasının Heartbeat API’sinden kaynaklanıp kaynaklanmadığını anlamak için API’yi geçici olarak devre dışı bırakmak yeterlidir. Bunu yapmak için tıpkı pluginleri devre dışı bırakmak için yapıldığı gibi site dizinize kontrol panelinden ya da FTP istemcisinden erişmek gerekmektedir. Heartbeat API’sinin ayarları tema ayarlarının yer aldığı klasörün içindeki “functions.php” dosyasında yer almaktadır. Bu dosyaya sağ tıklayıp View/Edit seçeneğine tıkladıktan sonra dosya yerel metin editöründe açılmaktadır. Gelen metin editörüne aşağıdaki kod satırlarını eklemek gerekmektedir.

add_action( ‘init’, ‘stop_heartbeat’, 1 );

function stop_heartbeat() {

wp_deregister_script(‘heartbeat’);

}

Bu üç satır ile Heartbeat API’si devre dışı kalmaktadır. Functions.php dosyasında yaptığınız bu değişiklikleri kaydederek internet sitenize tekrardan erişmeyi deneyin. Eğer 503 hatası ortadan kalktıysa problemin API’de olduğunu göstermektedir. Ancak bu API’yi devredışı bırakmak birçok özellikten de mahrum kalmak demektir. Bu nedenle Heartbeat’i tamamen devre dışı bırakmak yerine yavaşlatmak yararlı olmaktadır. Bunun en kolay yöntemi Heartbeat Control pluginini yüklemektir. Plugini aktif hale getirdikten sonra Ayarlar>Heartbeat Control bölümünden Frequency ayarlarını en düşüne çekmek yeterli olmaktadır. Ayarları kaydettikten sonra tekrar “functions.php” dosyasına geri dönerek yukarda eklediğiniz kod satırını kaldırmak ve dosyayı kaydetmek yeterlidir. Bu adım ile Heartbeat kaynaklı 503 hatasını ortadan kaldırabilirsiniz.

Sunucu Kaynaklarını Arttırma

503 hatası tüm yaptıklarınıza rağmen hala devam ediyorsa bu hatanın muhtemel nedeni sunucunun kaynaklarının yetersiz olmasıdır. Bunu gidermek için hosting planınızı değiştirmeniz gerekmektedir. Özellikle düşük fiyatlı WordPress hosting planlarında yetersiz sunucu kaynakları nedeniyle bu tarz bir dar boğazın meydana gelmesi mümkündür. Bu nedenle planı değiştirerek daha üst paketlere geçmek 503 Service Unavailable hatasının giderilmesini sağlamaktadır.

WP_DEBUG’ı Aktif Etmek

Hata loglarına bakmak 503 hatasına neyin neden olduğunu anlamak için bir ipucu verebilmektedir. Bu hata kodlarına erişim sağlamak için WP_DEBUG’ı aktif hale getirmek gerekmektedir. Bunun için site dizininde yer alan “wp-config.php” dosyasına aşağıdaki kodları eklemek gerekmektedir.

define( ‘WP_DEBUG’, true );

define( ‘WP_DEBUG_LOG’, true );

define( ‘WP_DEBUG_DISPLAY’, false );

Bu kodlar ile hata kayıtlarının tutulması aktif edilmektedir. Bu hata kayıtları genellikle /wp-content dizinine “debug.log” adıyla kaydedilmektedir. Ancak bazı durumlarda bu dosya “logs” isimli klasörde de yer alabilmektedir. Bu dosyayı oluşturmak her ne kadar biraz zor gibi gelse de aslında öyle değildir. Dosyanın içerisinde internet sitenizde meydana gelen hatalar kronolojik sırayla yer almaktadır. Dosya aynı zamanda hangi dosyanın ve hangi kod satırının hangi hataya neden olduğunu göstermektedir.

Ancak hata loglarında 503 hatasına işaret eden direkt bir referans yer almamaktadır. Ancak hataya neden olan doğru klasörleri ve dosyaları görmek çözmeye yardımcı olacaktır ve neye odaklanmanız gerektiğini gösterecektir.

Aynı zamanda Apache ya da Nginx tarafından oluşturulan hata loglarına bakmanız da 503 hatasının kaynağını belirleme de yardımcı olacaktır. Bu loglar Apache’de “/var/log/apache2/error.log”, Nginx’de ise “/var/log/nginx/error.log” dizinin de yer almaktadır.

PHP Hatasından Kaynaklı 503 Hatasını Belirleme

503 hatası çok büyük bir PHP hatasından da kaynaklanabilmektedir. Bunu belirleme için PHP hata raporlamasını aktif etmek yeterli olmaktadır. Bu işlem günümüz popüler tarayıcılarının geliştirici araçlarında yer alan Console sekmesine aşağıdaki kodları girerek yapılabilmektedir.

ini_set(‘display_errors’, 1);

ini_set(‘display_startup_errors’, 1);

error_reporting(E_ALL);

Bu kodları “console” sekmesine girdikten sonra PHP hataları ekrana gelmektedir. Bu hata raporlamasının elde edilebilmesi için php.ini dosyasında aşağıdaki kodun yer alması gerekmektedir.

display_errors = on

Bu kod satırının yer almadığı durumlarda yukarıdaki kodları “console” sekmesine girmek herhangi bir sonuç vermeyecektir.

Sonuç

Eğer şanslıysanız 503 Service Unavailable hatası sadece internet sitesini WordPress’ten bakım moduna aldığınız için çıkmaktadır. Ancak nedenini bilmiyorsanız kollarınızı sıvayıp yukarıdaki adımları atmanız gerekmektedir. 503 hatasının kaynağını bulmanız için bu adımlar kısaca;

  • WordPress pluginlerini geçici olarak devre dışı bırakma,
  • WordPress temasını varsayılan bir tema ile değiştirme,
  • CDN’i geçici olarak devre dışı bırakma,
  • WordPress’in Heartbeat API’sini kısıtlama,
  • Sunucu kaynaklarını arttırma,
  • WP_DEBUG’ı aktif ederek hata kayıtlarını kontrol etmektir.