Merak edilen konulardan biri olarak VPS yönetimi geldi aklıma. Birçok projede VPS kullanıyoruz ama performans ayarları, güvenlik ve ölçeklendirme konusunda deneyimler neler? Özellikle root erişimi olan bir VPS'te nelere dikkat etmek gerekiyor? Kullandığımız yazılımlara göre (örneğin Node.js, Python, veritabanı) farklı optimizasyon yöntemleri var mı? Beraber keşfedelim.
VPS nedir ve nasıl optimize edilir?
👁️ 44 görüntüleme💬 4 cevap❤️ 0 beğeni
4 Cevap
Node.js ağırlıklı projelerde VPS optimizasyonu için öncelikle `systemd` ile servisleri yöneterek CPU/Memory kullanımını kontrol altına almak lazım. Mesela Node.js uygulamalarında `--max-old-space-size` flag’ini ayarlamak bellek optimizasyonunda çok işe yarıyor, ben 1GB limitinde 8GB RAM’li bir VPS’te 4 instance çalıştırıyordum, o da smooth gidiyordu. Ayrıca `pm2` ya da `systemd` ile startup script’leri oluşturup uygulamanın crash olması durumunda otomatik restart koymak kısa sürede cevap verebilmek için kritik.
Veritabanı tarafında MongoDB kullanıyorsan `mongod.conf` ayarlarında `wiredTigerCacheSizeGB`’yi ayarlarken physical RAM’in %50’sini geçmemesine dikkat et, yoksa disk I/O patlaması yapıyor. Python’daysan (örneğin Django/Flask) gunicorn/uvicorn gibi ASGI sunucuları yerine `--workers` sayısını (CPU core’una göre) sınırlamak gerekiyor. Root erişiminde her şeyi elle kurmak yerine `Docker` + `docker-compose.yml` ile tüm stack’i containerize edip kaynakları `.env` ya da `docker-compose.yml` üzerinden yönetmek uzun vadede daha stabilize çalışıyor. Swap alanı da diskten çok RAM kullanıyorsa (KiB cinsinden) `swappiness=10` yapmak disk I/O’dan kurtarıp cevap sürelerini düşürüyor. Son olarak fail2ban ya da UFW gibi basit güvenlik araçlarını kurup sadece gereken portları (`443`, `22` gibi) açık bırakmak kırılganlığı azaltıyor.
Peki, root erişimi olan bir VPS'te hangi log dosyalarını takip etmeye başlamak gerekiyor? Mesela `/var/log/auth.log` mı önemli, yoksa başka dosyalar da var mı?
Root sunucu optimizasyonunda en çok hafızamı zorlayan şeylerden biri de bellek kullanımıydı. Özellikle Node.js uygulamamda sürekli "heap out of memory" hatası aldım ve sonunda `-max-old-space-size` bayrağını 4GB'a ayarlayıp swap alanı ekleyince düzelmeye başladı. Veritabanı tarafında da PostgreSQL için `shared_buffers` ve `work_mem` değerlerini sunucu RAM'inin %25'ine ayarlamak performansı ciddi şekilde artırdı.
Güvenlikteyse fail2ban ile brute-force saldırılarını engelledim, ayrıca SSH portunu varsayılan 22'den farklı bir porta taşıdım. Ama unutmadan, logları düzenli kontrol etmede `journalctl` ve `goaccess` gibi araçlar hayat kurtarıyor. Her VPS’e aynı şekilde yaklaşıp da performans düşüşü yaşayanlar var, o yüzden uygulama özelinde oynamalar yapmak şart.
VPS’i optimize ederken ilk dikkat etmen gereken şey **kaynakların etkin kullanımı**. Linux’ta `htop`, `iotop`, `iftop` gibi araçlarla CPU, RAM ve disk IO’yu anlık izliyorum. Mesela Node.js çalıştırıyorsan `pm2` yerine `systemd`’yi tercih edebilirsin, böylece kaynak izleme ve restart yönetimi daha temiz oluyor. Python projelerinde ise `gunicorn` + `nginx` kombosuyla request’leri dağıtıp gereksiz yükü azaltabiliyorsun.
Güvenlik tarafına gelince, `ufw` veya `fail2ban` kurmak şart. Root erişimi varsa **doğrudan root SSH’den girişe kapatıp, sadece belli IPs’lere özel anahtarla erişim vermek** gerekiyor. Veritabanı kısmında (PostgreSQL/MySQL) `query_cache`, `index optimization` ve `connection pooling` (PgBouncer) kullanarak hem performansı hem de güvenliği artırıyorum. Örneğin MySQL’de `innodb_buffer_pool_size`’i sistem RAM’inin %70’ine ayarlarsan çoğu sorgunun disk IO’suna gitmesini engelliyorsun.
Ölçeklendirme için de **önce monolitik yapıyı mikro servislere ayırıp, ardından load balancer’la (haproxy/nginx) trafiği dağıtmak** en stabil çözüm. Node.js’te PM2’yle cluster modunu etkinleştirip CPU çekirdeklerini full kullanabiliyorsun. Python’da ise async (FastAPI/Starlette) kullanarak I/O-bound işlemleri optimize ediyorsun. En kritik kısım **monitoring** – `Prometheus + Grafana` kurup sistemin her köşesini loglamak, sonra `elk stack` ile analiz yapmak. Geçtiğimiz projede bu sayede gizli bir memory leak’i 3 saatte bulduk, o yüzden logging hiç küçümsenmemeli.