在 Node.js 开发中,我们常常需要运行各种应用程序。但是,当应用程序在生产环境中运行时,仅仅启动它是远远不够的。我们需要考虑到应用程序的稳定性、高可用性以及监控等问题。这时候,PM2 就成为了一个非常实用的工具。PM2 是一个带有负载均衡功能的 Node.js 应用的进程管理器,它可以帮助我们轻松地管理和守护 Node.js 应用程序。
在使用 PM2 之前,我们需要先安装它。可以使用 npm 或者 yarn 来进行安装,以下是使用 npm 安装的命令:
npm install -g pm2
安装完成后,可以使用以下命令来验证 PM2 是否安装成功:
pm2 --version
假设我们有一个简单的 Node.js 应用程序 app.js
,代码如下:
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
server.listen(3000, () => {
console.log('Server running on port 3000');
});
使用 PM2 启动这个应用程序的命令如下:
pm2 start app.js
PM2 会自动管理这个应用程序的进程,即使应用程序崩溃,PM2 也会自动重启它。
使用以下命令可以查看当前由 PM2 管理的所有进程列表:
pm2 list
这个命令会输出一个表格,包含进程的 ID、名称、状态、CPU 使用率、内存使用率等信息。
如果需要停止某个进程,可以使用以下命令:
pm2 stop <process_id_or_name>
其中 <process_id_or_name>
可以是进程的 ID 或者名称。例如,如果要停止上面启动的 app.js
进程,可以使用:
pm2 stop app
如果需要重启某个进程,可以使用以下命令:
pm2 restart <process_id_or_name>
同样,<process_id_or_name>
可以是进程的 ID 或者名称。
如果不再需要某个进程,可以使用以下命令将其从 PM2 的管理列表中删除:
pm2 delete <process_id_or_name>
PM2 会自动记录应用程序的日志,使用以下命令可以查看应用程序的日志:
pm2 logs <process_id_or_name>
如果不指定 <process_id_or_name>
,则会查看所有进程的日志。
PM2 提供了一个实时监控界面,可以查看应用程序的 CPU 使用率、内存使用率等信息。使用以下命令可以进入监控界面:
pm2 monit
PM2 可以通过 --instances
参数来实现负载均衡。例如,启动 4 个实例来处理请求:
pm2 start app.js --instances 4
这样,PM2 会自动将请求分发到这 4 个实例中,提高应用程序的性能和可用性。
在启动应用程序时,可以通过 --env
参数来设置环境变量。例如:
pm2 start app.js --env production
在应用程序中,可以通过 process.env.NODE_ENV
来获取这个环境变量的值。
为了更方便地管理应用程序,PM2 支持使用配置文件。创建一个名为 ecosystem.config.js
的文件,内容如下:
module.exports = {
apps : [{
name: 'my-app',
script: 'app.js',
instances: 4,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}]
};
使用配置文件启动应用程序的命令如下:
pm2 start ecosystem.config.js
功能 | 命令 | 说明 |
---|---|---|
启动应用程序 | pm2 start <script> |
启动一个 Node.js 应用程序 |
查看进程列表 | pm2 list |
查看当前由 PM2 管理的所有进程列表 |
停止进程 | pm2 stop <process_id_or_name> |
停止指定的进程 |
重启进程 | pm2 restart <process_id_or_name> |
重启指定的进程 |
删除进程 | pm2 delete <process_id_or_name> |
从 PM2 的管理列表中删除指定的进程 |
查看日志 | pm2 logs <process_id_or_name> |
查看指定进程的日志 |
监控 | pm2 monit |
进入实时监控界面 |
负载均衡 | pm2 start <script> --instances <number> |
启动多个实例来实现负载均衡 |
使用配置文件启动 | pm2 start <config_file> |
使用配置文件启动应用程序 |
通过使用 PM2,我们可以更加方便地管理和守护 Node.js 应用程序,提高应用程序的稳定性和可用性。希望这篇文章能帮助你更好地使用 PM2 进行进程管理。