İçeriğe Atla
Mustafa Erbay
Yaşam İnsan tarafından yazıldı · 11 dk okuma · görüntülenme Read in English
100%

7.6GB VPS'imde Swap Yangını: Kernel Yamasıyla Başlayan Kabus

VPS'imde swap kullanımı aniden fırladı. Kernel CVE yamasıyla başlayan bu sorunun kök nedenini, çözümünü ve derslerini anlattım.

Linux terminalinde swap kullanımını gösteren bir grafik.

7.6GB VPS’imde Swap Kullanımı Neden Fırladı?

Bu sabah sunucumdan bir uyarı geldi: Swap kullanımı anormal derecede yükselmiş. 7.6 GB RAM’e sahip bir VPS için bu beklenmedik bir durumdu. Normalde swap alanımı neredeyse hiç kullanmıyordum. Durumu anlamak için hemen sunucuya bağlandım ve htop komutuyla belleği kontrol ettim.

htop çıktısında, beklediğimden çok daha fazla swap alanı kullanıldığını gördüm. Bu durum, çalışan uygulamaların bellek ihtiyacının arttığını veya bir yerlerde bir bellek sızıntısı olduğunu gösteriyordu. İlk şüpheli olarak, yakın zamanda yaptığım bir kernel güncellemesini düşündüm.

Kernel Güncellemesi ve Swap Kullanımı

Birkaç gün önce, sunucumdaki Linux kernel’ini en son kararlı sürüme güncellemiştim. Bu güncellemeler genellikle güvenlik açıklarını kapatır ve performansı iyileştirir. Ancak bazen, beklenmedik yan etkilere de yol açabiliyorlar. Özellikle kernel modülleriyle ilgili yaşanan sorunlar, sistemin genel bellek yönetimi üzerinde ciddi etkiler bırakabiliyor.

Bu güncelleme sonrası swap kullanımının artması tesadüf olamazdı. Hemen sunucunun loglarını incelemeye başladım. Özellikle /var/log/syslog ve journalctl çıktılarına baktım. Bu loglarda, kernel’in bazı bellek tahsis etme işlemlerinde hata verdiğine dair ipuçları yakalamaya çalıştım.

Sorunun Kök Nedenini Bulmak: Debugging Süreci

Loglarda yaptığım incelemeler sonucunda, özellikle belirli bir kernel modülüyle ilgili hatalar dikkatimi çekti. Bu modül, ağ paketlerinin işlenmesiyle ilgiliydi ve yakın zamanda yamalanmış bir CVE (Common Vulnerabilities and Exposures) açığını kapatıyordu. Görünüşe göre, yama modülün bellek yönetiminde bir regresyona neden olmuştu.

Bu hatayı daha net anlamak için dmesg komutunu da kullandım. dmesg çıktısı, kernel’in bellek ayırma (allocation) ve serbest bırakma (deallocation) işlemlerinde sorunlar yaşadığını doğruluyordu. Bazı durumlarda, kernel’in tahsis ettiği bellek doğru şekilde serbest bırakılmıyordu ve bu da zamanla swap kullanımının artmasına yol açıyordu.

Hangi CVE ve Hangi Modül?

Araştırmalarım sonucunda, sorunun kaynağının algif_aead kernel modülündeki bir açıkla ilgili olduğunu tespit ettim. Bu modül, belirli şifreleme algoritmalarının donanım hızlandırmasını sağlıyordu. Yakın zamanda yayınlanan bir güvenlik yamasıyla bu açık kapatılmıştı, ancak yamanın kendisi bir bellek sızıntısına neden oluyordu. Bu durum, “fix”in “break”e dönüşmesinin klasik bir örneğiydi.

Bu noktada, bu sorunun sadece benim VPS’imle sınırlı kalmadığını, benzer sistemlerde de yaşanabileceğini fark ettim. Bu tür kernel düzeyindeki sorunlar, özellikle yüksek trafikli veya hassas uygulamalar barındıran sunucular için ciddi riskler oluşturabilir.

Geçici Çözüm: Swap Kullanımını Yönetmek

