Dedicated Sunucu

Bellek Baskısı ve Takas Alanı: Sunucu Neden Aniden Yavaşlıyor?

Bellek katmanları, takas alanı boyutlandırma, çırpınma tespiti ve bellek tükendiğinde yaşananların açıklaması. Bellek Baskısı ve Takas Alanı: Sunucu Neden…

Bellek Baskısı ve Takas Alanı: Sunucu Neden Aniden Yavaşlıyor?
İçindekiler
  1. Belleğin Kullanım Katmanları
  2. Takas Alanı Ne Yapar?
  3. Takas Alanının Tuzağı
  4. Ne Kadar Takas Alanı?
  5. Takas Eğilimini Ayarlamak
  6. Bellek Bittiğinde Ne Olur?
  7. Neyi İzlemeli?
  8. Kalıcı Çözüm
  9. Sonuç
  10. Sıkça Sorulan Sorular (SSS)
  11. Boş belleğim çok az, sorun mu?
  12. Ne kadar takas alanı ayırmalıyım?
  13. Takas alanını tamamen kapatmalı mıyım?
  14. Servisim neden kendiliğinden durdu?

Bellek Baskısı ve Takas Alanı: Sunucu Neden Aniden Yavaşlıyor?

Sunucu haftalarca sorunsuz çalışır, sonra bir gün her şey ağırlaşır. İşlemci kullanımı düşük, disk boş, ağ normal — ama sistem sürünüyor. Sorun neredeyse her zaman bellektedir.

Bu yazı, bellek baskısını ve takas alanı yönetimini ele alıyor.

Belleğin Kullanım Katmanları

Sunucudaki bellek tek bir havuz değildir:

  • Uygulama belleği. Süreçlerin doğrudan kullandığı.
  • Sayfa önbelleği. Diskten okunan verinin kopyası.
  • Tampon bellek. Yazma işlemleri için.
  • Çekirdek belleği. İşletim sisteminin kendi kullanımı.
  • Boş bellek. Hiç kullanılmayan.

İkinci madde çok sayıda yanlış alarma neden olur: boş bellek görünmüyor diye panik yapmak gereksizdir, çünkü işletim sistemi kullanılmayan belleği disk önbelleği olarak değerlendirir ve ihtiyaç anında anında geri verir.

Bir sunucuda "boş" belleğin sıfıra yakın olması normaldir ve hatta istenir. Boşta duran bellek israftır.

Gerçek gösterge boş bellek değil, kullanılabilir bellektir. Bu değer, gerektiğinde geri alınabilecek önbelleği de kapsar.

Takas Alanı Ne Yapar?

Takas alanı, bellek yetmediğinde devreye giren disk alanıdır:

İşlev Açıklama
Nadir kullanılan sayfaları taşır Belleği daha aktif işler için boşaltır
Ani yük artışında tampon olur Çökme yerine yavaşlama
Bellek sızıntısına zaman kazandırır Müdahale fırsatı

Üçüncü satır takas alanının en pratik faydasıdır: bellek sızıntısı olan bir uygulama takas alanı sayesinde hemen çökmez, size fark edip müdahale etmek için saatler kazandırır.

Takas alanı olmayan bir sunucuda aynı sızıntı, aniden ve uyarısız bir süreç sonlandırmasıyla sonuçlanır.

İkinci satır ise geçici yük dalgalarını yumuşatır. Sistem yavaşlar ama hizmet vermeye devam eder.

Takas Alanının Tuzağı

Ancak takas alanı ücretsiz değildir:

  1. Disk, bellekten kat kat yavaştır.
  2. Aktif veri takasa düşerse sistem sürünür.
  3. Sürekli takas trafiği disk ömrünü tüketir.
  4. Yanıt süreleri öngörülemez olur.

İkinci madde, başta anlatılan "sunucu aniden yavaşladı" tablosunun asıl açıklamasıdır: sürekli kullanılan veri takas alanına inip çıkmaya başladığında sistem sürünür ve bu duruma çırpınma denir.

Bu noktada işlemci kullanımı düşük görünür çünkü sistem sürekli disk beklemektedir. Klasik izleme ekranları sorunu göstermez.

Çırpınmayı anlamanın yolu, takas giriş-çıkış hızını izlemektir. Takas alanının dolu olması sorun değildir; sürekli okunup yazılması sorundur.

Ne Kadar Takas Alanı?

Eski "belleğin iki katı" kuralı artık geçerli değildir:

Senaryo Öneri
Genel amaçlı sunucu Belleğin dörtte biri kadar
Veritabanı sunucusu Küçük tutun, kullanımı sınırlayın
Yüksek bellekli makine Sabit ve makul bir değer
Gecikmeye duyarlı servis Neredeyse hiç

İkinci satırın nedeni önemlidir: veritabanları belleği kendileri yönetir ve önbelleklerinin takasa düşmesi felaket bir performans kaybı yaratır — çünkü veritabanı o veriyi bellekte sanır.

Dördüncü satır ise gerçek zamanlı servisler içindir. Öngörülebilir yanıt süresi, çökmeme garantisinden daha değerliyse takas alanı azaltılır.

Birinci satırdaki oran, 256 GB bellekli bir makinede 512 GB takas alanı ayırmanın anlamsızlığını gösterir.

Takas Eğilimini Ayarlamak

