X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

₺ Türk Lirası $ US Dollar
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

₺ Türk Lirası $ US Dollar

Sunucu Optimizasyonu: Darboğazı Bulup Doğru Katmanı İyileştirme

AnasayfaYazılarTeknik RehberlerSunucu Optimizasyonu: Darboğazı Bul...

Sunucu optimizasyonu, bütün kaynakları gelişigüzel artırmak yerine yavaşlığın hangi katmanda oluştuğunu bulup yalnızca o katmana müdahale etme sürecidir. Önce istek süresi, CPU, bellek, disk gecikmesi ve veritabanı davranışı birlikte incelenir. Sorun uygulama kodundaysa sunucu boyutunu büyütmek sınırlı fayda sağlar; doğru çözüm darboğazın nedenine göre belirlenir.

Sunucu optimizasyonu neden ölçümle başlamalı?

Bir web sitesinin yavaş görünmesi tek bir kaynağın tükendiği anlamına gelmez. CPU kullanımı yüksekken bellek ve disk normal olabilir; buna karşılık disk gecikmesi arttığında işlemci boşta görünse bile istekler bekleyebilir. Bu nedenle yalnızca “kaynak kullanımı yüksek” uyarısına bakmak, yanlış ayarı değiştirme riskini artırır.

İlk değerlendirmede aynı zaman aralığına ait üç veri karşılaştırılmalıdır: kullanıcı isteğinin yanıt süresi, sunucu kaynak grafikleri ve uygulama ya da veritabanı günlükleri. Gecikme yalnız belirli bir işlemde oluşuyorsa uygulama veya sorgu katmanı öne çıkar. Tüm sayfalar aynı anda yavaşlıyorsa ağ, web sunucusu, kaynak doygunluğu veya dış bir bağımlılık daha olasıdır.

Belirtiyi doğru katmanla eşleştirme

  • CPU sürekli yüksekse: yoğun çalışan işlemleri ve eşzamanlı istek sayısını inceleyin. Sorun tek bir uygulama iş parçacığında toplanıyorsa kod veya sorgu düzeltmesi, yük birçok işleme yayılıyorsa kapasite planlaması daha uygun olabilir.
  • Bellek baskısı ve takas kullanımı varsa: çalışan servislerin bellek tüketimini ve uygulamanın önbellek politikasını kontrol edin. Fiziksel belleği artırmak gerekebilir; ancak gereksiz süreçleri kapatmadan yalnızca sunucuyu büyütmek kalıcı çözüm olmayabilir.
  • Disk bekleme süresi yükseliyorsa: günlük yazımı, veritabanı işlemleri ve depolama kapasitesinin doluluk oranını birlikte değerlendirin. Okuma-yazma yoğunluğu varsa daha hızlı depolama yardımcı olabilir; büyük sorgular sürüyorsa sorgu tarafındaki neden ayrıca ele alınmalıdır.

İstek süresi ile kaynak kullanımını birlikte okumak

Tarayıcıda görülen toplam süre, sunucunun işlem süresinden daha geniştir. DNS çözümlemesi, TLS bağlantısı, ağ gecikmesi, sunucu işlem süresi ve tarayıcıdaki içerik yükleme aşamaları bu süreye katkıda bulunur. Bu yüzden yalnızca sayfanın geç açıldığını bilmek, hangi ayarın değiştirilmesi gerektiğini göstermez.

Sunucu yanıt süresi yüksek, fakat CPU ve bellek normal ise veritabanı sorgularını, dış API çağrılarını, uygulama günlüklerini ve bağlantı havuzunu inceleyin. Yanıt süresi sunucuda düşük, tarayıcıda yüksekse görsel, JavaScript, CDN veya istemci tarafı yürütme daha güçlü adaydır. İlk durumda uygulama ya da veritabanı işlemini hedeflemek gerekir; ikinci durumda sunucu kaynaklarını artırmak beklenen faydayı sağlamayabilir.

Benzer şekilde CPU kullanımı kısa süreli sıçrıyor ve istekler yalnız bu sırada gecikiyorsa eşzamanlı işlem yoğunluğunu ve zamanlanmış görevleri kontrol edin. CPU uzun süre yüksek kalıyor, günlüklerde aynı işlem tekrarlanıyorsa önce o işlemin sorgu planı, önbellekleme davranışı veya çalışma sıklığı ele alınmalıdır. Kaynak kullanımını sınırsız yükseltmek yerine gözlenen davranışa uygun tek bir değişiklik yapmak daha güvenlidir.

Uygulama ve veritabanı katmanında öncelik belirleme

Web uygulaması veritabanına çok sayıda küçük sorgu gönderiyorsa toplam gecikme, tek bir sorgunun hızlı olmasına rağmen büyüyebilir. Bu durumda sorgu sayısını, kullanılan indeksleri ve sonuç kümesinin gereksiz yere geniş olup olmadığını incelemek gerekir. Sorgu yavaşsa uygun indeks veya sorgu tasarımı değerlendirilebilir; fakat her kolona gelişigüzel indeks eklemek yazma işlemlerini ve depolama tüketimini artırabilir.