Sorunun kök nedeni kernel düzeyinde olduğu için, hızlı bir kalıcı çözüm bulmak zordu. Kernel geliştiricilerinin yeni bir yama yayınlamasını beklemek gerekiyordu. Bu süre zarfında, sunucunun kararlılığını sağlamak için geçici çözümler uygulamam gerekiyordu.

İlk olarak, sistemin swap kullanımını daha agresif bir şekilde yönetmesini sağlamak için swappiness değerini düşürdüm. swappiness, kernel’in RAM yerine swap alanını ne kadar kullanma eğiliminde olduğunu belirler. Değeri düşürmek, kernel’in RAM’i daha uzun süre kullanmasını teşvik eder.

Ayrıca, bazı bellek yoğun uygulamaların çalışma zamanlarını ayarlayarak veya daha az bellek tüketen alternatiflerini kullanarak genel bellek baskısını azaltmaya çalıştım. Bu, geçici bir önlem olsa da, swap kullanımının kontrol altına alınmasına yardımcı oldu.

sysctl Ayarlarıyla Swap Yönetimi

swappiness değerini ayarlamak için sysctl komutunu kullandım. Kalıcı olması için /etc/sysctl.conf dosyasına da gerekli ayarları ekledim.

# Mevcut swappiness değerini kontrol et
cat /proc/sys/vm/swappiness

# Swappiness değerini 10'a düşür (varsayılan genellikle 60'tır)
sudo sysctl vm.swappiness=10

# Kalıcı hale getirmek için /etc/sysctl.conf dosyasına ekle
# vm.swappiness=10

Bu ayarlar, sunucunun swap alanını kullanma eğilimini azalttı. Ancak bu, sorunu kökten çözmedi, sadece semptomları hafifletti. Gerçek çözüm, yeni bir kernel yaması veya mevcut yamadaki hatanın düzeltilmesiyle gelecekti.

Kalıcı Çözüm: Yeni Kernel Yaması ve Sonrası

Birkaç gün sonra, kernel geliştiricileri algif_aead modülündeki bellek sızıntısını gideren yeni bir yama yayınladılar. Bu yamayı hemen sunucuma uyguladım ve sistemimi yeniden başlattım.

Yeni kernel sürümüyle birlikte, swap kullanımı normale döndü. htop çıktısında swap kullanımının neredeyse sıfıra indiğini görmek beni rahatlattı. Bu deneyim, kernel güncellemelerinin ne kadar kritik olduğunu ve bazen beklenmedik sorunlara yol açabileceğini bir kez daha gösterdi.

Dersler ve Geleceğe Yönelik Adımlar

Bu olaydan çıkardığım en önemli derslerden biri, üretim ortamlarında kernel güncellemelerini dikkatli bir şekilde yönetmek gerektiğidir. Yama uygulandıktan sonra sunucuyu bir süre yakından izlemek ve olası yan etkileri gözlemlemek önemlidir.

Ayrıca, sunucularımda otomatik bir izleme sistemi kurmanın ne kadar önemli olduğunu da anladım. Swap kullanımı gibi kritik metriklerde ani değişimler olduğunda otomatik uyarılar almak, sorunları erken tespit etmeme yardımcı olur.

Gelecekte, kernel güncellemelerini dağıtmadan önce bir staging ortamında test etmeyi planlıyorum. Bu, olası riskleri azaltacak ve üretim sunucularımda yaşanabilecek kesintileri önleyecektir. Bu küçük VPS’imdeki bu “swap yangını” olayı, bana sistem yönetimi konusundaki sürekli öğrenme ve adaptasyon gerekliliğini hatırlattı.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

Sıkça Sorulanlar

Bu makale ile ilgili okurların sorduğu yaygın sorular.

