wordpress-cpu-sorunları-ve-nedenleriWordPress kullanan sitelerin kasma, takılma ve yavaşlama gibi bir çok sorunu mevcut olabiliyor bazı durumlarda. Bu durumları bir çok başlık altında toplayabiliriz ancak ilk konu olarak Sunucunun CPU arabirimini çok zorlayan durumları ele alacağız. Diğer konularıda farklı başlıklar altında tek tek yazacağım.

Öncelikle CPU nedir? Bunu bir insanın beyni olarak düşünebilirsiniz. Bizim sunucuya verdiğimiz komutları programlar aracılığı ile gerekli donanımlara emir vermesini, işlemleri hesaplayarak komuta etmesini sağlayan kabaca tarif ettiğim bir sistemdir.

  1. Problemin kaynağını nasıl bulabilirim?
  2. Php taraflı hatalara bakmak
  3. WordPress hata göstermeyi aktif edin!
  4. Hostun yada sunucunun uygun olması
  5. İçeriklerim ve eklediklerim CPU sorunu oluştururmu

Burda bilmeniz gereken bir şey varsa sunucunuzda bulunan programların çalışması, problem çıkarması, aşırı yüklenmesi cPU arabiriminin çok fazla zorlanmasına sebep olabilir. Anlatmak istediğim siz bir wordpress yazılımını çalıştırmak istediğinizde bir çok sunucu taraflı programa ihtiyaç duyarsınız. Bunların başında bir web sunucusu, php yazılımı, mysql veri tabanı yöneticisi, DNS server ile domain yönlendirmesi, Resimlerin işlenmesi için IM yada GD kütüphaneleri v.s diye listeyi uzatabiliriz. İşde burda anlamanız gereken şey CPU eğer aşırı yükleniyorsa ve loadlar normalin üzerine çıkıyorsa öncelikle sorunun temelini anlamalı, hasarlı yada hatalı programı bularak çözüm yolları üretmektir.

WordPress de genelde cPU kasılmaları, loadların yükselmesi gibi sorunların başlıca sebepleri olarak eklentiler yada temalar diye düşünülür ancak sunucunun yanlış yapılandırılmış olma ihtimalinide göz önüne alarak hemen önyargı ile hareket etmemeniz gerekmektedir..

Problemin kaynağını nasıl bulabilirim?

Php taraflı hatalara bakmak

Öncelikle sunucuda olan herşeyi log dosyalarında tutarız. Acemi kullanıcılar bu konudan habersiz olabilirler bu yüzden konuyu biraz detaylandıracağım. Sunucu üzerinde hatalı php yada mysql sorularını kaydeden bir sistem mevcut. Bu sistem sorunu anlamamız için bizim en iyi yardımcılarımızdan olacaktır. Öncelikli adım sunucunun kaydettiği bu hata loglarını inceleyerek içerisinde listelenen sorunlar silsilesinin hangi dosyalara işaret ettiğini belirlememiz. Genelde her sunucuda domainlerin ana dizininde yani sizin bağlandığınız hostun ana dizininde (public_html, www) error_log diye bir dosya bulunur. Bu dosya içerisine sitenizde olup bitenin listesi bulunur. Ancak bilmeniz gereken bu hata logları sadece php için geçerlidir. Mysql yada diğer programlar için farklı yöntemler ile sorunu anlamaya çalışacağız. Ancak öncelikli amacımız php taraflı sorunları ve dosyaları bulmamız. error_log dosyasında gördüğünüz hataları takip ederek sorunlu dosyaları düzenlemeyi deneyebilirsiniz, hata loglama ne kadar düşerse başarınız o kadar yakın demektir.

Log kaydetme veya hata gösterme php taraflı açılıp kapatılan bir özelliktir. Eğer loglama konusu aktif değilse host yöneticinize söyleyerek açtırabilirziniz yada php.ini erişiminiz varsa kendinizde yapabilirsiniz. error_log alanını on yapmanız ve display_error kısmınıda. ( terimlerin isimlerini kafadan yazıyorum hata görürseniz söylein düzeltirim)

WordPress hata göstermeyi aktif edin!

