Linux Sunucuda Memory Overcommit Ayarı

Linux sunucularda bellek yönetimi, sistem performansını doğrudan etkileyen kritik bir unsurdur.

Reklam Alanı

Linux sunucularda bellek yönetimi, sistem performansını doğrudan etkileyen kritik bir unsurdur. Memory overcommit ayarı, işletim sisteminin uygulamalara tahsis ettiği bellek miktarını aşmasına izin vererek kaynak kullanımını optimize eder. Bu özellik, fiziksel belleğin tamamını kullanmadan process’lere daha fazla sanal bellek tahsisine olanak tanır ve sunucu verimliliğini artırır. Özellikle yüksek yük altında çalışan kurumsal sunucularda, overcommit ayarını doğru yapılandırmak OOM (Out of Memory) killer olaylarını önler ve stabilite sağlar. Bu makalede, konuyu adım adım ele alarak pratik uygulamaları inceleyeceğiz.

Memory Overcommit Mekanizması

Linux kernel’inde memory overcommit, /proc/sys/vm/overcommit_memory parametresiyle yönetilir. Bu parametre üç ana değere sahiptir: 0 (heuristik yaklaşım), 1 (her zaman overcommit) ve 2 (sıkı limitler). Varsayılan olarak 0 değeri kullanılır ve sistem, tahsis edilen belleğin fiziksel RAM + swap toplamını aşmayacağına dair tahminler yapar. Bu mekanizma, bellek taleplerini reddetmeden process’leri başlatır, ancak aşırı kullanımda OOM killer devreye girerek process’leri sonlandırır.

Overcommit’in avantajları arasında bellek kullanım oranını %50-80 oranında artırma potansiyeli yer alır. Örneğin, bir web sunucusu Apache veya Nginx gibi uygulamalar için ideal olup, kısa süreli bellek patlamalarını tolere eder. Dezavantajı ise, tüm process’ler aynı anda yüksek bellek talep ederse sistem çökmesidir. Kurumsal ortamlarda, bu ayarı üretim yüküne göre test etmek esastır.

Overcommit Değerlerinin Karşılaştırması

Değer 0: Sistem heuristik kurallarla overcommit yapar; RSS (Resident Set Size) ve swap kullanımını dikkate alır. Küçük sunucular için uygundur. Değer 1: Her talebi kabul eder, fiziksel limitleri göz ardı eder; bellek yoğun uygulamalar (veritabanları) için risklidir. Değer 2: Tahsis toplamını RAM + swap ile sınırlar, overcommit_ratio ile oran belirlenir. Bu değer, büyük ölçekli sunucularda önerilir ve predictable davranış sağlar. Uygulamada, sysctl -a | grep overcommit komutuyla mevcut değeri kontrol edin.

Overcommit Memory Limitleri

vm.overcommit_ratio (varsayılan %50) ve vm.overcommit_kbytes parametreleri, değer 2 için kritik öneme sahiptir. Örneğin, 16 GB RAM’li bir sunucuda overcommit_ratio=75 yaparsanız, tahsis limiti 12 GB olur. Bu ayarlar /etc/sysctl.conf dosyasında tanımlanır ve sysctl -p ile uygulanır. Test senaryolarında, stress-ng –vm 4 –vm-bytes 1G komutuyla bellek yükü simüle ederek etkinliği doğrulayın.

Overcommit Ayarını Yapılandırma Adımları

Ayar yapmadan önce, mevcut bellek durumunu free -h ve cat /proc/meminfo ile inceleyin. Geçici değişiklik için sysctl vm.overcommit_memory=2 komutunu root olarak çalıştırın. Kalıcılaştırmak adına /etc/sysctl.conf dosyasına vm.overcommit_memory=2 ve vm.overcommit_ratio=70 ekleyin, ardından sysctl -p uygulayın. Bu işlem, sunucuyu yeniden başlatmadan geçerlidir ve loglarda (dmesg | grep oom) izlenebilir.

  1. Sunucu belleğini analiz edin: top veya htop ile process bellek tüketimini gözlemleyin.
  2. Sysctl değerlerini ayarlayın: echo ‘vm.overcommit_memory=2’ >> /etc/sysctl.conf
  3. Uygulamayı test edin: Birden fazla process başlatıp bellek kullanımını monitor edin.
  4. Tuning yapın: overcommit_ratio’yu %60-80 aralığında optimize edin.

Bu adımlar, kurumsal sunucularda sıfır kesintiyle uygulanabilir. Örneğin, MySQL sunucusunda overcommit=1 ile query patlamalarını yönetebilirsiniz, ancak veritabanı boyutunu swap ile destekleyin.

Geçici ve Kalıcı Ayarlar

Geçici ayar sysctl komutuyla anlık etki yaratır ve reboot’ta sıfırlanır; acil durumlar için idealdir. Kalıcı ayar sysctl.conf üzerinden yapılır ve dağıtım bağımsızdır (Ubuntu, CentOS). Değişiklik sonrası uptime -p ile sistemi doğrulayın. Hata durumunda, orijinal değerlere dönmek için sysctl vm.overcommit_memory=0 kullanın.

Potansiyel Riskler ve Önlemler

Yanlış ayar OOM’u tetikler; /var/log/messages’te “Out of memory: Kill process” logları görülür. Önlem olarak, earlyoom veya systemd-oomd gibi araçlar kurun. Ayrıca, ulimit -v ile process limitlerini belirleyin. Pratikte, staging ortamında 1-2 hafta test edin.

İzleme ve Optimizasyon Stratejileri

Sürekli izleme için Prometheus + Node Exporter veya Zabbix kullanın; vm.overcommit_memory metriğini grafiğe ekleyin. Haftalık raporlarla overcommit kullanım oranını %80 altında tutun. Optimizasyon adımı: Transparent Huge Pages (THP) devre dışı bırakın (echo never > /sys/kernel/mm/transparent_hugepage/enabled) ve swap’ı etkinleştirin. Bu kombinasyon, bellek fragmentation’ını azaltır.

Eğer yüksek trafikli bir sunucuda çalışıyorsanız, overcommit’i container’lar (Docker, Kubernetes) ile entegre edin; cgroup memory limitleri overcommit’i override eder. Düzenli bakımda, vm.swappiness=10 yaparak swap kullanımını minimize edin. Bu yaklaşımlar, kurumsal düzeyde %20-30 performans artışı sağlar.

Sonuç olarak, Linux sunucuda memory overcommit ayarını bilinçli yönetmek, kaynak verimliliğini maksimize eder ve beklenmedik kesintileri önler. Yukarıdaki adımları uygulayarak sisteminizi production-ready hale getirin; düzenli testler ve izleme ile uzun vadeli stabilite elde edin. Bu yapılandırma, ölçeklenebilirlik ihtiyaçlarınıza göre uyarlanabilir ve IT ekibinizin yükünü hafifletir.

Yazar: Editör
İçerik: 613 kelime
Okuma Süresi: 5 dakika
Zaman: Bugün
Yayım: 19-03-2026
Güncelleme: 19-03-2026
Benzer İçerikler
Dijital Dönüşüm kategorisinden ilginize çekebilecek benzer içerikler