xinetd可视化工具,它可以帮你守卫及管理你应用程序

lxf2023-12-18 07:50:01

文中已经参与「」

pm2 是啥

pm2 是一个xinetd可视化工具,它可以帮你守卫及管理你应用程序。一般一般会在服务项目发布的时候用 pm2 进行监管。pm2 能做的事情其实还有很多,例如监视文档修改重启,统一管理好几个过程,内置web服务,日志系统软件等,下面让我们看看 pm2 是怎样应用吧

pm2 基本上指令

首先我们要先建立一个简单的 node 服务项目,加密文件夹实行npm init,随后装 pm2

npm i pm2 -g

新创建 index.js 和 index2.js,写两个简单 http 服务项目,随后用 pm2 进行监管

//index.js
let http = require("http");
let server = http.createServer();
server.on("request", function (req, res) {
  console.log("------------------enter");
  res.write("hello juejin");
  res.end();
});

server.listen(3000, function () {
  console.log(`服务器启动取得成功,根据http://localhost:3000/开展浏览`);
});
//index2.js
let http = require("http");
let server = http.createServer();
server.on("request", function (req, res) {
  console.log("------------------enter2");
  res.write("hello juejin2");
  res.end();
});

server.listen(3001, function () {
  console.log(`服务器启动取得成功,根据http://localhost:3001/开展浏览`);
});

下面我们将采用 pm2 的第一个指令: pm2 start index.jspm2 start index2.js 各自运行这两个个程序流程

xinetd可视化工具,它可以帮你守卫及管理你应用程序

当然如果想特定过程名称要这样: pm2 start -n test index.js,如果你想要监视文档修改能加--watch

浏览http://localhost:3000/

xinetd可视化工具,它可以帮你守卫及管理你应用程序

实行pm2 log能够看见大家打印日志

xinetd可视化工具,它可以帮你守卫及管理你应用程序

pm2 的指令还有一些,接下来例举好多个

  • 终止 1 个/好几个/所有应用 pm2 stop id/id1 id2 id3/all
  • 杀掉 1 个/好几个/所有应用 pm2 delete id/id1 id2 id3/all
  • 重新启动 1 个/好几个/所有应用 pm2 restart id/id1 id2 id3/all
  • 运行并查询日志 pm2 start api.js --attach
  • 列举应用软件 pm2 list
  • 调取监控控制面板 pm2 monit
  • 查询程序流程数据信息 pm2 show [id]

web服务

众所周知 NodeJS 是一个多线程单核语言表达,假若没有任何解决立即部署到服务器上,那它也必须使用云服务器一个进程,那样是很消耗特性的。

应用 pm2 仅需一个指令就能够让我们程序灵活运用云服务器 CPU,拿 index.js 为例子:pm2 start index -i max,例如电脑是 10 核 20 进程,它就会开 20 个进程

xinetd可视化工具,它可以帮你守卫及管理你应用程序

当然如果想特定是多少进程能直接将 max 改为你想要开的连接数 pm2 start index -i 3

xinetd可视化工具,它可以帮你守卫及管理你应用程序

环境变量

上边的事例我们是使用命令行进行监管的,那样其实蛮不便的,还好 pm2 带来了环境变量的方式

大家直接用指令pm2 init simple就可以形成一个简单的环境变量ecosystem.config.js,修改一下使它偏向我们自己的两个服务

module.exports = {
  apps: [
    {
      name: "index",
      script: "./index.js",
    },
    {
      name: "index2",
      script: "./index2.js",
    },
  ],
};

随后我们将要原来的过程都 kill 掉,实行pm2 start ecosystem.config.js,同样的我们的两个服务都已经被开启了

xinetd可视化工具,它可以帮你守卫及管理你应用程序

接下来例举一些配置ecosystem.config.js

module.exports = {
  apps: [
    {
      name: "index", //name
      script: "./index.js", //相较于pm2 start 的绝对路径
      cwd: "", //要运行应用程序的文件目录
      instances: 2, //要运行案例的总数,便是前面提到的负荷
      watch: true, //是不是运行监视
      env: { NODE_ENV: "development" }, //将会出现在你应用程序里的 env 自变量
      env_xxx: {
        NODE_ENV: "xxx", //应用pm2引入xxx自变量开展转换
      },
      log_date_format: "YYYY-MM-DD HH:mm Z", //日志日期格式
      error_file: "./log/index-error.log", //不正确目标文件夹
      out_file: "./log/index-out.log", //导出日志目标文件夹
      max_restarts: 10, //较大重新启动数
      restart_delay: 4000, //重新启动响应时间ms
      autorestart: true, //是不是重启
      cron_restart: "", //定时执行 应用cron关系式
    },
    {
      name: "index2",
      script: "./index2.js",
    },
  ],
};

日志

日志针对后面清查不正确是很重要的,pm2 内置日志作用,就像我们在墙上环境变量中配备了日志有关参数值

log_date_format: "YYYY-MM-DD HH:mm Z", //日志日期格式
error_file: "./log/index-error.log", //不正确目标文件夹
out_file: "./log/index-out.log", //导出日志目标文件夹

在我们运行项目时,日志便会保存在 log 下

xinetd可视化工具,它可以帮你守卫及管理你应用程序

pm2 带有的日志作用并不是适用日志分离的。随着时间推移,日志文档就会越大,不仅影响特性,中后期查找问题也十分不便,因而我们应该对日志分割。日志切分实际操作非常简单,只需要安装pm2-logrotate软件就可以,留意欢迎来到 pm2 install

pm2 install pm2-logrotate

随后实行 pm2 conf 能够看见有关配备

xinetd可视化工具,它可以帮你守卫及管理你应用程序

解释一下有关含意

  • Compress:能否通过 gzip 缩小日志

  • max_size:单独日志文件信息尺寸

  • retain:保存的日志文档数量

  • dateFormat:日志文件夹名称里的日期文件格式,默认设置是 YYYY-MM-DD_HH-mm-ss

  • rotateModule:是不是把 pm2 自身的日志也分割,

  • workerInterval:查验文档时长间隔

  • rotateInterval:设定强制性切分,初始值是 0 0 * * *,指的是每晚 0 点切分,这儿采用的是 corn 关系式,我不会的能够搜索一下

假如他们想要配备很简单,例如改动 max_size

pm2 set pm2-logrotate:max_size 1K

最后我们简单测试一下这个专用工具,我们首先设定每一个 log 文档较大 1kb

随后重新启动我们自己的新项目

pm2 restart ecosystem.config.js

于是就会发觉我们自己的日志被切分了

xinetd可视化工具,它可以帮你守卫及管理你应用程序

汇总

pm2针对node提供服务的监督是十分方便的,文中提到的仅仅是一部分,如果你想要应用pm2管理方法你服务项目的话也可以到官方网站pm2.io/ 开展学习

点赞收藏点击关注,咱们就是朋友!!!

本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!