PM2的常用配置,进程守护,常用命令

在这里插入图片描述pm2的安装

npm install pm2 -g

pm2 -version //看版本号

初始化项目,pm2启动

在项目文件夹中安装nodemon和cross-env

npm install --save-dev nodemon

npm i cross-env --save-dev --registry=https://registry.npm.taobao.org

配置package.json文件

 "dev" :"cross-env NODE_ENV=dev nodemon app.js",
 "prd" :"cross-env NODE_ENV=production pm2 start app.js"

在这里插入图片描述
app.js写入下代码尝试运行

const http = require('http')

const server =http.createServer((req,res)=>{
    res.setHeader('Content-type','application/json')
    res.end(
        JSON.stringify({
            errno:0,
            msg:'pm2 test serber 1'
        })
    )
})

server.listen(3000,()=>{
    console.log('running...')
})
npm run prd 运行

PM2常用命令

pm2 start ..//start后面可以跟一个配置文件或其他形式

pm2 list //看控制台的进程列表

pm2 restart+进程id或者进程名 //重启进程

pm2 stop  + 进程id或者进程名 //停用

pm2 delete +进程id或者进程名 //删除

pm2  info +进程id或者进程名//查看基本信息

pm2 log  +进程id或者进程名?/看日志打印()

pm2 monit +进程id或者进程名//进程信息

进程守护

在这里插入图片描述
在先前的代码中,插入下列代码检测进程守护功能


    if(req.url ==='/err'){
        throw  new Error('/err 出错了')
    }

当你访问http://127.0.0.1:3000/err是cmd窗口报错,但是pm2又会重新启动进程

PM2的常用配置

{
    "apps": {
        "name": "pm2-test-server",
        "script": "app.js",
        "watch": true,
        "ignore_watch": [
            "node_modules",
            "logs"
        ],
        "instances": 4,
        "error_file": "logs/err.log",
        "out_file": "logs/out.log",
        "log_date_format": "YYYY-MM-DD HH:mm:ss"
    }
}

对配置的解释

"watch" :true,监听文件变化

"ignore_watch":[
            "node_modules",
            "logs"
        ],
  "error_file":"logs/err.log", 
        "out_file":"logs/out.log",
        
这个是标注那些不用监听
"instances": 4,
多进程:同时处理4个进程

  "error_file":"logs/err.log", 
        "out_file":"logs/out.log",
将日志放入两个自定义的文件,这两个文件是自己建的

 "log_data_format":"YYYY-MM-DD HH:mm:ss" 
 加入时间格式


将以前的package.json的这行改一下
在这里插入图片描述

多进程

在这里插入图片描述

如果你将"instances": 8,你npm run dev 就会出现下列情况
前提是你的计算机cpu是8核的
在这里插入图片描述
而且你的日志文件也会有8对

发布了159 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43342105/article/details/105136008