Kode Perintah PM2 untuk Node.js: Dasar, Cluster, dan Sticky Session

Update 20/10/25 · Read 3 minute

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.


1️⃣ Instalasi PM2

npm install pm2 -g

Cek versi:

pm2 --version

2️⃣ Menjalankan Aplikasi Node.js (Single Process)

Misal ada file server.js:

pm2 start server.js

Opsional memberi nama app:

pm2 start server.js --name my-app

Cek status aplikasi:

pm2 list
pm2 status my-app

3️⃣ Monitoring & Logs

  • Lihat log realtime:

pm2 logs
pm2 logs my-app
  • Monitoring CPU & memory:

pm2 monit

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

pm2 start server.js --watch
  • --watch → restart otomatis saat file berubah

  • Gunakan --ignore-watch="node_modules" untuk menghindari restart karena node_modules


6️⃣ Batasi Memory

pm2 start server.js --max-memory-restart 500M
  • 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:

pm2 start server.js -i max
  • -i max → jalankan worker sesuai jumlah core CPU

  • Bisa juga pakai angka spesifik: -i 4 → 4 worker

Reload zero-downtime:

pm2 reload server.js -i max

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:

pm2 start ecosystem.config.js -- --sticky
  • -- → pisahkan CLI PM2 dan flag sticky session

  • --sticky → aktifkan sticky session

READ :  Node.js Dari Install -> Menjadi Developer Javascript

❌ Salah: pm2 start ecosystem.config.js --sticky → akan error


9️⃣ Ecosystem File

Contoh ecosystem.config.js:

module.exports = {
apps: [
{
name: 'my-app',
script: './server.js',
instances: 'max', // jalankan sesuai core CPU
exec_mode: 'cluster', // cluster mode
watch: false,
max_memory_restart: '500M',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
},
node_args: '--port 3000' // optional, diteruskan ke Node.js
}
]
};

Jalankan:

pm2 start ecosystem.config.js -- --sticky
  • Cluster multi-core + sticky session aktif

  • Node.js argumen diteruskan ke server.js (process.argv)


BONUS

const args = process.argv.slice(2);

if (args.includes(‘–port’)) {
const port = parseInt(args[args.indexOf(‘–port’) + 1]);
console.log(‘Custom port:’, port);
}


Auto-start PM2 saat server reboot

pm2 save
pm2 startup
  • 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