VDS'te gereken RAM iş yüküne bağlıdır. Tipik başlangıç değerleri şöyledir: tek bir WordPress sitesi için 2–4 GB, WooCommerce mağazası veya birkaç site barındıran panelli sunucu için 8 GB, orta ölçekli e-ticaret, 10–20 GB'lık veritabanı veya oyun sunucusu için 16 GB. Hesaplamada işletim sistemi, web sunucusu, PHP süreçleri, veritabanı buffer'ı ve %20–30 pay birlikte düşünülmeli, sonuç ölçümle kontrol edilmelidir.
Bu rehberdeki aralıklar kesin kurallar değil, ölçüme başlamak için makul başlangıç noktalarıdır. Aynı RAM'le çalışan iki site; eklenti sayısına, önbellek kullanımına ve eşzamanlı ziyaretçi sayısına göre çok farklı bellek tüketebilir. Aşağıda hem tabloyu hem de kendi ihtiyacınızı hesaplama yöntemini bulacaksınız. Orta ölçekli projelere uygun 16 GB RAM'li VDS paketi dahil tüm kademeleri paket sayfasında görebilirsiniz.
Kısa cevap: iş yüküne göre RAM tablosu
Tablodaki paketler Bulutzone'un Türkiye VDS kademeleridir; tüm TR Cloud paketlerinde DDR4 ECC RAM ve NVMe disk kullanılır.
| RAM | Tipik iş yükü (başlangıç değeri) | Örnek Bulutzone paketi |
|---|---|---|
| 2 GB | Panelsiz tek küçük site, test ortamı, VPN veya hafif bir servis | TR Cloud v1: 1 çekirdek, 2 GB, 20 GB NVMe |
| 4 GB | Tek WordPress sitesi, kontrol panelli küçük sunucu | TR Cloud v2: 2 çekirdek, 4 GB, 40 GB NVMe |
| 6 GB | Birkaç WordPress sitesi, Redis önbellekli tek site | TR Cloud v3: 4 çekirdek, 6 GB, 60 GB NVMe |
| 8 GB | WooCommerce mağazası, panelli çoklu site, küçük Docker yığını | TR Cloud v4: 4 çekirdek, 8 GB, 100 GB NVMe |
| 16 GB | Orta ölçekli e-ticaret, 10–20 GB'lık veritabanı, oyun sunucusu | TR Cloud v5: 6 çekirdek, 16 GB, 160 GB NVMe |
| 24 GB | Büyük veritabanı, aynı sunucuda birden çok yoğun uygulama | TR Cloud v6: 8 çekirdek, 24 GB, 200 GB NVMe |
RAM ihtiyacı nasıl hesaplanır?
Sunucudaki her bileşenin belleğini ayrı ayrı toplayın, üzerine pay ekleyin:
Toplam RAM ≈ (işletim sistemi + web sunucusu + PHP süreçleri + veritabanı buffer'ı + önbellek + diğer servisler) × 1,2–1,3
İşletim sistemi payı
Kontrol paneli olmayan minimal bir Linux sunucu birkaç yüz MB ile çalışır. Kontrol paneli eklendiğinde tablo değişir: cPanel'in AlmaLinux için resmi gereksinimi en az 2 GB, önerilen 4 GB RAM'dir. Panel; e-posta, DNS, spam filtresi ve izleme servisleriyle birlikte gelir ve bunların her biri bellek tüketir. Windows Server da benzer bir Linux kurulumuna göre boşta daha fazla bellek kullanır.
Web sunucusu ve PHP süreçleri
Nginx veya LiteSpeed gibi olay tabanlı web sunucuları az bellek kullanır; asıl tüketim PHP tarafındadır. PHP-FPM'de pm.max_children, php.net dokümantasyonuna göre aynı anda sunulabilecek istek sayısının üst sınırıdır. Her PHP süreci belleğin bir kısmını kullandığından hesap şöyledir: PHP'ye ayrılan bellek ≈ pm.max_children × ortalama süreç belleği. Ortalama süreç belleğini tahmin etmek yerine ölçün:
# Çalışan PHP-FPM süreçlerinin sayısı ve ortalama bellek kullanımı (MB)
ps -eo rss,comm | awk '/php-fpm/ {t+=$1; n++} END {if (n) printf "%d süreç, ortalama %.0f MB\n", n, t/n/1024}'
Bu değer RSS'tir; top kılavuzunun RES tanımına göre paylaşılan belleği de içerir, bu yüzden gerçek tüketimi biraz yüksek gösterir. Hesap için güvenli taraftadır. Ölçümü sitenin yoğun olduğu saatte yapın.
Veritabanı buffer'ı
MySQL ve MariaDB'de en büyük bellek kalemi InnoDB buffer pool'dur; sık okunan tablo ve indeks sayfaları burada tutulur. MySQL dokümantasyonuna göre innodb_buffer_pool_size varsayılan olarak 128 MB'tır ve yalnızca veritabanı çalıştıran bir sunucuda fiziksel belleğin %80'ine kadar ayarlanabilir. Web sunucusu ve PHP aynı makinedeyse bu oran çok daha düşük tutulmalıdır. Buffer pool'u ne kadar büyük yapmanız gerektiğini görmek için verinizin boyutuna bakın:
mysql -e "SELECT ROUND(SUM(data_length + index_length)/1024/1024) AS toplam_mb FROM information_schema.tables WHERE engine='InnoDB';"
Tüm verinin bellekte olması gerekmez; sık erişilen kısmın (çalışma seti) sığması yeterlidir. Ancak veri boyutu buffer pool'dan çok büyükse sorgular diske düşer ve disk hızı belirleyici hale gelir.
Önbellek
Redis veya Memcached ile nesne önbelleği kullanıyorsanız ayırdığınız belleği hesaba ekleyin; Redis'te üst sınır maxmemory ayarıyla belirlenir. Linux çekirdeği de boşta kalan belleği dosya önbelleği olarak kullanır. Bu yüzden free çıktısındaki "free" sütununun düşük olması sorun değildir; bakmanız gereken sütun "available"dır, yani takas (swap) yapmadan yeni uygulamalara ayrılabilecek tahmini bellek.
Pay bırakma (%20–30)
Trafik artışları, gece çalışan yedekleme ve cron işleri, güncellemeler ve beklenmedik bellek sızıntıları için pay bırakın. Payı olmayan bir sunucu, sıradan bir kampanya gününde swap'e düşebilir.
Örnek hesap (varsayımlarla): Bir WooCommerce sunucusunda işletim sistemi için 0,5 GB, Nginx için 0,1 GB, 20 PHP-FPM süreci × 80 MB = 1,6 GB, MariaDB buffer pool ve diğer veritabanı tamponları için 2,5 GB, Redis için 0,5 GB varsayalım. Toplam yaklaşık 5,2 GB eder; %30 payla 6,8 GB'a çıkar. Bu örnekte 8 GB'lık bir paket doğru başlangıçtır. Kendi hesabınızda varsayımlar yerine ölçtüğünüz değerleri kullanın.
Senaryolar
Tek WordPress sitesi
Panelsiz, iyi önbelleklenmiş tek bir WordPress sitesi 2 GB'ta çalışabilir; PHP-FPM havuzunu küçük tutmak gerekir. cPanel gibi bir panel kullanacaksanız panelin önerdiği 4 GB'tan başlayın. Sayfa önbelleği kullanan sitelerde PHP'ye düşen istek sayısı azaldığı için bellek ihtiyacı belirgin biçimde düşer.
WooCommerce mağazası
WooCommerce'in sunucu önerilerinde WordPress bellek limitinin 256 MB veya üzeri olması gerektiği belirtilir. Bu değer toplam RAM değil, tek bir PHP isteğinin kullanabileceği üst sınırdır. Sepet, ödeme ve hesabım sayfaları sayfa önbelleğinden yararlanamadığı için mağazalarda PHP'ye giden istek oranı yüksektir. Ürün ve sipariş tabloları da büyüdükçe veritabanı belleği artar. Bu yüzden 8 GB tipik başlangıç noktasıdır.
Çoklu site ve kontrol paneli
Aynı sunucuda birden çok site barındırıyorsanız her sitenin kendi PHP havuzu olabilir ve boşta bekleyen süreçler de bellek tutar. Panelin e-posta ve spam filtresi servisleri de eklenir. 8 GB, panelli ve birkaç orta trafikli siteli bir sunucu için makul başlangıçtır.
Veritabanı sunucusu
Yalnızca veritabanı çalıştıran bir sunucuda RAM'in büyük kısmı buffer pool'a verilebilir. Veri boyutu 10–20 GB olan ve sık erişilen kısmı bunun bir bölümü olan bir veritabanı için 16 GB tipik başlangıçtır. MySQL'in innodb_dedicated_server seçeneği bellek ayarlarını otomatik hesaplar, ancak dokümantasyon bunu yalnızca sunucunun tüm kaynaklarını MySQL'e ayırdığınızda önerir.
Oyun sunucusu
Java tabanlı oyun sunucularında, örneğin Minecraft Java Edition'da, belleği Java sanal makinesinin heap ayarları (-Xms ve -Xmx) belirler. Heap'e sunucunun tüm RAM'ini vermeyin; işletim sistemi ve Java'nın heap dışı belleği için 1–2 GB bırakın. Az eklentili küçük bir topluluk sunucusu için 8 GB, büyük mod paketleri ve kalabalık sunucular için 16 GB tipik başlangıç değerleridir. Oyuncu sayısı ve yüklenen harita alanı arttıkça ihtiyaç büyür.
Docker yığını
Konteynerlerde her servisin belleği ayrı ayrı toplanır: uygulama, veritabanı, önbellek, kuyruk ve ters vekil (reverse proxy). docker stats komutu her konteynerin anlık kullanımını gösterir; --memory parametresiyle her konteynere üst sınır koymak, birinin taşmasının diğerlerini etkilemesini önler.
16 GB VDS kimler için uygun?
Web, PHP ve veritabanını aynı sunucuda çalıştıran orta ölçekli e-ticaret siteleri, 10–20 GB veritabanına sahip uygulamalar, panelli ve çok siteli ajans sunucuları, modlu oyun sunucuları ve birden çok servisten oluşan Docker yığınları için uygundur. Bulutzone'da bu kademe TR Cloud v5'tir (6 çekirdek, 16 GB DDR4 ECC RAM, 160 GB NVMe). Veri setiniz küçükse ve ölçümde "available" bellek sürekli yüksek görünüyorsa 16 GB'a geçmek belirgin bir fark yaratmaz; fazladan bellek çoğunlukla dosya önbelleğine gider.
RAM yetmiyor mu? Belirtiler
İki güvenilir belirti vardır: sürekli swap trafiği ve OOM killer kayıtları.
Swap kullanımı
Swap, RAM dolduğunda bellek sayfalarının diske taşındığı alandır. Swap'te bir miktar veri durması tek başına sorun değildir; sorun, sayfaların sürekli diske gidip gelmesidir.
free -h
# "available" sütunu takas yapmadan kullanılabilecek tahmini bellektir
vmstat 1 10
# "si" (diskten belleğe) ve "so" (bellekten diske) sütunları sürekli sıfırdan büyükse RAM yetmiyor
OOM killer
OOM killer (Out of Memory killer), bellek tamamen tükendiğinde sistemi ayakta tutmak için Linux çekirdeğinin bir süreci sonlandırmasıdır. Seçimde en çok bellek kullanan süreçler öne çıkar; web sunucularında bu sıklıkla veritabanı sürecidir. Sitenin aniden "veritabanı bağlantı hatası" vermesi bu yüzden olabilir.
# Çekirdek kayıtlarında bellek tükenmesi olaylarını arar
journalctl -k | grep -i -E "out of memory|killed process"
RAM mi, CPU mu yükseltilmeli?
Belirtiye göre karar verin; yanlış kaynağı yükseltmek sorunu çözmez.
| Belirti | Olası darboğaz | Yapılacak |
|---|---|---|
| Sürekli si/so, OOM kayıtları, düşük "available" | RAM | RAM yükseltin veya PHP havuzu ve buffer pool'u küçültün |
| Yüksek us/sy işlemci kullanımı, load average çekirdek sayısının üzerinde, düşük iowait | İşlemci | Çekirdek sayısını artırın, PHP ve sorgu optimizasyonuna bakın |
| Yüksek iowait, RAM yeterli | Disk | Disk tipini ve IOPS limitini kontrol edin |
| Yüksek steal time (st) | Fiziksel sunucudaki işlemci paylaşımı | Sağlayıcıyla görüşün |
Load average değerini doğru yorumlamak için load average rehberimize, disk tarafı için NVMe ve IOPS yazımıza, steal time için VDS ve VPS farkı yazımıza bakabilirsiniz.
Hesabınızı yaptıktan sonra ihtiyacınıza uyan RAM seviyesini seçin: TR Cloud paketleri 2 GB'tan 24 GB'a kadar altı kademede sunuluyor.
Sık sorulan sorular
4 GB VDS WordPress'e yeter mi?
Tek bir WordPress sitesi için çoğu durumda yeter, özellikle sayfa önbelleği kullanılıyorsa. Aynı sunucuda cPanel gibi bir panel, e-posta servisleri ve birden fazla site varsa 4 GB sınırda kalır. Karar vermeden önce yoğun saatte free -h ve vmstat ile ölçüm yapın.
free çıktısında boş RAM çok az görünüyor, bu sorun mu?
Genellikle hayır. Linux boştaki belleği dosya önbelleği olarak kullanır ve gerektiğinde uygulamalara geri verir. Bakmanız gereken değer "free" değil "available" sütunudur; bu değer sürekli düşükse ve swap trafiği varsa RAM yetmiyordur.
Swap alanı açmalı mıyım?
Küçük bir swap alanı, ani bellek taşmalarında OOM killer'ın bir süreci sonlandırmasını geciktirir ve genellikle önerilir. Ancak swap RAM'in yerini tutmaz; sürekli swap kullanımı, disk ne kadar hızlı olursa olsun yavaşlama demektir ve RAM yükseltme ihtiyacının işaretidir.