pm2管理nodejs进程

  PM2(process manage 2)是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、根据文件是否发生变化自动重启、负载均衡等。

pm2的安装:

D:\zhao\nodews>npm install -g pm2

安装完成之后,在用户的家目录下会有一个.pm2的目录,里面存放着pm2相关的文件:

│  module_conf.json
│  pm2.log
│  pm2.pid
│  touch
├─logs
│
├─modules
└─pids

随便的一个nodejs进程,比如有个a.js:

var http = require('http');  
var server=http.createServer(function (request, response) {  
	response.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});  
	if(request.url=="/"){
		response.end("首页");
	}else if(request.url=="/login"){
		response.end("登录");
	}else if(request.url=="/users"){
		response.end("列出用户列表");
	}else{
		response.end("访问地址不存在");
	}
});
server.listen(8888);  
// 终端打印如下信息  
console.log('正在监听8888端口');

我们知道要想运行这个小小的nodejs服务器,只需要执行命令"node a"就可以了。如何使用pm2来监控nodejs程序呢?

只需要在启动的时候把"node a.js"替换为"pm2 start a.js"就可以了。

D:\zhao\nodews>pm2 start a.js --watch

执行命令结果如下:

image.png

访问http://localhost:8888/login可以看到可以正常提供服务(如下图),就这样我们的小小程序a.js就已经处在pm2的监控之中了。

image.png

其他pm2的常用命令:

一、pm2 start xx options:

上面我们看到我们再启动pm2的时候(pm2 start a.js --watch)加了"--watch"参数,它的作用是监听当前目录下文件的变化,当由文件发生变化时,自动重启服务(这里是a.js)。除了--watch参数,还有其他的参数:

--watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。

-i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。

--ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。

-n --name:应用的名称。查看应用信息的时候可以用到。

-o --output <path>:标准输出日志文件的路径。

-e --error <path>:错误输出日志文件的路径。

二、重启

D:\zhao\nodews>pm2 restart a.js

三、列出所有被pm2管理的nodejs进程

D:\zhao\nodews>pm2 list
┌──────┬──────┬────────┬───┬─────┬──────
─────┐
│ Name │ mode │ status │ ↺ │ cpu │ memory    │
├──────┼──────┼────────┼───┼─────┼──────
─────┤
│ a    │ fork │ online │ 1 │ 0%  │ 29.7 MB   │
└──────┴──────┴────────┴───┴─────┴──────
─────┘
 Use `pm2 show <id|name>` to get more details about an app

D:\zhao\nodews>

四、停止

pm2 stop a

五、从pm2管理列表中移出

pm2 delete a

六、查看某个进程的详细信息

D:\zhao\nodews>pm2 show a

image.png

pm2的配置文件

前边说了使用pm2来监控nodejs的进程,提到了在命令行可以加的参数,当需要加的参数比较多的时候,就显得有些累赘,更何况,每次都写这么多的参数,很累,因此,把相关的配置写在配置文件里面就显得尤为必要。

使用pm2 ecosystem可以生成一个示例模板文件:

D:\zhao\nodews>pm2 ecosystem
File D:\zhao\nodews\ecosystem.config.js generated

生成的是个js文件,我们一般把它重命名为ecosystem.json或者processes.json来使用,现在我就重命名为processes.json,修改它的内容,最终修改好之后如下:

{
   "apps":[{
      "name":"test_a",//应用名称
      "max_memory_restart": "1024M",//最大内存占用量
      "script":"a.js",//实际启动脚本
      "cwd":"./",//当前工作路径
      "watch":[//监控变化的目录,一旦变化自动重启
         "dist",
         "distdir",
         "public"
      ],
      "ignore_watch":[//从监控目录中排除
         "node_modules"
      ],
      "error_file":"./logs/app-err.log",//错误日志路径
      "out_file":"./logs/app-out.log",//普通日志路径
      "log_date_format":"YYYY-MM-DD HH:mm Z"//日志日期格式
   }]
}

原先的启动方式是 pm2 start a.js ,配置好之后,我们就可以这样启动了:

 pm2 start processes.json

启动成功之后如下:

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值