线上环境
服务器稳定性
充分利用服务器硬件资源,以便提高性能
线上日志记录
PM2
进程守护,系统崩溃自动重启
启动多进程,充分利用CPU和内存
自带日志记录功能
PM2介绍
下载安装
npm install pm2 -g
pm2 --version
基本使用
package.json里“scripts”
下加
“prd”:"cross-env NODE_ENV=production pm2 start app.js"
express, koa
“prd”:"cross-env NODE_ENV=production pm2 start bin/www"
然后
npm run prd
常用命令
pm2 start ... //...可以是配置文件,入口文件
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信息
restart属性次数会累计。
pm2 info <AppName>/<id>
script path属性就是代码路径,还可以看日志存储路径、node env、node.js version
和nodemon的区别:pm2后台运行,nodemon前台运行
PM2进程守护
node app.js 和nodemon app.js,进程崩溃则不能访问
pm2遇到进程崩溃,会自动重启
PM2配置和日志记录
配置
新建PM2配置文件(包括进程数量,日志文件目录等)
pm2.conf.json文件内容
{
"apps": {
"name": "pm2-test-server",
"script": "app.js",
"watch": true,
"ignore_watch": [
"node_modules",
"logs"
],
"instances": 4,//nginx改一下
"error_file": "logs/err.log",
"out_file": "logs/out.log",
"log_date_format": "YYYY-MM-DD HH:mm:ss"
}
}
新建logs文件夹,logs文件夹下建err.log和out.log文件。
修改PM2启动命令,重启
访问server, 检查日志文件的内容(日志记录是否生效)
PM2多进程
为何使用多进程
操作系统限制一个进程的内存
内存:无法充分利用机器全部内存
CPU:无法充分利用多核CPU的优势
多进程和redis
多进程通过redis在进程之间共享数据
多进程之间,内存无法共享
多进程访问一个redis,实现数据共享
负载均衡的运算规则
关于服务器运维
服务器运维,一般由专业的OP人员和部门来处理
大公司都有自己的运维团队
中小型公司推荐用云服务,如阿里云的node平台
总结
PM2的核心价值:进程守护,多进程启动,线上日志记录
PM2的常用命令和配置,日志记录
多进程