nodejs 个人学习笔记(imook)pm2

微信扫一扫,分享到朋友圈

nodejs 个人学习笔记(imook)pm2

11.1 pm2

线上环境:

  • 服务器稳定性(用户不管怎么操作,服务都不能挂,出了错,也不能影响其他功能的使用)
  • 充分利用服务器硬件资源,以便提高性能 (充分利用服务器的硬件资源)
  • 线上日志记录( 自定义日志操作日志access-log访问日志

PM2 进程守护

  • 系统崩溃自动重启
  • 多进程,充分利用资源
  • 自带日志记录功能
// package.json
"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"
},

11.2 常用命令

pm2 start
pm2 list
pm2 restart name/id //  上图为例:pm2 restart 1
pm2 stop/delete 1
pm2 info 1
pm2 log 1
pm2 monit 1

11.3 进程守护

  • node app.js 和nodemon app.js 进程崩溃,不能访问
  • pm2 遇到进程崩溃,会自动重启(如下图)

11.4 配置项

  • 新建PM2配置文件(包括进程数量,日志文件目录等)
  • 修改PM2 启动命令,重启
  • 访问server,检查日志文件的内容(日志记录是否生效)
{
"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_date_format": "YYYY-MM-DD HH:mm:ss" // 每条日志加一个时间戳
}
}
"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.config.json"
},

文件中被写入日志:point_down::

11.5 多进程

单个进程内存受限,操作系统会限制进程的最大可用内存。

  • 操作系统限制一个进程的内存
  • 内存:无法充分利用机器全部内存
  • CPU:无法充分利用多核CPU的优势
    package.json 添加 "instances": 4,

微信扫一扫,分享到朋友圈

nodejs 个人学习笔记(imook)pm2

分布式锁用 Redis 还是 Zookeeper?

上一篇

如何将数亿 MySQL 数据无缝迁移到 MongoDB?

下一篇

你也可能喜欢

nodejs 个人学习笔记(imook)pm2

长按储存图像,分享给朋友