网站建设基本流程规范,住总集团公司宣传册设计样本,网站备案详细最新流程,制作一款手游需要多少钱pm2 进程管理工具可以Windows操作系统上运行#xff0c;当一台Windows电脑上需要运行多个进程时#xff0c;或者运维时需要运行多个进程以提供服务时。可以使用pm2#xff0c;而不再是使用脚本。
1. 使用PM2管理进程
1.1. 启动PM2项目
1.1.1. 直接启动项目
参数说明当一台Windows电脑上需要运行多个进程时或者运维时需要运行多个进程以提供服务时。可以使用pm2而不再是使用脚本。
1. 使用PM2管理进程
1.1. 启动PM2项目
1.1.1. 直接启动项目
参数说明
--watch监听应用目录的变化一旦发生变化自动重启。如果要精确监听、不见听的目录最好通过配置文件。-i --instances启用多少个实例可用于负载均衡。如果-i 0或者-i max则根据当前机器核数确定实例数目。--ignore-watch排除监听的目录/文件可以是特定的文件名也可以是正则。比如--ignore-watchtest node_modules some scripts-n --name应用的名称。查看应用信息的时候可以用到。-o --output path标准输出日志文件的路径。-e --error path错误输出日志文件的路径。--interpreter interpreterthe interpreter pm2 should use for executing app (bash, python…)。比如你用的coffee script来编写应用。
pm2支持直接运行server.js启动项目如下
## 1.2. 查看应用列表查看当前机器执行的所有进程
1.2.1. 查看所有应用的情况
pm2 list 1.2.2. 查看某一个应用的情况
# pm2 show app_name|app_id
pm2 show 0pm2 show hbbuild_gq# pm2 describe app_name|app_id
pm2 describe 0pm2 describe hbbuild_gq1.3. 重启、停止、删除
1.3.1. 重启
# pm2 show app_name|app_id|app.ks
pm2 restart hbbuild_gq.jspm2 restart hbbuild_gqpm2 restart 01.3.2. 停止
#停止特定的应用。可以先通过pm2 list获取应用的名字--name指定的或者进程id。pm2 stop app_name|app_id#如果要停止所有应用可以pm2 stop all1.3.3. 删除
# 删除某一个应用
pm2 delete app_name|app_id# 删除所有的应用
pm2 delete all1.4. 日志
pm2 log 01.4.1 查看最新的日志
pm2 logs 0 --lines --raw # 例如 pm2 logs 0 --lines 31.5. 负载均衡
命令如下表示开启三个进程。如果-i 0则会根据机器当前核数自动开启尽可能多的进程。
pm2 start hbbuild_gq.js -i 3 # 开启三个进程
pm2 start hbbuild_gq -i max # 根据机器CPU核数开启对应数目的进程1.6. 内存使用超过上限自动重启
如果想要你的应用在超过使用内存上限后自动重启那么可以加上--max-memory-restart参数。有对应的配置项
pm2 start hbbuild_gq.js --max-memory-restart 20M1.7. 保存/冻结进程
在重新启动时保存/冻结进程列表
pm2 save2. 总结
微服务平台总是表现为多个服务多个机器分布式运行资源和算力拓展了管理等复杂度提升了。 可能两个服务登录不同机器查看日志还容易当服务到达成百上千的时候问题就很明显。 所以我们需要孵化像pm2这样的工具提供下面的便利 开发和运维上的便利
无缝接入服务管理
这个对NodeJS应用来说几乎是神器pm2 原生地支持了应用程序管理提供了命令管理查看用户应用。 举Springboot开发的微服务平台为例开发应用的同学需要引入SpringCloud等组件进行服务发现注册到注册中心。本人也使用过春天全家桶来制作微服务平台再简化还得定制一个通用SpringBoot Starter理念也是类似的
统一管理日志工作台
特别是在微服务环境下多个服务使用pm2 monit可以很方便的一个monit工作台切换微服务日志。大型平台那就需要做日志搜索了比较成百上千个服务在pm2 monit窗口切换也不现实这也是pm2缺少的地方 不过pm2还有一个在线版的Keymetics 做专业微服务平台监控管理的工作台收费。
更容易的应用弹性伸缩
上面启动后台服务的时候加了一个-i参数指定数量就能启动多worker服务。 虽然在NodeJS中还是单进程多线程但是这个参数化实例拓展这个设计是很有指导意义的
服务启动/恢复操作的封装原子性
我们使用pm2 start/stop appname即可而非开发进入多个应用目录手动打node app.js。再者pm2会常驻应用保证应用不掉线这个设计也是值得参考。