VDS (Sanal Sunucu) ortamlarında, özellikle yüksek trafik veya yoğun kaynak kullanımıyla çalışan sistemlerde, zaman zaman "Out of Memory" (OOM) hatasıyla karşılaşmak kaçınılmaz olabiliyor. Bu sorun, genellikle sistemin fiziksel RAM ve swap alanı yetersiz kaldığında, Linux çekirdeğinin otomatik olarak çalışan uygulamaları sonlandırmak için OOM Killer'ı devreye sokmasıyla ortaya çıkar. AlmaLinux ve aaPanel kullanırken, bu durumun önüne geçmek veya en azından hafifletmek adına kernel parametreleri üzerinde yapılacak optimizasyonlar büyük fark yaratabilir.
İlk adım olarak, mevcut kernel yapılandırmasını analiz etmek gerekir. "dmesg" veya "journalctl" komutlarıyla OOM olaylarının loglarını inceleyerek hangi süreçlerin en çok kaynağı tükettiğine odaklanılır. Ardından, kernel parametreleri üzerinde düzenleme yapabiliriz. Özellikle, "vm.overcommit_memory", "vm.overcommit_ratio" ve "vm.min_free_kbytes" gibi ayarların ayarlanması, bellek yönetimini optimize eder.
Örneğin, "vm.overcommit_memory" parametresi, sistemin bellek tahsisini nasıl yapacağını belirler:
- 0: Varsayılan, kernel bellek tahsisi yaparken dinamik davranır.
- 1: Overcommit yapmaya izin verir, yani sistem RAM'den fazla tahsis yapabilir.
- 2: Overcommit'i tamamen kapatır, toplam tahsis edilen bellek fiziksel RAM ve swap ile sınırlıdır.
Genellikle, üretim ortamlarında "1" veya "2" tercih edilir. Ayrıca, "vm.overcommit_ratio" ile overcommit sınırını belirlemek, bellek kullanımını daha kontrollü hale getirir. Sisteminizde bu parametreleri kalıcı hale getirmek için "/etc/sysctl.conf" veya "/etc/sysctl.d/99-custom.conf" dosyasına ekleme yapabilirsiniz.
Bir diğer önemli optimizasyon ise, "vm.min_free_kbytes" ayarıdır. Bu parametre, kernel'e minimum boş bellek miktarını belirtir ve sistemin bellek kullanımı yüksek seviyeye ulaştığında, kernel'in kritik süreçleri korumasını sağlar. Yüksek trafik alan VDS'lerde, bu değeri artırmak, OOM riskini azaltabilir.
Ayrıca, aaPanel üzerinde çalışan servislerin bellek kullanımlarını izlemek ve gerekirse kaynak sınırlandırması yapmak da önemlidir. "cgroups" veya "ulimit" ayarlarıyla, belirli uygulamaların bellek tüketimini sınırlandırmak, sistemin genel stabilitesini artırır.
Son olarak, donanım seviyesinde RAM ve swap alanını artırmak veya SSD tabanlı swap kullanımıyla sistem performansını iyileştirmek, en etkili çözümlerden biri olabilir. Kernel parametreleri ve uygulama seviyesinde alınacak önlemler, bu temel donanım iyileştirmeleriyle desteklendiğinde, OOM hatalarının önüne geçmek mümkün hale gelir.
Kernel yapılandırması ve sistem ayarları, her ortamın kendine özgü ihtiyaçlarına göre uyarlanmalıdır. Bu nedenle, değişiklikleri uygulamadan önce detaylı testler yapmak ve sistem performansını düzenli olarak izlemek, uzun vadeli stabilite için kritik önemdedir.