Kernel güncellemesinden sonra aniden yükselen swap kullanımını nasıl tespit edip izlemeye başlarım?
Ben ilk olarak `htop` ve `free -m` komutlarıyla anlık bellek ve swap kullanımını kontrol ettim. Ardından `journalctl -k` ile kernel loglarını süzerek güncelleme sonrası çıkan uyarı ve hata mesajlarını aradım. `vmstat 5` komutunu arka planda çalıştırarak saniyelik bellek tahsis değişimlerini izledim ve swap'in ne zaman ve hangi süreç tarafından dolduğunu belirlemeye çalıştım. Ayrıca `/proc/swaps` dosyasını inceleyerek aktif swap dosyalarının ve boyutlarının doğru olduğundan emin oldum. Bu adımlar, sorunun kernel modülündeki bir bellek sızıntısından mı yoksa bir uygulama hatasından mı kaynaklandığını ayırt etmemi sağladı.
Swap kullanımını azaltmak için `swappiness` değerini düşürmek mi, yoksa swap alanını tamamen kapatmak mı daha avantajlı?
Ben `swappiness` değerini 10’a çektiğimde sistem RAM’i daha agresif kullandı ve swap’e geçiş gecikti; bu, disk I/O yükünü azaltırken performans artışı sağladı. Ancak tamamen swap’i kapatmak, RAM dolduğunda uygulamaların çökmesine yol açabilir, özellikle bellek sızıntısı gibi beklenmedik durumlarda riskli olur. Benim deneyimimde, düşük bir `swappiness` değeri (10‑20) dengeyi korur; gerektiğinde geçici bir swap dosyası ekleyip, kritik işlemler için koruma sağlar. Bu yüzden, swap’i tamamen devre dışı bırakmak yerine ayarı ince ayarlamak daha güvenli bir yaklaşımdır.
Kernel yaması sonrası swap sorunu tekrarlarsa hangi adımları izlemeliyim ve geri dönüş (rollback) nasıl yapılır?
Sorun devam ederse, önce `uname -r` ile çalışan kernel sürümünü not alıp, `apt-get install linux-image-` (Debian/Ubuntu) veya `yum downgrade kernel` (CentOS) komutlarıyla önceki stabil kernel’i kurarım. GRUB menüsünden eski kernel’i seçerek sistemi yeniden başlatırım ve swap davranışını tekrar gözlemlerim. Eğer eski sürümde sorun yoksa, yeni kernel’in paket notlarını ve ilgili CVE yamasını inceleyerek belirli modülleri blacklistelerim. Ayrıca `sysctl vm.overcommit_memory=1` gibi bellek tahsis ayarlarını test ederim. Geri dönüş sonrası sorunun kaynağını izole ederek, raporlamayı ve gelecekteki güncellemeler için bir kontrol listesi oluşturmaya özen gösteririm.
Swap’in tamamen kötü olduğu ve hiçbir zaman kullanılmaması gerektiği görüşü doğru mu?
Benim tecrübelerime göre, swap’in tamamen kötü olduğu genellemesi yanlıştır. Swap, RAM dolduğunda sistemin çökmesini önleyen bir güvenlik yastığıdır ve özellikle bellek yoğun uygulamalarda kritik bir rol oynar. Ancak swap’in yoğun kullanımı, disk I/O gecikmeleri ve performans düşüşüne neden olabilir; bu yüzden swap’i bir ‘son çare’ olarak düşünmek gerekir. Doğru ayarlarla (örneğin düşük `swappiness` ve yeterli swap boyutu) swap, sistem kararlılığını artırırken performans kaybını minimize eder. Yani swap’i tamamen kapatmak yerine, ihtiyaçlarınıza ve iş yükünüze göre optimize etmek daha sağlıklı bir yaklaşımdır.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

✉️ Ücretsiz · Spam yok · İstediğin an çık

Haftalık özet — AI değil, bizzat ben seçiyorum

Haftada bir mail: o haftanın en önemli yazısı, perde arkası notları, ve "bu hafta gerçekten kullandığım araç" bölümü. Az gürültü, çok sinyal.

  • 📌
    Haftanın en iyisi Sadece okumaya değer tek yazı
  • 🔧
    Alet çantası Bu hafta kullandığım araçlar
  • 🧠
    Perde arkası Blog'a girmeyen notlar

Spam yapmıyoruz. İstediğiniz zaman ayrılabilirsiniz. · Sadece Umami (self-hosted, Google yok) ile takip.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar