文中已经参与「」
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.js
和pm2 start index2.js
各自运行这两个个程序流程
当然如果想特定过程名称要这样: pm2 start -n test index.js
,如果你想要监视文档修改能加--watch
等
浏览http://localhost:3000/
实行pm2 log
能够看见大家打印日志
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 个进程
当然如果想特定是多少进程能直接将 max 改为你想要开的连接数 pm2 start index -i 3
环境变量
上边的事例我们是使用命令行进行监管的,那样其实蛮不便的,还好 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
,同样的我们的两个服务都已经被开启了
接下来例举一些配置项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 下
pm2 带有的日志作用并不是适用日志分离的。随着时间推移,日志文档就会越大,不仅影响特性,中后期查找问题也十分不便,因而我们应该对日志分割。日志切分实际操作非常简单,只需要安装pm2-logrotate
软件就可以,留意欢迎来到 pm2 install
pm2 install pm2-logrotate
随后实行 pm2 conf 能够看见有关配备
解释一下有关含意
-
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
于是就会发觉我们自己的日志被切分了
汇总
pm2针对node提供服务的监督是十分方便的,文中提到的仅仅是一部分,如果你想要应用pm2管理方法你服务项目的话也可以到官方网站pm2.io/ 开展学习
本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!点赞收藏点击关注,咱们就是朋友!!!