Genelde wordpress tema yapımcılarınında sık sık kullanması gerektiği bir yöntem. Bu yöntem çoğu zaman hayat kurtarabilir, sorunun asıl kaynağını bulmanızda büyük yardımı olabilir. Bu gösterimi açtığınızda sitenizde, temanızda kullanılmayan foksiyonlar, hatalı fonksiyonlar, boş değerler, eski fonksiyonlar v.s gibi her konuda hatayı ekrana yazdırarak bizim bu hataları en iyi şekilde düzeltmemizi sağlar. Çoğu zaman sunucunun kasması yada sitenizin yavaşlaması burdaki sebeplerden olabilir. Mümkün olduğunca hataları düzeltmeye çalışıp onarmalı, sonuç olarak sıfır hata ile sitemizi hazır etmeliyiz. Burda hataların hepsi temadan kaynaklı şekilde çıkacaktır. Malum wordpress in ana dosyalarında bir hata aramayın, bulmanız imkansız, sira binlerce kişi zaten sistem dosyaları için çalışıyor. Bizim işimiz tema yada eklenti kaynaklı sorunları çözmek. Bu yöntemi aktif etmek için aşağıdaki adımları izlemeniz yeterli olacaktır.

root dizindeki wp-config.php dosyasını düzenlemek için açın ve en üste php taglarından sonraya aşağodaki kodu ekleyin:

[php]define(‘WP_DEBUG’, true);[/php]

Böylece wordpress hata gösterimini aktif etmiş olduk. Ama işlemlerde3n sonra yada halledemediğimiz durumlarda bu hataların gösterimini kapatmak için true kısmını false yapabilirsiniz. istediğiniz zaman tekrar true yaparak hata gösterimini aktif edebilirsiniz.

Eğer WP_DEBUG kodu zaten config.php de ekli ise o zaman tekrar eklemenize gerek yok true yada false değerini düzenleyerek hata gösterimini açabilir yada kapatabilirsiniz.

true = aç

false = kapat

Buraya kadar geldik ve sorunları hataları bir bir hallettik. eklentilerin hatalarınıda temanın hatalarınıda giderdik. Şuanda sorunsuz siteniz kasmadan açılmalı, problem çıkarmamalı. Ancak unutmamanız gereken bir şey varsa oda sorgu sayısı fazla ise yine yavaşlamalar olacak, yine kasmalar olacak. buna bir önlem almak için mecbur cache eklentisi kullanacaksınız yada benim önerim olacak WordPress sql cache yöntemini.

Bir eşşeğin semeri ne kadar konforlu ve iyi olursa olsun, üstüne yüklediğiniz yükü taşımak ona zor gelecektir. Zaman geçtikcede bu yükü taşıyamaz hale gelir. Kullandığınız sunuculara ne kadar iyi olursa olsun eşşek muamelesi yapmayın, onu sevin taşıyabileceği kadar yükleyin. Taşıyamıyorsada taşıyabileceği kıvama getirin.

Bu bağlamda son dönemde çıkartılan profesyonel wordpress temalarının genelde ana sayfa sorgu sayısı 200-400 sorguya kadar çıkmakta. Bir dönem araştırmalarımda çok şık ve çok satılan yabancı bir temanın ana sayfa sorgu sayısının 350 olduğunu öğrenmiştim. Şimdi kabaca hesap ederseniz sitenize aynı anda giren 3 kişinin 1000 sorgu cıvarında bir yükle sunucunuzu ne hale getirebileceğini düşünün. CPU’nun buna bağlı mysql programının sadece bu 3 kişide yorulacağını düşünürseniz sonraki giren 10 kişide sitenize başka hiçkimsenin giremeyeceğini anlamışsınızdır. İşde burda yapmamız gereken öncelikle temanın ne kadar sorgu harcadığını bilmemiz. Aşağıdaki kodu footer.php dosyanızın en altına yerleştirip kaydedin ve sitenizin ana sayfasına bakın:

Böylece Temanın ana sayfa için sorgu sayısını görmüş olduk, bunu diğer sayfaları gezerek detaylıca her sayfa için görebilirsiniz.

Bir wordpress sitesinde default yani orjinal temada sorgu sayısı 30-50 arasında değişir, bu eklediğiniz bileşenlere göre artar yada azalır. Eğer sizin temanız 50 den fazla bir sorgu sayısına sahipse burda fazla sorgu harcayan alanları cacheye almanızı şiddetle öneririm. Örneğin Default temadaki 50 sorgu sayısını sadece sidebar.php ve footer.php dosyalarını buradaki yöntemle cache aldığımda 20 sorguya kadar düşürebiliyorum.30 sorgu kardayız, israf yapmayalım, karlı çıkalım. Cache için farklı eklentiler var onlarıda kullanabilirsiniz. Ancak sitenizde yazılarınızın okunma yada oylanma gibi kayıtlarını tutuyorsanızi, bunun için çeşitli eklentiler kullanıyorsanız, sistemizin statik cacheye alındığını ve yazılarınızın okunma sayısını her zaman sabit kalabileceğini unutmayın.

