PM2 adalah process manager untuk aplikasi Node.js (dan aplikasi JavaScript pada umumnya) yang berjalan di sisi server. Selain menjaga proses tetap hidup, PM2 menyediakan fitur auto-restart, manajemen log, pemantauan resource, hingga cluster mode untuk memanfaatkan banyak core CPU. Untuk membuat aplikasi atau bot aktif 24/7, PM2 akan menjalankan ulang proses yang berhenti dan — melalui perintah pm2 startup — mendaftarkan dirinya ke systemd agar ikut menyala saat VPS reboot.
Pengertian
PM2 bekerja dengan cara membungkus aplikasi kita dalam sebuah proses yang ia awasi. Jika aplikasi keluar karena error atau kehabisan memori, PM2 akan menjalankannya kembali sesuai aturan yang ditentukan (secara bawaan restart otomatis aktif). PM2 menyimpan daftar proses ke dalam dump file yang dipulihkan saat booting, sehingga aplikasi kembali berjalan tanpa intervensi manual.
Fungsi dan Manfaat
- Auto-restart: proses yang mati akan otomatis dijalankan ulang, cocok untuk bot yang harus selalu online.
- Startup otomatis:
pm2 startupmengintegrasikan PM2 ke systemd agar daftar aplikasi pulih setelah reboot. - Manajemen log: seluruh output dapat dibaca dengan
pm2 logstanpa berkas log manual. - Monitoring: perintah
pm2 monitmenampilkan CPU, memori, dan status tiap proses secara langsung. - Cluster mode: menjalankan beberapa instance sekaligus untuk memanfaatkan multi-core dan melakukan zero-downtime reload.
- Ecosystem file: konfigurasi banyak aplikasi disimpan rapi dalam
ecosystem.config.js.
Kelebihan dan Kekurangan
| Aspek | Kelebihan | Kekurangan / Risiko |
|---|---|---|
| Kemudahan | Perintah sederhana, cocok untuk pemula Node.js. | Fokus utama pada ekosistem Node.js. |
| Ketahanan | Auto-restart dan startup otomatis via systemd. | Lupa pm2 save menyebabkan proses tidak pulih saat reboot. |
| Monitoring | Dashboard pm2 monit dan log terpusat. | Log dapat membesar bila tidak dibatasi. |
| Skalabilitas | Cluster mode untuk multi-core. | Boros memori jika terlalu banyak instance. |
Penggunaan (Cara Menggunakan PM2)
- Instal PM2 secara global:bash
sudo npm install -g pm2 - Jalankan aplikasi atau bot (misalnya
bot.js):bashpm2 start bot.js --name mybot - Simpan daftar proses dan pasang startup agar aktif saat boot:bash
pm2 save pm2 startup
Perintah pm2 startup akan mencetak baris perintah sudo env ... pm2 startup systemd -u ... yang harus dijalankan agar PM2 terdaftar di systemd.
- Perintah dasar yang sering dipakai:bash
pm2 list # melihat semua proses pm2 logs mybot # melihat log pm2 restart mybot # restart pm2 stop mybot # menghentikan sementara pm2 delete mybot # menghapus dari daftar
Untuk menjalankan beberapa aplikasi sekaligus dengan konfigurasi rapi, gunakan ecosystem.config.js:
module.exports = {
apps: [
{
name: 'mybot',
script: 'bot.js',
instances: 1,
autorestart: true,
env: {
NODE_ENV: 'production',
},
},
],
};Lalu jalankan dengan pm2 start ecosystem.config.js dan pm2 save.
Troubleshoot
- Tidak jalan setelah reboot: pastikan Anda menjalankan
pm2 save(menyimpan daftar) danpm2 startup(mendaftar ke systemd). Tanpa keduanya, proses tidak akan pulih otomatis. - Proses sering restart (looping): periksa aplikasi mengapa ia keluar. Cek
pm2 logs mybot. Jika keluar karena error berulang, PM2 akan terus mencoba menjalankan ulang. - Log membesar: PM2 menyimpan log di
~/.pm2/logs/. Aktifkan rotasi denganpm2 install pm2-logrotatedan atur batas ukurannya. - Ingin menjalankan non-root: jalankan
pm2 startup systemd -u username --hp /home/usernameagar layanan PM2 berjalan sebagai user tersebut, bukan root. - Mengubah konfigurasi: setelah mengedit
ecosystem.config.js, jalankanpm2 delete mybotlalupm2 start ecosystem.config.jsdanpm2 savekembali.