当前位置: 首页 > Linux

PM2管理node.js

时间:2023-04-06 06:05:34 Linux

一句话说什么是PM2,简单来说:Advanced,productionprocessmanagerforNode.js说白了就是进程管理,进阶,看它有多进阶:内置负载均衡Clustering后台运行自动重启性能监控,当然还有日志!!!!必须强调日志。我在程序中使用了log4js。相信很多人都用它来记录日志。在服务器上部署后,666大多数情况下是没有问题的。记得有一次程序内存暴涨挂了,有一次AMQP失去连接挂了,看日志,什么鬼,没有报错信息??经过多次测试,证明是在处理高并发任务时出现了程序错误。可能是log4js模块的异步写日志线程还没执行完,主线程就挂了。.什么...?pm2来了,pm2帮你记住log4js没记住的地方^_^全局安装最新稳定版:npminstallpm2@latest-g就这么简单,update?pm2更新项目结构$HOME/.pm2会包含所有的pm2相关文件$HOME/.pm2/logs会包含所有的应用日志,log文件夹,你会看到app-error-0.logapp-out-0.log等以你启动的应用名开头的日志,输出并报错$HOME/.pm2/pids会包含所有应用的pids$HOME/.pm2/pm2.logpm2logs$HOME/.pm2/pm2.pidpm2pid$HOME/.pm2/rpc.sock远程命令的套接字文件$HOME/.pm2/pub.sock可发布事件的套接字文件$HOME/.pm2/conf.jsPM2配置常用这些pm2startapp.js--nameapp//Fork模式运行pm2startapp.js-i0//集群模式根据有效CPU数启动最大进程数pm2startapp.js-i4//集群模式启动4个实例pm2list//显示进程状态pm2monit//监控所有进程pm2logs[--raw]//显示所有日志pm2flush//清空所有日志文件pm2stopall//停止所有进程pm2stop[name|id]//停止一个进程pm2restartall//重启所有进程pm2restart[name|id]//重启某个进程pm2reloadall//0秒关机重新加载进程(针对NETWORKED应用)pm2delete[name|id]//移除某个进程pm2deleteall//删除所有进程如果要加一些参数也很有用,比如NODE_ENV--max-old-space-size...可以执行这个pm2startapp.js--max-old-space-size=2048each吗?很烦人。pm2支持ProcessFile,一个配置文件配置你所有的服务Generatepm2ecosystem//会生成一个简单的配置文件ecosystem.config.jsConfig意思一目了然module.exports={/***应用配置部分*/apps:[//第一个应用{name:'app_1',script:'/root/project_1/app.js',env:{NODE_ENV:'development'},env_production:{NODE_ENV:'production'}},//第二个应用{name:'app_2',script:'/root/project_2/app.js',instances:4,exec_mode:'cluster',env:{NODE_ENV:'production'},env_production:{NODE_ENV:'production'}},//第三个应用{name:'app_3',script:'/root/project_3/master.js',env:{NODE_ENV:'production'},env_production:{NODE_ENV:'production'},node_args:"--nouse-idle-notification--gc_global--max-old-space-size=2048"}]};//也可以使用JSONCLIpm2startecosystem.config.js//启动所有应用pm2startecosystem.config.js--onlyapp_1//启动app_1pm2stopecosystem.config.js[--onlyapp_1]//Stoppm2restartecosystem.config.js[--onlyapp_1]//restartpm2reloadecosystem.config.js[--onlyapp_1]//reloadpm2deleteecosystem.config.js[--onlyapp_1]//remove