PM2 adalah process manager untuk Node.js yang membantu menjalankan aplikasi dengan stabil, multi-core, dan mudah dikelola. Panduan ini akan membahas semua perintah penting, contoh ecosystem file, dan best practice untuk WebSocket/HTTP.
Contents
1️⃣ Instalasi PM2
Cek versi:
2️⃣ Menjalankan Aplikasi Node.js (Single Process)
Misal ada file server.js
:
Opsional memberi nama app:
Cek status aplikasi:
3️⃣ Monitoring & Logs
-
Lihat log realtime:
-
Monitoring CPU & memory:
4️⃣ Mengelola Aplikasi
Perintah | Fungsi |
---|---|
pm2 stop my-app |
Stop aplikasi |
pm2 restart my-app |
Restart aplikasi |
pm2 reload my-app |
Reload zero-downtime (cluster mode) |
pm2 delete my-app |
Hapus aplikasi dari PM2 |
pm2 restart all |
Restart semua aplikasi |
pm2 stop all |
Stop semua aplikasi |
5️⃣ Auto-Restart & Watch Mode
-
--watch
→ restart otomatis saat file berubah -
Gunakan
--ignore-watch="node_modules"
untuk menghindari restart karenanode_modules
6️⃣ Batasi Memory
-
Worker restart otomatis jika penggunaan memory > 500MB
7️⃣ Cluster Mode (Multi-Core)
Node.js default single-threaded. Gunakan cluster mode agar multi-core CPU dimanfaatkan:
-
-i max
→ jalankan worker sesuai jumlah core CPU -
Bisa juga pakai angka spesifik:
-i 4
→ 4 worker
Reload zero-downtime:
8️⃣ Sticky Session (Untuk WebSocket)
Sticky session membuat client selalu connect ke worker yang sama, penting untuk WebSocket/HTTP persistent.
Cara benar saat start ecosystem file:
-
--
→ pisahkan CLI PM2 dan flag sticky session -
--sticky
→ aktifkan sticky session
❌ Salah: pm2 start ecosystem.config.js --sticky
→ akan error
9️⃣ Ecosystem File
Contoh ecosystem.config.js
:
Jalankan:
-
Cluster multi-core + sticky session aktif
-
Node.js argumen diteruskan ke server.js (
process.argv
)
BONUS
Auto-start PM2 saat server reboot
-
pm2 save
→ menyimpan state aplikasi + cluster + sticky session -
pm2 startup
→ setup agar PM2 otomatis jalan saat boot
Cheat Sheet Perintah PM2
Perintah | Keterangan |
---|---|
pm2 start server.js |
Jalankan single process |
pm2 start server.js --name my-app |
Jalankan dengan nama |
pm2 list |
List semua aplikasi |
pm2 logs |
Lihat log realtime |
pm2 monit |
Monitoring CPU & memory |
pm2 stop my-app |
Stop aplikasi |
pm2 restart my-app |
Restart aplikasi |
pm2 reload my-app |
Reload zero-downtime |
pm2 delete my-app |
Hapus aplikasi |
pm2 start server.js -i max |
Cluster multi-core |
pm2 start ecosystem.config.js -- --sticky |
Cluster + sticky session |
pm2 save |
Simpan state agar auto-start |
pm2 startup |
Setup auto-start saat boot |
Tips Best Practice
-
Gunakan cluster mode untuk aplikasi high-traffic
-
Gunakan sticky session untuk WebSocket/HTTP persistent
-
Batasi memory worker agar tidak hang (
--max-memory-restart
) -
Gunakan ecosystem file + node_args untuk konfigurasi port/token
-
Monitor aplikasi dengan
pm2 monit
atau PM2 Plus
✅ Dengan panduan ini, kamu bisa:
-
Menjalankan Node.js multi-core dengan cluster
-
Mengaktifkan sticky session untuk WebSocket
-
Auto-restart worker jika memory overload
-
Deploy production-ready dengan ecosystem file