Blogchevron_rightSunucu Yönetimichevron_rightPM2 Nedir? Node.js Uygulamaları İçin Kapsamlı Rehber

PM2 Nedir? Node.js Uygulamaları İçin Kapsamlı Rehber

S
Serversium
calendar_today15 Mayıs 2026
schedule5 dk okuma
PM2 Nedir? Node.js Uygulamaları İçin Kapsamlı Rehber

PM2 Nedir ve Node.js Uygulamaları İçin Neden Gereklidir?

PM2, Node.js uygulamaları için geliştirilmiş bir production-grade process manager'dır. Production ortamlarında çalışan Node.js uygulamalarının %85'inden fazlası PM2 kullanmaktadır (Node.js Foundation araştırmasına göre). PM2, uygulamalarınızın sürekli çalışmasını, otomatik yeniden başlatılmasını, yük dengelemesini ve gelişmiş izleme özelliklerini sağlar.

PM2 kullanmadan Node.js uygulaması çalıştırmak, sunucu yeniden başlatıldığında veya uygulama çöktüğünde manuel müdahale gerektirir. Bu durum, web sitesi performansını olumsuz etkiler ve kullanıcı deneyimini bozar.

PM2 Kurulumu

PM2'yi kurmak için Node.js ve npm'in sisteminizde yüklü olması gerekir. Aşağıdaki komutla PM2'yi global olarak yükleyebilirsiniz:

npm install -g pm2

Kurulum tamamlandıktan sonra sürüm kontrolü yapmak için:

pm2 --version

Temel PM2 Komutları

Uygulama Başlatma

Node.js uygulamanızı PM2 ile başlatmak için aşağıdaki komutu kullanın:

pm2 start app.js

Birden fazla instance başlatmak için:

pm2 start app.js -i 4

Bu komut, 4 ayrı process oluşturarak sunucu kaynaklarını daha verimli kullanmanızı sağlar.

Process Yönetimi Komutları

PM2'nin en çok kullanılan komutları şunlardır:

  • pm2 list - Tüm çalışan processleri listeler
  • pm2 stop [id/name] - Belirtilen processi durdurur
  • pm2 restart [id/name] - Processi yeniden başlatır
  • pm2 delete [id/name] - Processi tamamen kaldırır
  • pm2 monit - Canlı izleme paneli açar

PM2 Yapılandırma Dosyası (ecosystem.config.js)

Karmaşık uygulamalar için ecosystem.config.js dosyası kullanmak, yönetimi kolaylaştırır. Bu dosya, uygulama ayarlarınızı merkezi bir konumda tutmanızı sağlar.

module.exports = {
  apps: [{
    name: 'my-app',
    script: './app.js',
    instances: 'max',
    exec_mode: 'cluster',
    env: {
      NODE_ENV: 'development'
    },
    env_production: {
      NODE_ENV: 'production'
    },
    error_file: './logs/error.log',
    out_file: './logs/out.log',
    log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
    merge_logs: true
  }]
}

Bu yapılandırma ile uygulamanız otomatik olarak felaket kurtarma yeteneklerine sahip olur.

PM2 ile Otomatik Yeniden Başlatma

PM2'nin en önemli özelliklerinden biri, uygulama çöktüğünde otomatik olarak yeniden başlatılmasıdır. Bu özelliği yapılandırmak için:

pm2 start app.js --max_restarts 10 --exp_backoff_restart_delay 100

Bu ayarlar, maximum 10 kez yeniden başlatma denemesi yapar ve her deneme arasında 100ms bekleme süresi ekler.

Memory Tabanlı Yeniden Başlatma

Belirli bir bellek miktarını aştığında otomatik yeniden başlatma için:

pm2 start app.js --max-memory-restart 512M

Bu özellik, veri merkezi ortamlarında bellek sızıntılarına karşı koruma sağlar.

PM2 ile Zero-Downtime Deployment

Production ortamlarında uygulama güncellemesi yaparken kesinti yaşamamak için PM2'nin graceful reload özelliğini kullanın:

pm2 reload all --update-env

Bu komut, tüm instance'ları sırayla yeniden başlatarak kullanıcıların kesintisiz hizmet almasını sağlar.

PM2 Log Yönetimi

PM2, uygulama loglarını otomatik olarak yönetir. Log dosyalarını görüntülemek için:

  • pm2 logs - Tüm logları görüntüler
  • pm2 logs [app-name] - Belirli uygulamanın loglarını gösterir
  • pm2 flush - Tüm logları temizler

Log rotasyonu için pm2-logrotate eklentisini kurmanız önerilir:

pm2 install pm2-logrotate

PM2 Monitoring ve Dashboard

PM2, uygulama performansını izlemek için kapsamlı araçlar sunar:

pm2 monit

Bu komut, CPU kullanımı, bellek tüketimi ve process durumlarını canlı olarak gösterir. Ayrıca PM2 Plus cloud servisi ile uzaktan izleme yapabilirsiniz.

PM2 vs Forever vs Systemd Karşılaştırması

ÖzellikPM2ForeverSystemd
Kurulum Kolaylığı⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Cluster Modu
Load BalancingManuel
Log YönetimiSınırlı
Zero-Downtime
Memory MonitoringSınırlı
Dashboard

PM2, özellikle Node.js uygulamaları için optimize edilmiş yapısıyla öne çıkmaktadır. Docker ortamlarında PM2 kullanımı da oldukça yaygındır.

PM2 ile Çalışan Uygulama Örneği

Express.js uygulaması için tam PM2 yapılandırması:

// ecosystem.config.js
module.exports = {
  apps: [{
    name: 'express-api',
    script: 'server.js',
    instances: 'max',
    exec_mode: 'cluster',
    env: {
      PORT: 3000,
      NODE_ENV: 'development'
    },
    env_production: {
      PORT: 8080,
      NODE_ENV: 'production'
    },
    error_file: './logs/error.log',
    out_file: './logs/out.log',
    time: true,
    max_memory_restart: '1G',
    autorestart: true,
    max_restarts: 10,
    min_uptime: '10s'
  }]
}

Bu yapılandırmayı kullanarak uygulamanızı başlatın:

pm2 start ecosystem.config.js --env production

PM2 Best Practices

  1. Always in Production: PM2'yi production ortamlarında mutlaka kullanın. Geliştirme ortamında test edin, production'da yayınlayın.
  2. Log Rotation: Disk doluluğunu önlemek için pm2-logrotate eklentisini mutlaka kurun.
  3. Memory Limits: Bellek sınırları belirleyerek uygulama stabilitesini sağlayın.
  4. Environment Variables: Hassas bilgileri .env dosyasında tutun, yapılandırma dosyasından referans verin.
  5. Startup Script: Sunucu yeniden başladığında PM2 processlerinin otomatik başlaması için startup script oluşturun:
pm2 startup
# Çıktıda verilen komutu çalıştırın
pm2 save

Sonuç

PM2, Node.js uygulamalarının production ortamlarında güvenilir şekilde çalışması için vazgeçilmez bir araçtır. Otomatik yeniden başlatma, yük dengeleme, log yönetimi ve monitoring özellikleriyle uygulama uptime'ınızı önemli ölçüde artırır.

PM2'yi hosting çözümleri ile birlikte kullanarak maximum uptime ve performans elde edebilirsiniz. Özellikle mikroservis mimarisi kullanan ekipler için PM2, modern web mimarisi standartlarının başında gelmektedir.

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward