PM2 (Process Manager 2) est le standard mondial incontournable pour faire tourner des applications Node.js en production. Profitez du redémarrage automatique en cas de crash, du mode cluster multi-cœurs et de la persistance au reboot.
Redémarre votre API en moins de 100 millisecondes si une exception non gérée survient.
Exploite tous les cœurs CPU de votre serveur en répartissant la charge automatiquement.
Rétablit tous vos services automatiquement en cas de reboot ou de coupure du serveur.
Tableau de bord temps réel affichant la RAM, le CPU et le nombre de requêtes par seconde.
# 1. Installer PM2 mondialement avec npm $ sudo npm install -g pm2 # 2. Démarrer l'API en mode Cluster sur TOUS les cœurs CPU disponibles $ pm2 start dist/server.js --name "learnweb-api" -i max # 3. Consulter l'état de santé et les métriques des instances $ pm2 status ┌────┬────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐ │ id │ name │ mode │ ↺ │ status │ cpu │ memory │ ├────┼────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤ │ 0 │ learnweb-api │ cluster │ 0 │ online │ 0.1% │ 48.2mb │ │ 1 │ learnweb-api │ cluster │ 0 │ online │ 0.1% │ 47.9mb │ │ 2 │ learnweb-api │ cluster │ 0 │ online │ 0.2% │ 49.1mb │ │ 3 │ learnweb-api │ cluster │ 0 │ online │ 0.1% │ 48.6mb │ └────┴────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘ # 4. Configurer la persistance permanente au redémarrage de la machine $ pm2 startup systemd # Exécuter la commande sudo générée par PM2, puis : $ pm2 save [PM2] Freeze a process list on reboot -> Saved to /home/ubuntu/.pm2/dump.pm2
Si votre serveur VPS dispose de 4 cœurs de processeur (vCPU) et que vous lancez node server.js, 1 seul cœur travaille à 100% pendant que les 3 autres dorment !
Avec pm2 start server.js -i max, PM2 utilise le module natif cluster de Node pour lancer 4 instances en parallèle partageant le même port 3000. Votre débit de requêtes supporté est immédiatement multiplié par 4 !
pm2 restart coupe tout d'un coup. À l'inverse, pm2 reload all redémarre les instances une par une (rolling restart). Les visiteurs en train d'acheter sur votre site ne ressentent aucune interruption ! | Commande | Action Réalisée | Usage en Production |
|---|---|---|
| pm2 start app.js --name x | Démarre et supervise l'application | Premier lancement du projet |
| pm2 reload all | Rechargement à chaud sans coupure (0 downtime) | À chaque mise à jour de code (git pull) |
| pm2 logs --lines 100 | Affiche les 100 dernières lignes de logs en direct | Dépannage d'un bug ou d'une erreur 500 |
| pm2 monit | Interface console dynamique interactive | Surveillance des pics de charge et fuites de RAM |
| pm2 save | Sauvegarde la liste des processus pour le boot | Obligatoire après tout ajout/suppression de service |