pm2配置快速入门
在对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
进程因为内存溢出崩掉后也会自动重启
评论