Node.js Uygulamaları için Sunucu Yapılandırma ve Performans Optimizasyonu

Node.js Uygulamaları için Sunucu Yapılandırma ve Performans Optimizasyonu - Corelux
11 Mar 2026
Paylaş:

Node.js Uygulamaları için Sunucu Yapılandırma ve Performans Optimizasyonu

Son Güncelleme: Mart 2026

Node.js uygulamalarını üretim ortamında çalıştırmak için doğru sunucu yapılandırması, performans ve güvenlik açısından kritiktir. Bu rehber, Nginx, PM2, SSL ve sistem ayarları gibi bileşenlerle Node.js dağıtımı ve optimizasyonu konularında pratik adımlar sağlar.

İçindekiler

Neden Node.js için Örnek Sunucu Yapılandırması?

Node.js tek iş parçacıklı (single-threaded) olay döngüsü (event loop) modeli kullandığı için IO-bound işlemlerde yüksek verim sağlar, fakat yanlış sunucu ve işletim sistemi ayarları ile karşılaşan bellek, dosya açıklıkları (file descriptor) ve ağ sınırlandırmaları performansı ciddi şekilde düşürebilir. Bu bölümde, tipik üretim sorunlarını ve onları önleyecek yapılandırmaları özetliyoruz.

Sunucu Seçimi ve Donanım Önerileri

Öncelikle uygulamanızın ihtiyaçlarına göre doğru sunucu türünü seçin. Hafif uygulamalar için Türkiye VPS veya Türkiye VDS yeterli olabilir. Yüksek trafik, yüksek I/O veya kurumsal ihtiyaçlarda ise Kiralık Sunucu veya Bulut Sunucu tercih edin.

  • CPU: Node.js CPU-bound işlemler için daha fazla çekirdek performansı gerekir; 4+ fiziksel çekirdek başlangıç için iyidir.
  • RAM: Bellek kullanımını uygulama, cache ve worker sayısına göre planlayın; 2GB, 4GB, 8GB segmentlerini değerlendirin.
  • Disk: SSD veya NVMe tercih edin; I/O bound uygulamalar için düşük gecikmeli depolama önemlidir.
  • Ağ: Yüksek bant genişliği ve düşük gecikme; sunucu lokasyonunu hedef kullanıcı kitlenize yakın seçin.

Sistem Tabanlı Yapılandırma

Sistem seviyesinde yapılacak ayarlar uygulamanın kararlılığı ve ölçeklenebilirliği için kritiktir. Aşağıda en sık düzenlenen konular yer almaktadır.

1. Dosya ve ağ limitleri

  • ulimit -n: Açık dosya (file descriptor) sayısını arttırarak yüksek eşzamanlı bağlantılarda sorunları önleyin.
  • sysctl net.core.somaxconn: TCP bekleyen bağlantı kuyruğunu (backlog) artırın.

2. Zaman senkronizasyonu

  • NTP/Chrony: Logların ve dağıtım süreçlerinin tutarlılığı için sistem saatinin senkron olması gerekir.

3. Kernel ayarları

  • TCP keepalive ve TIME_WAIT: net.ipv4.tcp_tw_reuse ve ilgili ayarlar ile bağlantı yeniden kullanımı ve kaynak yönetimi iyileştirilir.

Uygulama Yönetimi ve Process Manager

Node.js uygulamalarını üretimde yönetmek için process manager (proses yöneticisi) kullanmak zorunludur. Aşağıda yaygın çözümler ve kullanım senaryoları yer alır.

Özellik PM2 systemd Docker (container)
Başlatma/Restart Kolay, process monitörü ve log yönetimi Doğrudan sistem servisi olarak kararlı Container yeniden başlatma stratejileri ile esnek
Cluster Desteği Built-in cluster modu systemd birlikte node cluster script gerektirir Her container tek işlem; scale için orchestration gerekir
Log Yönetimi PM2 logrotate ve entegre log journald ile merkezi log stdout/stderr toplanır ve merkezi log çözümlerine gönderilir
Güncelleme (Deployment) Zero-downtime için reload destekler systemd reload + yeni binary/deploy Image temelli dağıtım, immutable deploy

