Google’da “Bir sunucu neden kasar?” gibi bir arama yaptığınızda karşınıza çok fazla bilgi çıkabilir ve bunlardan hangisinin sizin sunucunuzda yavaşlığa sebep olduğunu bulmak hiç de kolay bir iş değildir.
Kasmanın diğer bir adıyla işlemlerin sunucuda yapılma süresinin uzun olması sunucu taraflı bir sıkıntı mı yoksa sunucu üzerinde çalışan yazılımınızdan ya da script’inizden kaynaklı bir sıkıntı mı olduğunu anlamak gerekir.
1) Sunucu Taraflı – Konfigürasyon Sebepli Darboğaz
Sunucu tabanlı sıkıntılar sunucunun CPU, Ram gibi kaynaklarının yetersiz olmasından kaynaklanabileceği gibi sunucu üzerinde çalışan yazılımsal darboğazdan kaynaklanma ihtimali daha yüksektir.
Sunucuda PHP WEB sunucusu ise web sayfalarını sunucuda hangi yazılımın servis ettiği önemlidir.PHP için örnek verecek olursak PHP dosyaları sadece Apache ile sunuluyorsa yazılımsal Apache yazılımının konfigrasyonu kontrol edilmelidir fakat php-fpm ve Apache birlikte sayfaları sunuyorsa her ikisinin konfigurasyonu da kontrol edilmelidir. Bu durumda hangisinin soruna yol açtığını tespit etmek biraz daha zor olabilir.
Apache’ye ek olarak Nginx sunucuda çalışıyorsa problem Nginxden de kaynaklanabilir, problemin Apacheden mi yoksa Nginx ten mi kaynaklandığını anlamak için; Nginx sadece statik dosyaları sunuyorsa statik dosyalarının yğklenme süresiyle .php dosyalarının yüklenme süresi kıyaslanarak sorunun nerden kaynaklandığı anlaşılabilir.
Konfigurayon sorunlarının yanında sunucuda çalışan fail2ban gibi güvenlik uygulamaları da sunucunun depolama (IO) kaynaklarını tüketerek sunucuda load artışını sağlayabilir deneme yaparken bu tür yazılımların da devre dışı bırakılarak denenmesi gerekir.
2) Script Taraflı Darboğaz
Bir script yazarken MySQL üzerinde yapılan işlemlerin performansının en iyi şekilde ayarlanması gerekmektedir. Scriptte MySQL bağlantısı olan bir sayfanın açılışı uzun sürüyorken bağlantı olmayan bir sayfa kısa sürede açılıyorsa orada MySQL ile ilgili bir sıkıntı olma ihtimali göz önüne alınmalıdır. Bu durumda MySQL sunucusunun anlık çalışan istek sayısını kontrol etmek için phpMyAdmin kullanılabilir, sırada çok sayıda istek varsa problem yüksek olasılıkla veritabanındaki işlem süresinin uzun olmasından kaynaklanıyordur.
MySQL performansını arttıracak bazı tavsiyeler;
Tabloda arama yaparken her zaman indexlenmiş integer veri üzerinden arama yapılmalıdır.
Örneğin kullanıcı ismi ile değil de kullanıcı id si üzerinden arama yapmak gibi.
Arama yapılacak id en çok kullanıldığından index yapılmalı ve sütun tipleri içerisinden veriye uygun olan veri tipi int, varchar gibi kullanılmalıdır.