E-Ticaret Sunucu RAM Hesabı | VPS ve VDS’te Kaç GB Ram Gerekir?
Bir e-ticaret sitesi için sunucu kiralarken sorulan ilk soru neredeyse hep aynıdır: kaç GB RAM yeter? Cevap çoğu zaman “ziyaretçi sayınıza bağlı” diye verilir ve bu yarım bir cevaptır. Günde 5.000 kişinin geldiği iki mağazadan biri 2 GB’lık bir VPS’te sorunsuz çalışırken, diğeri 16 GB’ta bile kampanya günü çökebilir. Aradaki fark ziyaretçi sayısında değil, sitenin her istekte sunucuya ne kadar iş yüklediğinde yatar.
E-Ticaret Sitesi İçin VDS ve VPS Sunucu Kaç GB RAM Olmalı?
Bir e-ticaret sitesi için sunucu kiralarken sorulan ilk soru neredeyse hep aynıdır: kaç GB RAM yeter? Cevap çoğu zaman “ziyaretçi sayınıza bağlı” diye verilir ve bu yarım bir cevaptır. Günde 5.000 kişinin geldiği iki mağazadan biri 2 GB’lık bir VPS’te sorunsuz çalışırken, diğeri 16 GB’ta bile kampanya günü çökebilir. Aradaki fark ziyaretçi sayısında değil, sitenin her istekte sunucuya ne kadar iş yüklediğinde yatar.
Bu yazıda VDS ve VPS seçerken RAM miktarını hangi kalemlerin belirlediğini, platforma göre makul başlangıç değerlerini ve mevcut sunucunuzun gerçek ihtiyacını nasıl ölçeceğinizi ele alıyoruz.
E-Ticaret Sunucusunda Kaç GB RAM Gerekir?
Acelesi olanlar için aşağıdaki tablo bir başlangıç noktası sunar. Değerler kaba aralıklardır; sitenizin eklenti yapısı ve önbellek kurulumu sizi aralığın altına ya da üstüne iter.
|
Mağaza ölçeği |
Yaklaşık günlük ziyaretçi |
Önerilen RAM |
vCPU |
|---|---|---|---|
|
Yeni açılmış, küçük katalog (500 ürüne kadar) |
1.000’e kadar |
2–4 GB |
2 |
|
Büyüyen mağaza (500–5.000 ürün) |
1.000–5.000 |
4–8 GB |
2–4 |
|
Yoğun mağaza (5.000–30.000 ürün, entegrasyonlar) |
5.000–25.000 |
8–16 GB |
4–8 |
|
Büyük katalog, Magento 2 veya özel yazılım |
25.000 ve üzeri |
16–32 GB ve üzeri |
8+ |
Çoğu yeni WooCommerce, OpenCart veya PrestaShop mağazası için mantıklı başlangıç 4 GB RAM ve 2 vCPU’dur. 2 GB ise yalnızca hosting paneli kullanmayan, önbelleği doğru kurulmuş ve kataloğu küçük siteler için sınırda bir seçenek sayılır.
VPS ve VDS: Fark RAM Seçimini Nasıl Etkiler?
Teknik olarak ikisi de fiziksel bir makinenin sanallaştırılmasıyla elde edilen sanal sunuculardır. Türkiye’deki hosting pazarında ise iki terim farklı vaatler için kullanılıyor. VPS (Virtual Private Server) çoğu sağlayıcıda kaynakların bir kısmının paylaşıldığı paketi, VDS (Virtual Dedicated Server) ise CPU ve RAM’in size ayrıldığı, garantili kaynaklı paketi anlatıyor. Ancak bu ayrım standart değil; bazı firmalar iki ismi birbirinin yerine kullanıyor.
Bu yüzden etikete değil sözleşmeye bakmak gerekir:
- Sanallaştırma türü. KVM, VMware veya Hyper-V gibi tam sanallaştırma, OpenVZ ve LXC gibi konteyner tabanlı çözümlere göre daha öngörülebilir bellek davranışı sunar. Konteynerlerde RAM değeri çoğu zaman “burst” (geçici yükselme) payıyla birlikte yazılır ve gerçek garanti daha düşüktür.
- Kaynak garantisi. RAM ve çekirdeklerin size ayrılıp ayrılmadığını sorun.
- Aşırı satış (overselling). Düşük fiyatlı paketlerde fiziksel kapasitenin üzerinde satış yapılabilir. Yoğun saatte 8 GB’ınız kâğıt üzerinde kalabilir.
Sipariş kaybının doğrudan gelire yansıdığı e-ticarette, garantili 4 GB RAM çoğu zaman garanti belirtilmemiş 8 GB’tan daha güvenlidir.
Bir E-Ticaret Sunucusunda RAM Nereye Harcanır?
RAM’i tek bir havuz gibi düşünmek yanıltıcıdır. Aynı havuzdan birkaç servis pay alır:
- İşletim sistemi ve panel. Yalın bir Linux kurulumu birkaç yüz MB ile yetinir. cPanel ya da Plesk gibi bir yönetim paneli eklendiğinde bu pay kolayca 1 GB’ı aşar; pratikte panelli kurulumlar için 2 GB’ın altı pek tercih edilmez.
- Web sunucusu. Nginx ve LiteSpeed az bellek tüketir. Apache’nin prefork modelinde ise her bağlantı ayrı bir süreç demektir ve trafik arttıkça bellek hızla erir.
- PHP-FPM işçileri. Genellikle en büyük kalemdir. Aynı anda çalışan her dinamik istek bir PHP işçisi tutar. WooCommerce gibi eklenti ağırlıklı yapılarda tek bir işçi 80–150 MB tutabilir; ağır yönetim sayfalarında ve dışa aktarma işlemlerinde bunun çok üzerine çıkar.
- Veritabanı. MariaDB veya MySQL’in InnoDB tamponu, sık okunan tabloları ve indeksleri RAM’de tutar. Veritabanınız bellekte ne kadar yer bulursa disk okuması o kadar azalır. Ürün, varyasyon ve sipariş sayısı büyüdükçe bu kalem de büyür.
- Nesne önbelleği. Redis veya Memcached için 256–512 MB çoğu mağazada yeterlidir ve genellikle kendini fazlasıyla amorti eder.
- Arama motoru. Magento 2 gibi platformlar OpenSearch ya da Elasticsearch ister. Yalnızca bu servis 1–2 GB veya daha fazlasını ayırabilir.
- Arka plan işleri. XML stok güncellemesi, pazaryeri senkronizasyonu, görsel işleme ve yedekleme günün belli saatlerinde ani bellek sıçramaları yaratır.
Gözden kaçan bir ayrıntı daha var: Linux, boşta kalan RAM’i disk önbelleği olarak kullanır. free komutunda “boş” bellek az görünmesi sorun değildir. Asıl uyarı işareti, “available” sütununun düşmesi ve swap’in kullanılmaya başlanmasıdır.
Hesabı Ziyaretçiden Değil, Eş Zamanlı İstekten Yapın
Günlük 10.000 ziyaretçi, 10.000 eş zamanlı kullanıcı demek değildir. Önemli olan, aynı saniyede PHP’ye ulaşan istek sayısıdır. Tam sayfa önbelleğinden gelen ana sayfa, kategori ve ürün sayfaları PHP’yi neredeyse hiç meşgul etmez. PHP’yi yoran sayfalar sepet, ödeme, hesabım, filtreleme, arama ve AJAX çağrılarıdır; yani para kazandığınız adımların tamamı.
Pratik bir hesap için şu formül işe yarar:
Kullanılabilir PHP belleği = Toplam RAM − (işletim sistemi + panel) − veritabanı − Redis ve arama servisleri − güvenlik payı
Azami PHP işçisi = Kullanılabilir PHP belleği ÷ ortalama işçi boyutu
Örnek olarak 8 GB’lık bir VDS’i ele alalım. 1,2 GB sistem ve panel, 2 GB veritabanı, 0,5 GB Redis ve 1 GB tampon düşüldüğünde 3,3 GB kalır. İşçi başına 100 MB varsayımıyla bu, yaklaşık 33 eş zamanlı PHP işçisine karşılık gelir. Buradaki rakamlar varsayımdır; kendi sitenizde ölçtüğünüz değerleri yerine koymalısınız.
Veritabanı ve web sunucusu aynı makinedeyse innodb_buffer_pool_size değerini toplam RAM’in kabaca yüzde 25–40’ı aralığında tutmak güvenli bir başlangıçtır. Veritabanı ayrı bir sunucudaysa bu oran yüzde 60–70’e kadar çıkabilir.
Bir uyarı: Bellek 33 işçiye izin verse bile 4 çekirdek aynı anda 33 ağır isteği hızlı işleyemez. İstekler kuyruğa girer, sayfalar yavaşlar. RAM’i büyütüp CPU’yu aynı bırakmak bu yüzden sorunu çoğu zaman çözmez. Başlangıç için her vCPU’ya 2–4 GB RAM düşen bir oran dengeli sayılır.
Platforma Göre Başlangıç Değerleri
WooCommerce. WordPress’in esnekliği, eklenti sayısıyla birlikte bellek maliyetine dönüşür. Küçük bir mağazada 4 GB iyi bir başlangıçtır; çok eklentili ya da yüzlerce varyasyonlu ürün yapısında 8 GB gerekir. wp_options tablosundaki autoload verisinin şişmesi, her sayfa yüklemesinde belleği gereksiz dolduran sessiz bir sorundur.
OpenCart. Çekirdeği görece hafif olduğu için 2–4 GB ile uzun süre idare edebilir. Üçüncü taraf modüller ve gelişmiş filtreleme bu avantajı hızla eritir.
PrestaShop. Sayfa üretimi ve veritabanı sorguları ağırdır. 4 GB makul bir alt sınırdır, büyük katalogda 8 GB’a çıkmak gerekir.
Magento 2 (Adobe Commerce). Arama motoru, Redis ve çoğu kurulumda Varnish ile birlikte çalışan çok katmanlı bir yapıdır. Canlı ortamda 8 GB’ın altına inmek pratikte sorun çıkarır; ciddi bir katalog için 16 GB ve ayrı bir veritabanı sunucusu planlanır.
Özel yazılım (Laravel, Node.js, .NET). Genel bir değer vermek mümkün değil. Bellek kullanımı doğrudan kod yapısına bağlıdır, tahmin yerine yük testi yapın.
Türkiye’de E-Ticaretin Yük Profili
Yerel pazarın bazı alışkanlıkları sunucu yükünü belirgin biçimde etkiler ve yabancı kaynaklarda pek anılmaz:
- Kampanya sıçramaları. Efsane Cuma, 11.11 ve bayram öncesi dönemlerde trafik normal günün birkaç katına çıkabilir. Instagram reklamı, influencer paylaşımı ya da SMS kampanyasından gelen ziyaretçiler dakikalar içinde yığılır.
- Pazaryeri entegrasyonları. Trendyol, Hepsiburada veya N11 ile stok ve fiyat senkronizasyonu yapan yazılımlar düzenli aralıklarla ağır istekler ve veritabanı yazımları üretir. Bu işler kampanya anında müşteri trafiğiyle yarışır.
- Sanal POS dönüşleri. 3D Secure sonrası ödeme sağlayıcısından gelen geri dönüş (callback) istekleri zaman aşımına uğrarsa müşteri parayı ödemiş ama sipariş oluşmamış olabilir. Ödeme akışı için kaynak ayırmak bu yüzden kritiktir.
- E-fatura ve kargo entegrasyonları. Sipariş anında dış servislere yapılan çağrılar, cevap gelene kadar PHP işçilerini bellekte bekletir.
Sunucuyu ortalama gün için değil, en yoğun saatiniz için boyutlandırın. Kampanya haftası için kaynakları geçici olarak yükseltmek, birçok sağlayıcıda mümkün olduğundan akıllıca bir yöntemdir.
RAM Eklemeden Önce Denenecek Beş Şey
- Tam sayfa önbelleği. LiteSpeed Cache, Nginx FastCGI cache veya Varnish, ziyaretçilerin büyük kısmını PHP’ye hiç uğratmaz. Sepet ve ödeme sayfalarını önbelleğin dışında tuttuğunuzdan emin olun.
- Güncel PHP ve OPcache. PHP 8.x sürümleri 7.x’e göre hem hızlıdır hem de daha verimlidir. OPcache kapalıysa her istekte kod baştan derlenir.
- Nesne önbelleği. Redis, tekrarlayan veritabanı sorgularını belleğe alarak veritabanı yükünü ciddi biçimde düşürür.
- Veritabanı bakımı. Eski transient kayıtlarını, yazı revizyonlarını, süresi dolmuş oturumları ve şişmiş log tablolarını temizleyin. Yavaş sorgu günlüğünü açıp en pahalı sorguları bulun.
- Bot trafiği. Filtre ve arama URL’lerini sonsuza kadar tarayan botlar sunucuyu sessizce yorar. robots.txt, Cloudflare gibi bir WAF katmanı ve hız sınırlama ile bunu kısabilirsiniz.
Bu adımlar zaman ister ama 4 GB’lık sunucuyu 8 GB’a çıkarmaktan çoğu zaman daha ucuza gelir.
Mevcut Sunucunuzun Gerçek RAM İhtiyacını Ölçmek
Tahmin yerine ölçüm yapın. SSH ile bağlanıp birkaç komut çalıştırmanız yeterli:
free -h
ps --no-headers -o rss -C php-fpm8.2 | awk '{s+=$1} END {print s/NR/1024}'
dmesg -T | grep -i 'out of memory'
İlk komut toplam ve kullanılabilir belleği gösterir. İkincisi PHP işçilerinin ortalama boyutunu MB cinsinden verir (süreç adı sunucunuzda php-fpm ya da php-fpm8.3 gibi farklı olabilir). Üçüncüsü ise çekirdeğin bellek yetersizliği yüzünden bir süreci zorla kapatıp kapatmadığını gösterir. Çıktıda kayıt görüyorsanız veritabanınız ya da PHP işçiniz haberiniz olmadan öldürülmüş demektir.
Büyütme zamanı gelmiştir, eğer:
- yoğun saatlerde “available” bellek sürekli toplam RAM’in yüzde 20–25’inin altına iniyorsa,
- swap kalıcı olarak kullanılıyorsa,
- OOM kaydı görüyorsanız,
- ödeme ve sepet sayfaları yük altında yavaşlıyorsa.
Swap bir emniyet kemeridir, kalıcı çözüm değildir. NVMe diskte bile RAM’den kat kat yavaştır. Sürekli izleme için Netdata veya Zabbix, WordPress tarafında yavaş sorgu ve eklenti analizi için Query Monitor işinizi görür. Büyük bir kampanya öncesinde k6 gibi bir araçla sepete ekleme ve ödeme adımlarını kapsayan bir yük testi yapın; bunu canlı sistemde değil, kopya (staging) ortamda çalıştırın.
Sık Sorulan Sorular
2 GB RAM e-ticaret sitesi için yeterli mi?
Küçük bir katalogda, panel kullanılmayan ve önbelleği kurulmuş bir OpenCart ya da hafif bir WooCommerce mağazası için başlangıçta olabilir. Ancak kampanya trafiğine ve büyümeye pay bırakmaz. Ciddi bir satış planınız varsa 4 GB ile başlamak daha sağlıklıdır.
E-ticaret için VDS mi VPS mi daha doğru?
Etiketten çok kaynak garantisi ve sanallaştırma türü önemlidir. Kaynakların size ayrıldığı, KVM gibi tam sanallaştırma kullanan bir VDS, öngörülebilirlik açısından e-ticarette genellikle tercih edilir.
4 GB RAM kaç ziyaretçiyi kaldırır?
Tek bir rakam vermek yanıltıcı olur. İyi önbelleklenmiş ve optimize edilmiş bir mağazada günlük birkaç bin ziyaretçi için 4 GB makul bir çerçevedir. Asıl belirleyici, aynı anda yapılan sepet ve ödeme işlemleridir.
Paylaşımlı hostingten VPS’e ne zaman geçilmeli?
Hosting firması CPU ya da bellek limitine takıldığınızı bildirdiğinde, kampanyalarda ödeme sayfaları zaman aşımına uğradığında veya sunucu düzeyinde ayar (Redis, PHP-FPM parametreleri) gerektiğinde geçiş vakti gelmiştir.
RAM mi CPU mu daha önemli?
İkisi birbirini sınırlar. RAM kaç eş zamanlı işlem yapılabileceğini, CPU bu işlemlerin ne kadar hızlı biteceğini belirler. Birini büyütüp diğerini ihmal etmek darboğazı yalnızca yer değiştirir.