İşletim sistemi, takası ne kadar istekli kullanacağına dair bir ayar sunar:

  • Yüksek değer: Erken ve sık takas kullanır.
  • Düşük değer: Mümkün olduğunca kaçınır.
  • Sıfır: Yalnızca zorunlu hâlde kullanır.

Sunucular için genellikle düşük bir değer tercih edilir. Ancak dikkat edilmesi gereken bir yanlış anlama vardır: bu ayarı sıfır yapmak takas alanını devre dışı bırakmaz, sadece son çare hâline getirir.

Masaüstü sistemlerde varsayılan olan yüksek değer, sunucularda gereksiz takas trafiği üretir. Düşürmek çoğu zaman ölçülebilir iyileşme sağlar.

Bellek Bittiğinde Ne Olur?

Takas da dolduğunda işletim sistemi bir karar vermek zorunda kalır:

  1. En çok bellek kullanan süreçler puanlanır.
  2. En yüksek puanlı süreç sonlandırılır.
  3. Sistem çalışmaya devam eder.

Bu mekanizmanın sonucu çoğu zaman istenmeyen bir seçimdir: en çok bellek kullanan süreç genellikle veritabanınızdır ve sistem, sizin en kritik servisinizi sonlandırır.

Bu davranış ayarlanabilir. Kritik süreçlere düşük öncelik puanı vererek onların korunması sağlanabilir.

Sonlandırma olayı sistem günlüğüne yazılır. "Servis neden durdu?" sorusunun cevabı sıklıkla oradadır — ve sistem günlüğüne bakılmadığı için günlerce anlaşılamaz.

Neyi İzlemeli?

Ölçüm Neden
Kullanılabilir bellek Boş bellekten daha anlamlı
Takas giriş-çıkış hızı Çırpınma göstergesi
Sayfa hatası oranı Bellek baskısı erken uyarısı
Süreç bazlı bellek kullanımı Sızıntı tespiti
Sonlandırma olayları Kritik uyarı

İkinci satır en değerli ölçümdür: takas alanının ne kadar dolu olduğu değil, saniyede ne kadar okunup yazıldığı gerçek sorunu gösterir.

Dördüncü satır zaman içinde izlenmelidir. Tek bir anlık görüntü sızıntıyı göstermez; sürekli artan bir eğri gösterir.

Bellek kapasitesi planlaması yaparken donanım seçenekleriniz belirleyici olur; fiziksel sunucu altyapısı tarafında bellek genişletme, kullanılan yuva sayısına ve anakart kapasitesine bağlıdır.

Kalıcı Çözüm

Takas ayarları semptomu yönetir, nedeni değil:

  • Bellek sızıntısını bulun ve düzeltin.
  • Uygulama bellek sınırlarını tanımlayın.
  • Önbellek boyutlarını gerçekçi ayarlayın.
  • Gerekiyorsa bellek ekleyin.

Üçüncü madde çok sık yapılan bir hatayı işaret eder: veritabanı ve uygulama önbelleklerinin toplamı fiziksel belleği aşacak şekilde yapılandırılmışsa, çakışma kaçınılmazdır.

Her bileşenin ayarını ayrı ayrı yapmak yerine toplamı hesaplamak gerekir. İşletim sistemine ve sayfa önbelleğine de pay bırakılmalıdır.

Sonuç

Sunucunun "sebepsiz" yavaşlaması genellikle çırpınmadır: sürekli kullanılan veri takas alanına inip çıkar ve işlemci kullanımı düşük göründüğü için klasik izleme ekranları sorunu göstermez. Boş bellek değil kullanılabilir belleği izleyin; takas alanının dolu olması değil, sürekli okunup yazılması sorundur. Veritabanı sunucularında takası küçük tutun — veritabanı önbelleğinin takasa düşmesi felaket bir performans kaybı yaratır çünkü veritabanı o veriyi bellekte sanır.

Sıkça Sorulan Sorular (SSS)

Boş belleğim çok az, sorun mu?

Hayır, normaldir ve hatta istenir. İşletim sistemi kullanılmayan belleği disk önbelleği olarak değerlendirir ve ihtiyaç anında anında geri verir. Gerçek gösterge boş bellek değil, kullanılabilir bellektir — bu değer geri alınabilecek önbelleği de kapsar.

Ne kadar takas alanı ayırmalıyım?

"Belleğin iki katı" kuralı artık geçerli değil. Genel amaçlı sunucuda belleğin dörtte biri kadarı yeterlidir. Veritabanı sunucularında küçük tutun, gecikmeye duyarlı servislerde neredeyse hiç ayırmayın. 256 GB bellekli bir makinede 512 GB takas anlamsızdır.

Takas alanını tamamen kapatmalı mıyım?

Genellikle hayır. Takas alanı bellek sızıntısı olan bir uygulamanın hemen çökmesini engeller ve size müdahale için saatler kazandırır. Takassız bir sunucuda aynı sızıntı, aniden ve uyarısız bir süreç sonlandırmasıyla sonuçlanır.

Servisim neden kendiliğinden durdu?

Bellek tükendiğinde işletim sistemi en çok bellek kullanan süreci sonlandırır — bu genellikle veritabanınızdır. Olay sistem günlüğüne yazılır ve cevap oradadır. Kritik süreçlere düşük öncelik puanı vererek korunmalarını sağlayabilirsiniz.