pm2

 
1、下载安装
    npm install pm2 -g
    pm2 --version
 
2、基本使用
"prd": "cross-env NODE_ENV=production pm2 start index.js"
 执行npm run prd。执行完之后如图

第一个特点是程序已经起来了,第二个是不会占用终端。控制台已经交还给我们,可以用了。

输出一个表,名字是启动的js名字,id是当前列表标示,后面版本,mem内存占了11.7M,现在只有一个list
可以通过pm2 list看到当前列表
 
3、常用命令
    pm2 start  后面可以跟要启动的js,也可以跟配置文件
    pm2 list 看到pm2的进程列表
    pm2 restart <AppName>/<id> 后面接app name或者id,这个就是列表里面的Name和id
    pm2 stop <AppName>/<id> 停止某个进程,还可以重新启动起来
    pm2 delete <AppName>/<id> 删除某个进程,删除之后就没了,跟stop有区别
    pm2 info <AppName>/<id> 查看基本信息
    pm2 log <AppName>/<id> 查看日志,打印处理
    pm2 monit <AppName>/<id> 监控到进程的cpu和信息



pm2进程守护
    用node app.js或者nodemon app.js, 进程崩溃则不能访问
    pm2遇到进程奔溃,会自动重启。这是pm2最核心的价值之一
    为何使用多进程
        1、操作系统会限制一个进程的最大可用内存。单个进程内存受限
        2、如果只有一个进程,无法充分利用机器的全部内存
        3、如果只有一个进程,无法充分利用多核cpu的优势
    多进程和redis
        使用多进程会带来一个问题,就是多个进程,内存是无法共享的。所以通过共享redis,实现数据共享



pm2配置和日志记录
pm2.conf.json
{
    "apps": {
        // 这个写完之后再去运行,这个名字会显示在Name列
        "name": "pm2-test-server",
        // 启动的文件,如果是koa2,要写成bin/www
        "script": "index.js",
        // 监听文件变化,自动重启,这里的true or false取决于自己的判断,比如代码发布后,是否要自动重启,一般是false
        "watch": true,
        // 文件变化自动重启,有哪些是不需要监听的
        "ignore_watch": [
            "node_modules",
            "logs"
        ],
        // 设置多进程的
        "instances": 4,
        // 错误日志放在logs/err.log文件下
        "error_file": "logs/err.log",
        // console.log打印的放在logs/out.log文件下
        "out_file": "logs/out.log",
        // 日志每一行都要标志一个时间
        "log_date_format": "YYYY-MM-DD HH:mm:ss"
    }
}
然后package的启动方式改成
"prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json",
原文地址:https://www.cnblogs.com/wzndkj/p/11631221.html