Pratik Öneriler

  • Başlık: Üretimde PM2 veya systemd kullanın; küçük projelerde PM2 hızlı kurulum sağlar, kurumsal ortamda systemd veya container tabanlı strateji tercih edilir.
  • Başlık: Zero-downtime reload için cluster veya PM2 reload kullanın.

Nginx ve Reverse Proxy Önerileri

Nginx, Node.js uygulamalarının önünde reverse proxy olarak çalıştırıldığında TLS terminasyonu, gzip, cache ve statik içerik servisinde büyük avantaj sağlar.

Temel Konfigürasyon İlkeleri

  • Başlık: TLS terminasyonu Nginx üzerinde yapın; Node.js sadece HTTP (localhost) ile dinlesin.
  • Başlık: Keepalive bağlantılarını Nginx tarafında yönetin; upstream keepalive kullanın.
  • Başlık: Gzip veya brotli ile ağ bant genişliğini optimize edin.

SSL ve Güvenlik Önerileri

Güvenlik sadece TLS ile sınırlı değildir, uygulama katmanı, işletim sistemi ve ağ yapılandırmaları birlikte ele alınmalıdır.

TLS ve Sertifika Yönetimi

  • Başlık: Otomatik sertifika yenileme için Let's Encrypt veya benzeri hizmet kullanın; kurumsal sertifikalar için Corelux SSL Sertifikası hizmetini değerlendirin.
  • Başlık: TLS 1.2+ ve güçlü şifrelemeyi zorunlu kılın; zayıf algoritmaları devre dışı bırakın.

Uygulama Güvenliği

  • Başlık: HTTP headers: HSTS, X-Content-Type-Options, X-Frame-Options ve CSP başlıklarını Nginx üzerinden ekleyin.
  • Başlık: Rate limiting: DDoS benzeri trafikleri sınırlamak için Nginx veya WAF kullanın.

İzleme, Logging ve Yedekleme

Problemleri hızlı tespit etmek için doğru izleme ve log stratejileri gerekir. Aşağıda uygulanabilecek pratik bileşenler bulunuyor.

  • Başlık: Metrics: CPU, bellek, event loop latency (ör. nodejs-event-loop-metrics) ve response time ölçün.
  • Başlık: Central log: Logları ELK/EFK veya doğrudan hosted logging servisine gönderin.
  • Başlık: Yedekleme: Veritabanı ve önemli dosyalar için Corelux Yedekleme Hizmeti veya snapshot stratejileri kullanın.

Performans Optimizasyonları

Uygulama katmanında ve altyapıda uygulanabilecek optimizasyonlarla gecikme ve kaynak kullanımı azaltılabilir.

1. Event loop gecikmesini izleme

  • Başlık: Event loop delay (latency) ölçümlerinizi periyodik olarak kaydedin; uzun GC süreleri veya CPU spike'ları varsa müdahale edin.

2. Connection pooling ve database optimizasyonu

  • Başlık: Veritabanı için bağlantı havuzu (pool) kullanın; her istek yeni bağlantı açmasın.

3. Cache kullanımı

  • Başlık: Sık erişilen veriler için Redis veya in-memory cache kullanın; Nginx-level caching ile statik içerikleri cache'leyin.

4. Asset optimizasyonu

  • Başlık: Statik dosyaları CDN ile dağıtın; Corelux sunucusunu CDN önünde origin olarak kullanabilirsiniz.

Örnek Deploy Senaryoları

Aşağıda gerçek dünya senaryolarına uygun iki örnek sunulmuştur.

Senaryo A: Küçük ölçekli uygulama (tek sunucu)

  • Başlık: Sunucu: Türkiye VPS (orta seviye)
  • Başlık: Process manager: PM2 cluster modu
  • Başlık: Reverse proxy: Nginx TLS terminasyonu
  • Başlık: Yedek: Günlük DB dump + günlük dosya snapshot

