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 reloadile kesintisiz yeniden başlatmapm2 monitile gerçek zamanlı izleme- Çoklu çekirdek kullanımı (Cluster mode)
- Log rotasyonu ve otomatik yeniden başlatma
pm2 startupile 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ı
supervisorctlile 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ı?
| Durum | Tercih Edilen |
|---|---|
| Node.js uygulaması, canlı izleme, zero-downtime gereksinimi | PM2 |
| Çoklu dil desteği, minimal sistem, basit servisler | Supervisord |
| Docker veya Kubernetes ortamı | Genellikle dışarıda yönetilir (PM2 cluster hariç) |
| Sadece “çalışsın yeter” tarzı servisler | Supervisord |
| Log takibi ve developer-friendly arayüz isteniyorsa | PM2 |
Ö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
systemctlservisleri tanımlayabilirsiniz. Ancak zero-downtime restart veya log izleme gerekiyorsa, PM2 daha akıllıca bir seçim olur.

Bir yanıt yazın