PM2 vs Supervisord: Hangisi Daha İyi Süreç Yöneticisi?

Sunucuda çalışan uygulamaların kesintisiz kalması, özellikle de Node.js veya Python tabanlı projelerde, doğru process manager (süreç yöneticisi) seçimine bağlıdır. En çok kullanılan iki araç ise PM2 ve Supervisord. Peki hangisini ne zaman tercih etmek gerekir?

PM2 Nedir?

PM2, özellikle Node.js projeleri için geliştirilmiş, modern bir süreç yöneticisidir. Ancak yalnızca Node.js değil, Python, Go veya shell script’leri de yönetebilir. En büyük avantajı; zero-downtime reload (sıfır kesintiyle yeniden başlatma), log yönetimi, çoklu instance (cluster) desteği ve izleme arayüzü (pm2 monit) gibi gelişmiş özellikler sunmasıdır.

Öne çıkan özellikler:

  • pm2 reload ile kesintisiz yeniden başlatma
  • pm2 monit ile gerçek zamanlı izleme
  • Çoklu çekirdek kullanımı (Cluster mode)
  • Log rotasyonu ve otomatik yeniden başlatma
  • pm2 startup ile sistem açılışında otomatik çalıştırma

Kullanım örneği:

pm2 start app.js --name my-api --watch
pm2 reload my-api
pm2 logs my-api
pm2 save

Supervisord Nedir?

Supervisord, daha genel bir amaçla geliştirilmiş, dil bağımsız bir süreç yöneticisidir. Python ekosisteminden çıkmıştır, ancak her türlü uygulamayı (örneğin Node.js, Go, PHP, Rust, shell script) yönetebilir. PM2 kadar gelişmiş özellikleri olmasa da, kararlılığı, düşük kaynak kullanımı ve basit INI yapılandırması ile öne çıkar.

Öne çıkan özellikler:

  • INI dosyasıyla kolay yapılandırma
  • Düşük sistem yükü
  • Kararlı ve sade yapı
  • supervisorctl ile merkezi yönetim

Kullanım örneği:

[program:api]
command=node /srv/app/server.js
directory=/srv/app
autostart=true
autorestart=true
stderr_logfile=/var/log/api.err.log
stdout_logfile=/var/log/api.out.log
supervisorctl reread
supervisorctl update
supervisorctl restart api

Hangisini Ne Zaman Kullanmalı?

DurumTercih Edilen
Node.js uygulaması, canlı izleme, zero-downtime gereksinimiPM2
Çoklu dil desteği, minimal sistem, basit servislerSupervisord
Docker veya Kubernetes ortamıGenellikle dışarıda yönetilir (PM2 cluster hariç)
Sadece “çalışsın yeter” tarzı servislerSupervisord
Log takibi ve developer-friendly arayüz isteniyorsaPM2

Özet

  • PM2, Node.js projeleri için adeta “Swiss Army Knife” gibidir; her şeyi düşünülmüştür.
  • Supervisord ise sade, kararlı, sessiz çalışan bir bekçi gibidir; ne eksik ne fazla.
  • Eğer sisteminizde systemd varsa, her iki aracın da yerine systemctl servisleri tanımlayabilirsiniz. Ancak zero-downtime restart veya log izleme gerekiyorsa, PM2 daha akıllıca bir seçim olur.

Comments

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir