【运维】PM2入门

PM2

一、PM2作用

  • 进程守护,系统崩溃自动重启
  • 启动多线程,充分利用CPU和内存
  • 自带日志记录功能

二、 安装

npm install pm2 -g
pm2 --version

三、快速使用

简单的启动一个文件,使用pm2 start命令
例如:

pm2 start index.js

在npm项目中,可以在package.json的script脚本中加入pm2 start命令,
例如:

{
  "name": "pm2-test",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "cross-env NODE_ENV=dev nodemon app.js",
    "prd": "cross-env NODE_ENV=production pm2 start app.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cross-env": "^5.2.0",
    "nodemon": "^1.18.9"
  }
}

然后就会发现,项目跑起来了,且控制台的控制权空置出来了。
在这里插入图片描述

四、常用命令

pm2 start <FileName>/<ConfigName>              		# 可以跟文件,或者配置文件
pm2 list											# 可以看到进程列表
pm2 restart <AppName>/<id>							# 手动重启
pm2 stop <AppName>/<id>								# 停止进程
pm2 delete <AppName>/<id>							# 删除进程
pm2 info <AppName>/<id>								# 查看基本信息
pm2 log <AppName>/<id>								# 日志
pm2 monit <AppName>/<id>							# 当前进程cpu、内存信息

五、日志功能

我们直接在代码里面加入console.log或者console.error
在这里插入图片描述
然后重启一下pm2进程,并查看log日志

pm2 restart app
pm2 log app

在这里插入图片描述
可以看到pm2已经为我们创建了两个日志文件 app-out.log和app-error.log。
此时继续访问服务,控制台会实时打印出新的日志
在这里插入图片描述
同理我们可以使用cat命令直接进入这两个文件查看日志。

使用

pm2 monit

也可以进入性能监测的页面,看到日志记录,我们也可以在打开这个页面的时候去访问服务,进行调试。

在这里插入图片描述

六、进程守护

为了模拟程序出错,pm2自动重启,我们修改一下测试代码
在这里插入图片描述
在里面加入了一个抛错的逻辑,并触发。
在这里插入图片描述
明显可以在日志中看到出现了错误信息,但是重新访问正确的url,会发现服务依然正常,这就是pm2出现错误后给我们自动重启。

七、配置

我们可以先看一下当前app这个进程的默认设置,使用pm2 info app命令
在这里插入图片描述

在项目目录中加入
pm2.conf.json

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

然后修改package.json中的执行脚本,使用pm2 start执行配置文件

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "cross-env NODE_ENV=dev nodemon app.js",
    "prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json"
  },

停止并删除原来的app进程

pm2 stop app
pm2 delete app

npm run prod启动新的脚本命令
在这里插入图片描述
进程名字已经修改了
在这里插入图片描述
日志的格式也发生了改变,配置文件已经生效。

八、多进程

多进程启动可以有效利用服务器内存以及多核cpu。只需要在pm2配置文件中加入instance的配置,对应的值是希望开启的线程的个数。
pm2.conf.json

{
    "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"
    }
}

再次删除之前的进程,重新开启进程,会发现现在一个项目被分到多个进程执行
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值