Konteyner yığınınızı (Stack) oluşturun; güvenli RAM, vCPU ve NVMe disk gereksinimlerini hesaplayıp üretime hazır docker-compose limitlerini oluşturun.
Sunucunuzda çalıştırmak istediğiniz mikroservisleri ve veritabanlarını ekleyerek ideal VDS paketini hesaplayın.
Trafik patlamalarında konteynerlerin OOM Killer tarafından öldürülmesini engeller.
4 konteyner + Host işletim sistemi + %25 güvenlik rezervi
Taban: 3584 MB · Rezervli: 4480 MB
Docker Image + Volume + OS alanı dahil
# docker-compose.yml - Uretime Hazir Kaynak Limitleri
services:
nginx-proxy:
image: nginx:alpine
restart: unless-stopped
deploy:
resources:
limits:
cpus: '0.5'
memory: 320M
reservations:
memory: 192M
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
nextjs-app:
image: my-app:latest
restart: unless-stopped
deploy:
resources:
limits:
cpus: '1.0'
memory: 960M
reservations:
memory: 576M
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
postgres-db:
image: postgres:16-alpine
restart: unless-stopped
deploy:
resources:
limits:
cpus: '1.5'
memory: 1920M
reservations:
memory: 1152M
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
redis-cache:
image: redis:alpine
restart: unless-stopped
deploy:
resources:
limits:
cpus: '0.5'
memory: 640M
reservations:
memory: 384M
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"Konteynerler doğrudan ana makinenin Linux çekirdeğini (Kernel) paylaştığından, sanal makine hypervisor katmanı kadar ağır bir ek yük getirmez. Ancak kaynak sınırı konulmamış tek bir konteyner (örneğin bellek sızıntısı olan bir Node.js veya Python süreci), tüm sunucu RAM'ini tüketerek Linux OOM Killer'ın veritabanınızı veya Docker daemon'unu aniden kapatmasına yol açar.
Docker Compose v2'de tanımlanan deploy.resources.limits.memory değeri konteynerin asla aşamayacağı tavan bellektir.reservations.memory ise işletim sisteminin o konteynere her zaman tahsis etmeyi garanti ettiği taban miktardır. Bu iki kademeli sınır sayesinde birden çok mikroservis birbirini boğmadan aynı sunucuda istikrarlı çalışır.
Docker'ın varsayılan json-file log sürücüsü dosya boyutu sınırı koymaz. Yüksek trafikli bir API günde yüz binlerce satır log üreterek haftalar içinde sunucunun 50 GB'lık NVMe diskini %100 doldurabilir. Diski dolan bir Linux sunucuda veritabanı kilitlenir ve SSH oturumu dahi açılamaz. Aracımızın oluşturduğu max-size: "10m" kuralı bu riski sıfırlar.