PM2 adalah process manager populer untuk menjalankan aplikasi Node.js di server. Pada kondisi tertentu (traffic tinggi, bug, loop, atau crawler agresif), aplikasi Node.js bisa memakan CPU berlebihan dan membuat VPS menjadi lambat atau bahkan tidak responsif.
Solusi paling aman dan rapi adalah membatasi pemakaian CPU PM2 menggunakan systemd. Dengan cara ini, total CPU yang dipakai seluruh process PM2 tidak akan melebihi batas yang kita tentukan.
Artikel ini membahas langkah lengkap, contoh perhitungan, dan rekomendasi setting di Ubuntu Server.
Kenapa Perlu Limit CPU PM2?
Beberapa alasan umum:
Menjaga server tetap stabil
Mencegah PM2 memakan semua core CPU
Menghindari downtime akibat overload
Memberi ruang CPU untuk service lain (Nginx, MySQL, Redis, system)
Cocok untuk VPS sharing resource
Konsep Dasar CPUQuota di systemd
Systemd menggunakan satuan persentase CPU dengan aturan:
100% = 1 core CPU
200% = 2 core CPU
800% = 8 core CPU
Artinya, walaupun VPS memiliki banyak core, kita bisa membatasi sebuah service agar hanya memakai sebagian saja.
CPUQuota berlaku untuk total semua process di dalam service tersebut (termasuk PM2 cluster mode).
Cek Nama Service PM2
Biasanya PM2 berjalan sebagai service berikut:
pm2 startup
Umumnya akan muncul salah satu:
pm2-root.servicepm2-username.service
Pada artikel ini kita gunakan contoh:
pm2-root.service
Cara Limit CPU PM2
1️⃣ Set Batas CPU
Gunakan perintah berikut:
sudo systemctl set-property pm2-root.service CPUQuota=160%
Contoh di atas berarti:
PM2 dibatasi maksimal 1.6 core CPU
2️⃣ Restart Service PM2
Agar limit langsung aktif:
sudo systemctl restart pm2-root.service
3️⃣ Cek Apakah Limit Aktif
systemctl show pm2-root.service | grep CPUQuota
Jika berhasil, akan muncul:
CPUQuota=160%
Contoh Perhitungan (VPS 8 Core)
Total CPU VPS:
8 core = 800%
| Target Pemakaian | CPUQuota | Core Maks |
|---|---|---|
| 10% | 80% | 0.8 core |
| 20% | 160% | 1.6 core |
| 25% | 200% | 2 core |
| 50% | 400% | 4 core |
| 70% | 560% | 5.6 core |
Contoh:
Ingin PM2 hanya memakai maksimal 20% dari 8 core
Maka set:
CPUQuota=160%
Kamu juga dapat menggunakan tools "CPUQuota Calculator PM2" ini untuk menghitung % konfigurasi yang dibutuhkan.
Pengaruh ke PM2 Cluster Mode
Jika kamu menjalankan PM2 dengan:
pm2 start app.js -i max
Maka:
Semua worker berbagi jatah CPUQuota yang sama
Bukan per worker
Jika CPUQuota kecil, worker akan saling berebut CPU
Cara Mengubah atau Menurunkan Limit CPU
Jika sebelumnya:
CPUQuota=220%
Lalu diubah menjadi:
sudo systemctl set-property pm2-root.service CPUQuota=200%
Maka:
Nilai lama otomatis ditimpa
Aman
Tidak menyebabkan error
Cara Menghapus Limit CPU (Unlimited)
Jika ingin mengembalikan PM2 ke kondisi tanpa batas:
sudo systemctl set-property pm2-root.service CPUQuota=
sudo systemctl restart pm2-root.service
Monitoring Setelah Dibatasi
Gunakan:
htop
Yang akan terlihat:
Total CPU PM2 tidak akan melewati batas CPUQuota
Server lebih stabil saat traffic tinggi
Rekomendasi Setting Aman
Untuk VPS 8 core:
🔹 Aman & stabil:
CPUQuota=400%🔹 Seimbang (recommended):
CPUQuota=560%🔹 Ketat / testing:
CPUQuota=160%
Sesuaikan dengan:
Jumlah aplikasi PM2
Mode fork / cluster
Traffic & workload
Penutup
Kamu juga dapat menggunakan tools "CPUQuota Calculator PM2" ini untuk menghitung % konfigurasi yang dibutuhkan.
Membatasi pemakaian CPU PM2 menggunakan systemd CPUQuota adalah solusi paling rapi, aman, dan profesional untuk menjaga performa Ubuntu Server.
Dengan limit yang tepat, server tetap stabil tanpa harus mematikan aplikasi Node.js.
Semoga bermanfaat.
Posting Komentar