深入浅析Node的进程管理工具“pm2”

本篇文章给大家分享node的进程管理工具“pm2”,聊聊为什么需要pm2、安装和使用pm2的方法,希望对大家有所帮助!

深入浅析Node的进程管理工具“pm2”

PM2简介

PM2是一个内建了负载均衡器的node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。当你要把你的独立代码利用全部的服务器上的所有 CPU,并保证进程永远都活着,0 秒的重载, PM2 是完美的。

PM2官网地址:https://pm2.keymetrics.io/docs/usage/quick-start/

为什么需要pm2?

目前Nodejs开发中有很多痛点,因为node本身是一个单线程应用,它的特点就是所有方法都是串行一次执行,并且node并没有能力像Java一样独自去创建一个新的线程来实现异步操作,如果在执行I/O中遇到了阻塞就会降低整个应用的执行效率,导致CPU使用率高等不利原因。【相关教程推荐:nodejs视频教程、PM2简介

PM2是一个内建了负载均衡器的node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。当你要把你的独立代码利用全部的服务器上的所有 CPU,并保证进程永远都活着,0 秒的重载, PM2 是完美的。

PM2官网地址:https://pm2.keymetrics.io/docs/usage/quick-start/

为什么需要pm2?

目前Nodejs开发中有很多痛点,因为node本身是一个单线程应用,它的特点就是所有方法都是串行一次执行,并且node并没有能力像Java一样独自去创建一个新的线程来实现异步操作,如果在执行I/O中遇到了阻塞就会降低整个应用的执行效率,导致CPU使用率高等不利原因。【相关教程推荐:nodejs视频教程】

因此在这种模式下,一个线程只能处理一个任务,要想提高吞吐量必须通过多线程。虽然单线程的好处有很多比如避免了线程同步或者死锁、状态同步等等之类的问题,但是在应用和计算能力要求日益倍增的今天,单线程最大的弊端就是无法利用多核CPU带来的优势来提升运行效率。pm2可以把你的应用部署到服务器所有的CPU上,有效的解决这个问题

PM2简介

PM2是一个内建了负载均衡器的node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。当你要把你的独立代码利用全部的服务器上的所有 CPU,并保证进程永远都活着,0 秒的重载, PM2 是完美的。

PM2官网地址:https://pm2.keymetrics.io/docs/usage/quick-start/

为什么需要pm2?

目前Nodejs开发中有很多痛点,因为node本身是一个单线程应用,它的特点就是所有方法都是串行一次执行,并且node并没有能力像Java一样独自去创建一个新的线程来实现异步操作,如果在执行I/O中遇到了阻塞就会降低整个应用的执行效率,导致CPU使用率高等不利原因。【相关教程推荐:nodejs视频教程!

深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”深入浅析Node的进程管理工具“pm2”

// npmnpm install -g pm2 // yarnyarn global add pm2

登录后复制

// 启动命令pm2 start app.js // 启动nodeJs应用,进程的默认名称为文件名apppm2 start app.js--name mynode // 启动node,并指定进程名称为mynodepm2 start app.js - i max // 根据有效CPU数目启动最大进程数目pm2 start app.js - i 3 // 启动3个进程pm2 start app.js--watch // 实时监控的方式启动,app.js文件有变动时,pm2会自动reloadpm2 start app.js - x // 用fork模式启动 app.js 而不是使用 clusterpm2 start app.js - x– - a 23 // 用fork模式启动 app.js 并且传递参数(-a 23)pm2 start app.json // 启动进程, 在app.json里设置选项pm2 start app.js - i max– - a 23 // 在 – 之后给 app.js 传递参数pm2 start app.js - i max - e err.log - o out.log // 启动并生成一个配置文件 // 查看与监视进程pm2 list | pm2 ls // 显示所有进程;pm2 show 0 | pm2 info 0 // 查看进程id为0的详细信息pm2 monit // 进入监视页面,监视每个node进程的CPU和内存的使用情况 // 停止、删除进程pm2 stop 0 // 停止id为0的进程pm2 stop all // 停止所有进程pm2 delete 0 // 删除id为0的进程pm2 delete all // 删除所有进程 // 重启、重载pm2 restart 0 // 重启id为0的进程pm2 restart all // 重启所有进程pm2 reload 0 // 0秒停机重载id为0进程(用于 NETWORKED 进程)pm2 reload all // 重载所有进程 // 日志操作pm2 logs // 显示所有进程的日志pm2 logs 0 // 显示进程id为0的日志pm2 flush // 清空所有日志文件pm2 reloadLogs // 重载所有日志pm2 startup // 产生init脚本,保持进程活着 // 杀死PM2进程pm2 kill

登录后复制

pm2 start index.js --name newApp

登录后复制

// 文件名为 pm2.config.jsmodule.exports = {    apps: [{        name: "newApp", // 应用名称        script: "./index.js" // 入口文件    }]}

登录后复制

pm2 start pm2.config.js

登录后复制

pm2 ecosystem

登录后复制

module.exports = {  apps : [{    script: 'index.js',    watch: '.'  }, {    script: './service-worker/',    watch: ['./service-worker']  }],   deploy : {    production : {      user : 'SSH_USERNAME',      host : 'SSH_HOSTMACHINE',      ref  : 'origin/master',      repo : 'GIT_REPOSITORY',      path : 'DESTINATION_PATH',      'pre-deploy-local': '',      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',      'pre-setup': ''    }  }};

登录后复制

pm2├── demo1    └── project1|       ├── index.js|       └── node_modules└── demo2    ├── ecosystem.config.js    ├── project2    │   ├── index.js    │   └── node_modules    └── project3        ├── index.js        └── node_modules

登录后复制

'use strict'const Koa = require('koa')const app = new Koa()const PORT = 8001 // 三个项目分别为 8001,8002,8003app.use(ctx => {    ctx.body = {        NODE_ENV: process.env.NODE_ENV,        url: ctx.url,        port: PORT,    }})app.listen(PORT)

登录后复制

module.exports = {    apps: [{        cwd: '../demo2/project2',        name: 'project2',        script: 'index.js',        watch: ['.']    },        cwd: '../demo2/project3',        name: 'project3',        script: 'index.js',        watch: ['.']    }]}

登录后复制

pm2 start 0 --watch --ignore-watch './logs'

登录后复制

pm2 start index.js --log ./logs/mylog.log

登录后复制

以上就是深入浅析Node的进程管理工具“pm2”的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2631304.html

(0)
上一篇 2025年3月7日 03:58:07
下一篇 2025年3月7日 03:58:19

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论