Bu senaryoda PM2 sayesinde CPU çekirdek sayısı kadar worker oluşturup event loop bloklanmasını azaltabilirsiniz. Nginx statik içerikleri servis ederken Node.js yalnızca API isteklerine yoğunlaşır.

Senaryo B: Yüksek trafikli mimari (kümeleme)

  • Başlık: Sunucu: Load balancer + birden çok Türkiye VDS veya Almanya VDS örneği
  • Başlık: Process manager: Her düğümde PM2 veya container orchestration (Kubernetes)
  • Başlık: CDN: Statik içerikler için CDN
  • Başlık: Sağlık kontrolleri: Load balancer üzerinden health check

Bu mimaride yatay ölçeklenebilirlik, failover ve daha kolay trafik yönetimi sağlanır. Corelux kiralık sunucu lokasyonlarını (Türkiye, Almanya, Fransa) altyapınıza göre değerlendirebilirsiniz: Türkiye Kiralık Sunucu, Almanya Kiralık Sunucu, Fransa Kiralık Sunucu.

Sıkça Sorulan Sorular

Node.js uygulamamda kaç worker çalıştırmalıyım?

Genellikle worker sayısını sunucunuzdaki fiziksel çekirdek sayısına eşit veya çekirdek sayısının katı olarak ayarlamak iyi bir başlangıçtır. IO-bound uygulamalarda biraz daha fazla worker fayda sağlayabilir, fakat bellek kullanımını göz önünde bulundurun.

PM2 mi, systemd mi tercih etmeliyim?

Hızlı kurulum ve yönetim için PM2 uygundur; kurumsal, minimal bağımlılık isteniyorsa systemd tercih edilebilir. Container tabanlı dağıtımlar için ise Docker/Kubernetes daha uygundur.

Nginx neden gerekli?

Nginx, TLS terminasyonu, statik içerik servisi, gzip/brotli sıkıştırma, cache ve bağlantı yönetimi (keepalive) sağlayarak Node.js uygulamasının iş yükünü azaltır ve güvenliği artırır.

SSL sertifikası nereden alabilirim?

Let's Encrypt gibi ücretsiz çözümler otomatik yenileme sunar; kurumsal ihtiyaçlarda Corelux'un SSL Sertifikası hizmetini değerlendirebilirsiniz.

Log ve metrikleri nasıl merkezi hale getirebilirim?

Uygulama loglarını stdout/stderr ile üretip bir merkezi log çözümüne (ELK/EFK veya hosted logging) yönlendirin. Metrikler için Prometheus benzeri bir collector ve Grafana ile görselleştirme kullanın.

Yedekleme sıklığını nasıl belirlemeliyim?

Veri kritikliğine göre belirleyin: Kritik veriler için günlük veya saatlik, daha az kritik olanlar için günlük veya haftalık snapshot uygundur. Corelux'un Yedekleme Hizmeti bu konuda yardımcı olabilir.

Sonuç

Node.js uygulamaları için başarılı bir üretim dağıtımı; doğru sunucu seçimi, sistem seviyesinde ayarlar, güvenli TLS terminasyonu ve etkili izleme ile mümkündür. Başlangıç için hızlı bir VPS veya VDS, daha yüksek gereksinimler için kiralık veya bulut sunucu çözümleri değerlendirilebilir. Corelux hizmet sayfalarından ihtiyacınıza uygun sunucu çözümlerine ulaşabilirsiniz: Sanal Sunucu, Kiralık Sunucu, Bulut Sunucu. Ayrıca sertifika ve yedekleme ihtiyaçlarınız için SSL Sertifikası ve Yedekleme Hizmeti sayfalarını inceleyin.

Bu rehberde anlatılan adımları uygulayarak Node.js uygulamanızın kararlılığını, performansını ve güvenliğini artırabilirsiniz. Daha ileri konfigürasyon ve kurulum desteği için Corelux Hizmetler sayfasını ziyaret edin.

Yazar

Boran BAR

Chat on WhatsApp