Önbellek de her sorunu çözmez. Sık okunan ve kısa süre içinde değişmeyen içeriklerde önbellek, uygulamanın ve veritabanının tekrar tekrar çalışmasını azaltabilir. Buna karşılık kişiye özel, anlık değişen veya hassas verilerde yanlış önbellekleme güncel olmayan ya da hatalı içeriğin gösterilmesine yol açabilir. Bu nedenle önce önbelleğe alınabilecek yanıtları belirleyin, geçerlilik süresini sınırlayın ve değişiklik sonrasında eski verinin nasıl temizleneceğini doğrulayın.

Varsayımsal bir seçim örneği

Örneğin varsayımsal bir ürün kataloğunda kategori sayfaları yalnız yoğun saatlerde yavaşlıyor, aynı anda CPU orta düzeyde kalırken veritabanı sorgu süresi artıyor olsun. Bu gözlem, doğrudan daha fazla işlemci eklemek yerine sorgu planını ve kategori filtresinde kullanılan indeksleri incelemeyi gerektirir. İnceleme sorgunun geniş bir tablo bölümünü taradığını gösterirse önce sorgu ve indeks tasarımı test edilir. Sorgular normal olduğu hâlde depolama beklemesi yükseliyorsa bu kez depolama katmanı değerlendirilir; iki bulgu birbirine karıştırılmaz.

Güvenli bir optimizasyon değerlendirmesi nasıl yapılır?

  1. Başlangıç davranışını kaydedin: Yavaş URL veya işlemi, gözlenen saat aralığını, yanıt süresini ve mevcut kaynak grafiklerini not edin. Yönetilen sunucuda sağlayıcının izleme ekranı, kendi yönettiğiniz sunucuda ise sistem ve uygulama izleme araçları kullanılabilir.
  2. Tek bir dar boğaz seçin: CPU, bellek, disk, ağ veya veritabanından yalnızca kanıtı en güçlü olanı hedefleyin. Aynı anda PHP çalışma sınırı, veritabanı ayarı ve depolama tipini değiştirmek, sonucu yorumlamayı zorlaştırır.
  3. Ölçülebilir ve geri alınabilir değişiklik yapın: Örneğin belirli bir ağır sorguyu iyileştirin, uygun bir indeks değişikliğini test ortamında deneyin veya güvenli bir önbellek kuralı uygulayın. Önceki yapılandırmayı kaydedin; üretim sisteminde değişiklikten önce uygun yedek ve geri dönüş planı bulundurun.
  4. Aynı işlemi yeniden çalıştırın: Aynı URL, sorgu ya da iş akışını benzer koşullarda tekrar deneyin ve değişiklik sonrasına ait yeni günlük satırlarını inceleyin. Yanıt süresi düzelmiş, hata oranı artmamış ve kaynak kullanımı daha dengeli hâle gelmişse değişiklik desteklenmiş olur.
  5. Belirti sürerse geri dönün ve yeni kanıt arayın: Gecikme değişmediyse önceki ayarı geri yükleyin; ardından farklı bir katmanı inceleyin. Örneğin sorgu süresi düşmesine rağmen toplam yanıt süresi değişmiyorsa ağ, dış servis veya uygulamanın başka bir aşaması araştırılmalıdır.

Paylaşımlı hosting panelinde yalnız siteye ait metrikleri ve uygulama günlüklerini görebilirsiniz; çekirdek, servis yöneticisi veya sistem genelindeki ayarlar sağlayıcıya bağlıdır. Yönetici erişimli bir sunucuda daha geniş ölçüm yapılabilse de bu erişim, her ayarın güvenle değiştirilebileceği anlamına gelmez. Özellikle web sunucusu eşzamanlılık, veritabanı bağlantı havuzu ve bellek limitleri birlikte değerlendirilmelidir.

İlk pratik kontrol için kabul ölçütleri

İlk optimizasyon denemesinde başarıyı yalnız “sayfa açıldı” şeklinde değerlendirmeyin. Aynı isteğin yanıt süresi düşüyor mu, hata oranı sabit kalıyor mu, CPU veya bellek yeni bir doygunluk noktasına taşınıyor mu ve günlüklerde yeni uyarılar oluşuyor mu bakın. Yanıt hızlanırken bellek taşması başlıyorsa değişiklik uygun değildir; önceki ayara dönüp daha dar kapsamlı bir çözüm arayın.

Sunucu kapasitesini karşılaştırmak istiyorsanız, teknik gereksinimleri bu ölçümlerle birlikte ele alın. Farklı barındırma seçeneklerini incelerken sunucu kiralama çözümleri sayfasını yalnızca seçenekleri gözden geçirmek için kullanabilir, kararınızı kendi uygulamanızın gözlenen CPU, bellek, depolama ve ağ ihtiyacına göre verebilirsiniz.

Sonraki güvenli adım, en belirgin yavaş isteği ve aynı zamana ait kaynak grafiğini yan yana koymaktır. İki veri aynı katmanı işaret ediyorsa yalnız o katmanda, geri alınabilir tek bir değişiklik yapın ve ardından aynı işlemi yeni zaman damgalı kanıtlarla doğrulayın.


Top