In-depth Guide to PM2: The Process Management Tool for Node.js Applications
- 489Words
- 2Minutes
- 25 Jul, 2024
PM2 is a process management tool specifically designed for Node.js applications, aimed at simplifying the deployment and management of applications. It offers features for starting, stopping, restarting, and monitoring applications, along with advanced features such as automatic restarts, load balancing, and log management. Here is a detailed introduction and usage guide for PM2.
Main Features
- Process Management: Start, stop, restart, and delete applications.
- Monitoring: Real-time monitoring of application status, CPU, and memory usage.
- Log Management: View and manage application logs.
- Load Balancing: Achieve load balancing through cluster mode.
- Automatic Restart: Automatically restart applications when they crash or encounter errors.
- Startup Scripts: Automatically start applications on system boot.
- Configuration Management: Manage multiple applications using JSON configuration files.
Installing PM2
To use PM2, you first need to install it. It can be installed via npm:
1npm install -g pm2Basic Usage
Starting an Application
To start an application, use the pm2 start command and specify the application entry file:
1pm2 start app.jsViewing Application Status
Use the pm2 list command to view all running applications and their status:
1pm2 listStopping an Application
Use the pm2 stop command to stop a specific application:
1pm2 stop app.jsOr stop it by its application ID:
1pm2 stop 0Restarting an Application
Use the pm2 restart command to restart a specific application:
1pm2 restart app.jsOr restart it by its application ID:
1pm2 restart 0Deleting an Application
Use the pm2 delete command to delete a specific application:
1pm2 delete app.jsOr delete it by its application ID:
1pm2 delete 0Advanced Usage
Starting Multiple Instances (Cluster Mode)
Use the -i option to start multiple instances to take advantage of multi-core CPUs:
1pm2 start app.js -i maxmax will start as many instances as there are CPU cores. You can also specify a specific number of instances, such as -i 4 to start 4 instances.
Managing Logs
To view logs for a specific application:
1pm2 logs app.jsOr view logs for all applications:
1pm2 logsMonitoring Applications
Use the pm2 monit command to monitor the status of all applications in real-time:
1pm2 monitUsing a JSON Configuration File
PM2 allows managing applications using a JSON configuration file. First, create an ecosystem.config.js file:
1module.exports = {2 apps: [3 {4 name: "app",5 script: "./app.js",6 instances: "max",7 exec_mode: "cluster",8 watch: true,9 env: {10 NODE_ENV: "development",11 },12 env_production: {13 NODE_ENV: "production",14 },15 },16 ],17};Then, start the applications defined in the configuration file using the pm2 start command:
1pm2 start ecosystem.config.jsSetting Up Automatic Startup
PM2 can be configured to automatically start applications on system boot. First, generate the startup script:
1pm2 startupThen save the current process list:
1pm2 saveReloading Applications
To reload an application seamlessly (without downtime), use the pm2 reload command:
1pm2 reload app.jsOr reload it by its application ID:
1pm2 reload 0Summary of Common Commands
- Start an application:
pm2 start <app> - Stop an application:
pm2 stop <app> - Restart an application:
pm2 restart <app> - Delete an application:
pm2 delete <app> - View the application list:
pm2 list - View application logs:
pm2 logs <app> - Real-time monitoring:
pm2 monit - Automatic startup:
pm2 startup,pm2 save
With these features, PM2 provides a complete solution for managing the lifecycle of Node.js applications, simplifying the complexity of application management, and improving stability and reliability in both development and production environments.