pm2配置快速入门

2,011 阅读2分钟

在对express进行项目部署的时候,我们需要一个东西来守护进程,类似于java中的tomcat一样,pm2就是一个node进程管理工具,它可以对node应用进行简化管理,使用起来非常方便。这里只做基本的配置入门介绍。

1、安装pm2

npm install pm2 -g

如果在windows服务器上,要注意添加pm2环境变量;具体操作可以找下相关资料,比较简单,需要注意一点:path栏指向的是软件启动文件所在地址。

2、常用命令

这里有些常用命令先贴出来:

pm2 start app.js --name=fork  -i 0 #启动app.js 

# --name=fork 命名为fork 
# -i 0  根据CPU核数启动进程个数

pm2 start app.js --watch      # 当文件变化时自动重启应用
pm2 start script.sh           # 启动 bash 脚本
pm2 list                      # 列表 PM2 启动的所有的应用程序
pm2 monit                     # 显示每个应用程序的CPU和内存占用情况
pm2 show [app-name]           # 显示应用程序的所有信息
pm2 logs                      # 显示所有应用程序的日志
pm2 stop all                  # 停止所有的应用程序
pm2 stop 0                    # 停止 id为 0的指定应用程序
pm2 restart all               # 重启所有应用
pm2 reload all                # 重启 cluster mode下的所有应用
pm2 delete all                # 关闭并删除所有应用
pm2 delete 0                  # 删除指定应用 id 0
pm2 scale api 10              # 把名字叫api的应用扩展到10个实例pm2 reset [app-name]          # 重置重启数量
pm2 startup                   # 创建开机自启动命令
pm2 save                      # 保存当前应用列表
pm2 resurrect                 # 重新加载保存的应用列表

#内存使用超过上限自动重启 可以加上--max-memory-restart参数
pm2 start app.js --max-memory-restart 20M

3、pm2启动项目

pm2 start ./bin/www

4、管理内存溢出问题

如果遇到内存溢出问题,进程崩掉了,这时需要重启进程。

有一种方法是在启动时设置内存阈值重启,就是这样:

pm2 start www --max-memory-restart 4096M

不过我在实际操作中发现此命令无效,我后来改成6G都没法阻止重启,服务一调用就直接js heap out of memory了。

最后,实在没办法,只有不用pm2,直接用npm启动

这需要在package.json文件中的启动节点进行最大内存配置:

"scripts": {
    "start": "node --max_old_space_size=4096 ./bin/www"
  }

然后启动就可以了

npm start

进程因为内存溢出崩掉后也会自动重启