Hostun yada sunucunun uygun olması

Herşey php, mysql yada tema sorgularını düzenlemekle bitmiyor. Sunucunu yada hostunuz varsa uygun ve iyi yapılandırılmış olması gerek. En basitinden bir örnek vermek istiyorum:

Genelde bir çok blogcu sitesinde her konu için resim barındırır, yada albüm ekler, yani bir çok resim yükler. Genelde sunucular apache websunucusunu kullanır. bu Web sunucusu iyi optimize edilmediğinde ciddi sorunlar yaşayabilirsiniz. Belli bir bağlantı limiti vardır ve bu bağlantı limiti aşıldığında gelen istekler birikmeye sonucunda da beyni dolmaya başlar. sonucunda cpu kasmaları v.s derken apachenin çökmesi gündeme gelir. Burda bilmeniz gereken apache webserver ne kadar iyi optimize edilirse edilsin her bağlantı için bir slot açacak sonuç ta slot sayısı artacak ve artık gelen istekleri kaldıramayacak duruma gelir. Kabaca tarif etmeye çalışıyorum lakin çoğu kelimeyi çıkartamıyorum yani söyleyemiyorum.

Ben yıllardır statik dosyalar için nginx kullanıyorum. böylece resimler,js,css,html gibi dosyaları ona bırakıyorum, gerisinide apacheye havale ediyorum. Sonuç hızlı açılan siteler, rahatlamış bir apache web server, sorunsuz siteler, mutlu ziyaretçiler, mutlu anlar…

Host alırken dikkat etmeniz gerken şey site ve sitenize uygunmu değilmi? Site başına verdikleri CPU limiti ne kadardir? İyi yapılandırılmışmı? zorunlu değil ama statik dosyalar için yan uygulamaları mevcut mu? (nginx gibi)

Host alacaklar CPU limiti en yüksek yerden host almaya çalışşınslar. Bunun yanında anında destek hizmetlerinin ve sizi boşlamayacak yardım ve destek olacak türde bir yer olmasına özen gösterin. Sizi sallamayan, sorunlarınızda destek olmayan bir host firmasının CPU limiti size 100% olsun hiç bir faydasını göremezsiniz.

Genelde CPU limitleri 15% yada 25% civarındadır. Tavsiye edeceğim 25% oranıdır. Ancak 15% oranıda kötü değildir, ancak sistemlerinde statik dosyalar için apacheyi kullanmamaları iyi olur, çünkü her statik dosyanın apache ye yük getireceğini aklınızdan çıkarmayın.

Apache konusunda kesin konuşmak istemiyorum, fazla bir uzmanlığım yok ancak iyi yapılandırılabilir, yinede ne kadar iyi olur bilmiyorum test etmedin ancak herşeye göre bir modülü mevcut. Bunun uzmanlığını kavrayabilmiş kişilerle çalışmanızı tavsiye ederim.

İçeriklerim ve eklediklerim CPU sorunu oluştururmu

Eklediğiniz bileşenler (widget), Kategoriler, menüler azda olsa sorgu sayısını yükseltirler ancak bu saydıklarımdan sadece Bileşenlerin gözle görülür etkisi söz konusudur. Eklediğiniz her bileşende en az 2-5 sorgu olabileceğini unutmayın. Tavsiyem Bileşen alanlarının cache’ye alınması böylece en az bileşen alanlarından 20 sorgu kazanabilirsiniz. Temasına göre bu kazanç 100 sorguya kadar çıkabilir.

Sonuç: Dilim döndüğünce, aklıma geldiğince anlatmaya çalıştım. Eksik olabilir yada aklıma gelmeyenler, şimdiden affedin. Ama Makale güncellenmeye açıktır. zaman içinde yeni şeyler ve bilgiler ile güncellenebilir. Bu konuda sizinde öneri yada fikriniz varsa iletmekten çekinmeyin.

1 YORUM

Bir Cevap Yazın