Sunucularınızda RAM tüketimini yönetmek, performansın ve kararlılığın anahtarıdır.
Sunucularınızda RAM tüketimini yönetmek, performansın ve kararlılığın anahtarıdır. Yoğun trafik altında veya birden fazla uygulama çalıştırırken bellek kullanımı hızla artabilir, bu da yavaşlamalara, çökmelere veya hizmet kesintilerine yol açar. Bu makalede, kurumsal ortamlar için pratik ve etkili yöntemleri adım adım ele alacağız. Linux tabanlı sunuculara odaklanarak, hemen uygulanabilir optimizasyon teknikleri sunacağız. Bu yaklaşımlar, sistem kaynaklarını verimli kılarak maliyetleri düşürür ve uptime’ı artırır.
Sunucuda RAM tüketiminin büyük kısmı, arka planda çalışan süreçlerden kaynaklanır. İlk adım, bu süreçleri izlemek ve gereksiz olanları temizlemektir. top veya htop gibi araçlarla gerçek zamanlı bellek kullanımını gözlemleyin. Örneğin, top komutunu çalıştırıp Shift+M tuşuna basarak süreçleri bellek kullanımına göre sıralayın. Yüksek RAM tüketen süreçleri belirledikten sonra, kill veya pkill ile sonlandırın, ancak kritik servisleri etkilememeye dikkat edin.
Ayrıca, sistem başlangıcında otomatik başlayan servisleri kontrol edin. systemctl list-unit-files --type=service komutuyla listeyi alın ve systemctl disable servis_adi ile devre dışı bırakın. Bu işlem, örneğin kullanılmayan mail sunucusu veya yedekleme daemon’larını durdurarak yüzlerce MB RAM tasarrufu sağlar. Düzenli tarama için cron job kurun: 0 2 * * * /usr/local/bin/ram_cleanup.sh gibi bir satır ekleyin. Bu script’te, bellek kullanımını free -m ile kontrol edip eşik aşıldığında temizlik yapın.
Servisleri analiz etmek için systemctl status ve ps aux --sort=-%mem | head -10 komutlarını kullanın. Örneğin, Apache’de modülleri a2dismod gereksiz_modul ile devre dışı bırakın. Bu, mod_php gibi bellek yoğun modülleri Nginx + PHP-FPM’e geçirerek %30’a varan tasarruf sağlar. Uygulama öncesi test sunucusunda doğrulayın ve logları (/var/log/syslog) izleyin.
Nice değerlerini ayarlayarak önceliklendirin: renice 10 -p PID. Cron tablosunu inceleyin ve bellek yoğun işleri geceye kaydırın. Örnek: Bir veritabanı yedeğini 0 3 * * * mysqldump ... | gzip > backup.sql.gz olarak planlayın. Bu yöntemler, peak saatlerde RAM yükünü %20-40 azaltır.
Linux kernel parametreleri, RAM yönetimini doğrudan etkiler. /etc/sysctl.conf dosyasını düzenleyerek kalıcı değişiklikler yapın. Önce mevcut ayarları sysctl -a | grep vm ile listeleyin. Değişiklikleri sysctl -p ile etkinleştirin. Bu ayarlar, swap kullanımını minimize ederek performansı korur.
Swappiness değerini düşürmek kritik: Varsayılan 60 yerine 10 yapın (vm.swappiness=10). Bu, fiziksel RAM dolmadan swap’e geçmeyi önler. Transparent Huge Pages (THP) için echo never > /sys/kernel/mm/transparent_hugepage/enabled çalıştırın ve rc.local’e ekleyin. Bu, özellikle veritabanı sunucularında fragmentation’ı azaltır ve %15 RAM tasarrufu sağlar.
Swappiness’i ayarladıktan sonra cat /proc/sys/vm/swappiness ile doğrulayın. VFS cache pressure’ı (vm.vfs_cache_pressure=50) artırarak dentries ve inode cache’ini koruyun. Örnek senaryo: Web sunucuda statik dosyalar için cache optimize edin, yeniden başlatmadan önce sysctl vm.swappiness=10 test edin. Bu, I/O’yu hızlandırır ve RAM’i verimli kullanır.
Huge pages’i manuel etkinleştirin: echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages. MySQL gibi uygulamalarda innodb_buffer_pool_size‘ı buna göre ayarlayın. Grub’da default_hugepagesz=2M hugepagesz=2M hugepages=512 ekleyin. Performans artışı gözlemlenir ve bellek overhead’ı düşer.
Uygulamalar, RAM’in en büyük tüketicilerindendir. Web sunucularında worker süreçlerini sınırlayın. Nginx’te worker_processes auto; ve worker_connections 1024; ayarlayın. PHP-FPM için pm.max_children=50 gibi değerler belirleyin, sunucu core sayısına göre ölçekleyin.
Veritabanlarında buffer boyutlarını küçültün. MySQL’de my.cnf‘ye innodb_buffer_pool_size=512M ekleyin (toplam RAM’in %50’si). Redis gibi cache’lerde maxmemory’yi maxmemory 256mb olarak sınırlayın ve eviction policy’si ‘allkeys-lru’ yapın. Bu değişiklikler, leak’leri önler ve stabilite sağlar.
Apache’de MaxRequestWorkers‘ı 150’ye indirin ve MPM Event kullanın. Nginx proxy cache’i etkinleştirin: proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;. Bu, tekrarlanan isteklerde RAM yükünü bypass eder. Log rotasyonuyla eski cache’leri temizleyin.
Bu yöntemleri uygulayarak sunucunuzun RAM verimliliğini önemli ölçüde artırabilirsiniz. Düzenli izleme araçları gibi Prometheus veya New Relic entegre edin, haftalık raporlar alın. Optimizasyonlar iteratif olmalı; her değişikliği A/B test ederek ölçün. Sonuçta, proaktif yönetimle kaynaklarınızı maksimize edin ve iş sürekliliğinizi güvence altına alın.