nodeJS进程管理器pm2的使用

2020-06-17 06:37:52易采站长站整理

cron_restart crontab时间格式,定时重启应用,目前只支持cluster模式;

运行实例:已上面的test.json为例


pm2 start test.json

环境切换

在实际项目开发中,我们的应用经常需要在多个环境下部署,比如开发环境、测试环境、生产环境等。在不同环境下,有时候配置项会有差异,比如链接的数据库地址不同等。

对于这种场景,pm2也是可以很好支持的。首先通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过–env参数指定运行的环境。

首先,在配置文件中,通过env选项声明多个环境配置。简单说明下:

env为默认的环境配置(生产环境),env_dev、env_test则分别是开发、测试环境。可以看到,不同环境下的NODE_ENV、REMOTE_ADDR字段的值是不同的。

在应用中,可以通过process.env.REMOTE_ADDR等来读取配置中生命的变量。

例如:


"env": { "NODE_ENV": "production","REMOTE_ADDR": "http://www.example.com/"}
"env_dev": { "NODE_ENV": "development", "REMOTE_ADDR": "http://wdev.example.com/"}
​"env_test": { "NODE_ENV": "test", "REMOTE_ADDR": http://wtest.example.com/}

启动指明环境:假设通过下面启动脚本(开发环境),那么,此时process.env.REMOTE_ADDR的值就是相应的链接地址


pm2 start app.js --env dev

负载均衡

命令如下,表示开启三个进程。如果-i 0,则会根据机器当前核数自动开启尽可能多的进程。


m2 start app.js -i 3 # 开启三个进程

​pm2 start app.js -i max # 根据机器CPU核数,开启对应数目的进程

日志查看

除了可以打开日志文件查看日志外,还可以通过pm2 logs来查看实时日志。这点对于线上问题排查非常重要。

比如某个node服务突然异常重启了,那么可以通过pm2提供的日志工具来查看实时日志,看是不是脚本出错之类导致的异常重启。


pm2 logs

开机自动启动

可以通过pm2 startup来实现开机自启动。大致流程如下:

通过pm2 save保存当前进程状态。

通过pm2 startup [platform]生成开机自启动的命令。(记得查看控制台输出)

将步骤2生成的命令,粘贴到控制台进行,搞定。

自动重启应用

fork不支持定时重启,cluster支持定时重启。定时重启也就是配置中的cron_restart配置项。

监控(monitor)

运行如下命令,查看当前通过pm2运行的进程的状态。