Mutfak Sırlarındaki Database Gizemi..!
WordPress üzerine inşa edilmiş tüm sistemlerin hosting kâbusu muhakkak ki karşısına çıkacaktır. Eğer yüksek ziyaretçi potansiyeline sahip bir internet sayfanız varsa ve sürekli artış sağlıyorsa kendinize özel bir makina sahibi olmanızda gerekebilir. Mutfak Sırları ise bu sayfalardan bir tanesi. Gerek tasarımı gerek içeriği gerek se de hitap ettiği kitle ile bütünleşmiş olan Mutfak Sırları’da yüksek ziyaretçi sayısına sahip.
Geçen gün Friendfeed platformunda server üzerinde bir sıkıntı olduğundan bahsetmişlerdi. Bora ve Nilay ile iletişime geçip sorunun ne olduğunu sordum. Makina 400+ online user rakamına ulaştığında çok fazla ram yiyor ve sistem bir süre sonra kilitleniyordu. Sistemi incelediğimde sağlam bir makineye sahip olmanın ve makinenin tamamiyle kendilerine ait olması başka bir domain olmaması dikkatimi çekti.
Bir domain nasıl olur da 400+ online user sayısına ulaştığında 7GB ramli Centos makineyi kilitleyebiliyordu…
İlk yaptığım saldırı olup olmadığını ve veritabanını kontrol etmek oldu. Sistemdeki database üzerinde tek tek tabloları kontrol ettim. Tablo üzerlerinde “Ek yük” olması yanı sıra eklenti kurup kaldırmaktan 10larca tablo oluşmuştu. Tek tek sistemdeki eklentileri kontrol edip DB üzerinde işe yaramayan ve tamamiyle çöp olan tabloları uçurdum. Bora sağolsun kullanmadığı eklentileri tek tek söyledi. DB ‘deki işe yaramaz tabloları silip onarım yaptıktan sonra birde optimize yaptım. Sonuç olarak 25MB database küçülmüş oldu.
Ertesi gün sistemi tekrar izlemeye başladık. Sistem üzerinde 300+ online olduğu zaman 6GB ram kullanan server 3GB’a kadar düşmüştü. Yine de 3GB’lık ram kullanımı normalin biraz üstünde seyrediyordu. Centos üzerinde ek bir yazılım veya sistemi kastıracak benzeri bir eklenti olmadığı için ram kullanımının neden 3GB üzerinde seyrettiğini araştırmaya başladım. Apache hata loglarında “Error_log” bir hata mesajına denk geldim.
Fatal Error: Allowed Memory Size…
Php dosyaları biraz fazla ram kullanıyordu doğal olarak bu hata mesajı sürekli log dosyalarında tekrarlanmaktaydı. İlk iş olarak 32’den 128MB’a ram kullanımını artırıp sistemin rahat çalışmasını sağladım. Sistem rahat çalışıyordu fakat neden bu kadar ram kullanılmaktaydı?
memory_limit = 128M
Hata logları içerisinde aynı zamanda sürekli tekrarlanan bir hata mesajı daha dikkatimi çekmişti. Diğer hata daha da ilginç çıktı. İlk defa böyle bir hata ile karşılaştığımı belirtmek isterim.
Try `file –help’ for more information.
Usage: file [-bcikLhnNsvz] [-f namefile] [-F separator] [-m magicfiles] file…
file -C -m magicfiles
Bu hata mesajı için host firması ile iletişime geçtiğimizde bize “magicfiles” değerlerinin conf dosyası içerisinden ON yapılması gerektiğini söylediler.
magic_quotes değerlerini iyi güzel ON yaptıkta yemedi :) Bunun yanı sırak WP’nin bazı fonksiyonları sapıttı. Kısacası host firmasının pek yardımı dokunmadı diyebilirim. Eğer böyle bir hata ile karşılaşırsanız sağlam bir host firması ile çalışın yoksa canınız daha çok sıkılır…
Direk Php konfigurasyonu ve apache konfigurasyonuna el attım. Log dosyaları o kadar şişmişti ki server’in kasmaması için hiçbir sebep yoktu. Bu düzenlemeleri ve optimizasyonunu bitirdikten sonra hatayı araştırdım.
Reklam: Sağlam bir host firması mı lazım? TR lokasyonlu olarak İxirhost tavsiyemdir..! Yabancı lokasyonlu olarak Byet Internet Services’i tavsiye ederim.
Hatayı incelediğimde bir scriptin dosya oluşturmaya çalıştığını fakat komutu yanlış kullandığı için dosya oluşturamadığını görüyoruz. Kısacası Apache hata yazarken bu komutla olmaz doğrusu şudur diye uyarı veriyordu. İyi güzel de 400mb’ın üzerine çıkmış olan bir log dosyasına her saniye bu mesajı yazması Apache’ye ayrı bir yük bindirmez miydi?
Hatayı Bora ile görüşerek çözdük…
Hata site yoğun olduğu zaman apache’yi epeyli meşgul ediyordu. 100binlerce satır hata mesajı sürekli yazmaya devam ediyordu. İlk iş olarak tüm eklentileri kapatarak denedim. Hata aynı şekilde devam etti. Sonunda Bora kullandıkları tema içerisinde bir php dosyası olduğunu ve resimleri chache ettiğini söyledi. Bu script dosyasını kontrol ettiğimizde chache klasörüne malesef ki dosya oluşturamadığını gördük.
Chache klasörünü temizleyip denedik fakat değişen birşey olmadı. Bora scriptin yeni sürümünü yükledi. Bende tüm logları temizleyerek sistemi tekrar teste aldım. Script’in yeni sürümü çalıştı ve chache klasörüne yazmaya başladı. Apache loglarını kontrol ettiğimizde tüm hatalardan kurtulduğumuzu gördüm.
Evet bu hata mesajı ufak bir tema özelliğinden kaynaklanıyordu. Sistemdeki ram kullanımı ilk başlarda 400+user gördüğünde 7GB ram yiyorken şuan itibariyle (db optimizasyonu, db onarma, apache ayarları, php ayarları ve temanın scriptini düzelttikten sonra) 2GB ‘a kadar düştü.
Müthiş değil mi?
Buradan çıkaracağımız sonuç şudur. Eğer yüksek hitli bir siteye sahipseniz muhakkak ki db optimizasyonu yapmanız gerekiyor. Bunun yanı sıra server’ı da optimize etmek size büyük bir avantaj sağlayacaktır. Öyle her önüne gelen eklentiyi kurup kaldırmak malesef ki DB üzerinde çöp yığını oluşturacak ve bir süre sonra problemler ortaya çıkacaktır. Artık makine kilitlenmeden aynı anda 400+ user’i online olarak görebilmekte…