pm2


pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能。

开发过程中建议时不时的参看官方详细命令行使用:命令行

pm2文档

pm2的安装与使用


安装

npm install -g pm2

需要全局安装

启动进程/应用

pm2 start bin/www
[PM2] Starting E:\zz\zz_wb123\manage\trunk\back-end\bin\www in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ www │ 0 │ fork │ 3468 │ online │ 0 │ 0s │ 6% │ 11.4 MB │ disabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

进程/应用重命名

pm2 start app.js --name wb123

添加进程/应用watch

 pm2 start bin/www --watch

watching变成了enabled

[PM2] Applying action restartProcessId on app [www](ids: 0)
[PM2] [www](0) ✓
[PM2] Process successfully started
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ www │ 0 │ fork │ 7852 │ online │ 0 │ 0s │ 6% │ 15.4 MB │ enabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

注意:我们也可以通过配置文件来配置监视。

{
"watch": ["server", "client"], //要监视的文件
"ignore_watch" : ["node_modules", "client/img"], //不监视的文件
"watch_options": { //监视配置
"followSymlinks": false
}
}

watch:可以是布尔值,数组,默认是:false。

停止监视:

pm2 stop --watch 0

结束进程/应用

pm2 stop www

结束所有进程/应用

pm2 stop all

删除进程/应用

pm2 delete www
 $  pm2 delete www
[PM2] Applying action deleteProcessId on app [www](ids: 0)
[PM2] [www](0) ✓
┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

删除所有进程/应用

pm2 delete all

列出所有进程/应用

pm2 list
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬──────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼──────┼───────────┼──────────┤
│ app │ 1 │ fork │ 6676 │ online │ 6 │ 0s │ 111% │ 35.3 MB │ enabled │
│ www │ 0 │ fork │ 2796 │ online │ 0 │ 27s │ 0% │ 40.3 MB │ enabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴──────┴───────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

查看某个进程/应用具体情况

pm2 describe www
 Describing process with id 0 - name www
┌───────────────────┬──────────────────────────────────────────────────┐
│ status │ online │
│ name │ www │
│ restarts │ 0 │
│ uptime │ 111s │
│ script path │ E:\zz\zz_wb123\manage\trunk\back-end\bin\www │
│ script args │ N/A │
│ error log path │ C:\Users\Administrator\.pm2\logs\www-error-0.log │
│ out log path │ C:\Users\Administrator\.pm2\logs\www-out-0.log │
│ pid path │ C:\Users\Administrator\.pm2\pids\www-0.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 0 │
│ exec cwd │ E:\zz\zz_wb123\manage\trunk\back-end │
│ exec mode │ fork_mode │
│ node.js version │ 4.4.5 │
│ watch & reload │ ✔ │
│ unstable restarts │ 0 │
│ created at │ 2016-12-22T05:19:44.067Z │
└───────────────────┴──────────────────────────────────────────────────┘
Code metrics value
┌────────────┬────────┐
│ Loop delay │ 0.01ms │
└────────────┴────────┘
Add your own code metrics: http://bit.ly/code-metrics
Use `pm2 logs www [--lines 1000]` to display logs
Use `pm2 monit` to monitor CPU and Memory usage www

查看进程/应用的资源消耗情况

pm2 monit
⌬ PM2 monitoring (To go further check out https://app.keymetrics.io)

 ● www                                [                              ] 0 %
[0] [fork_mode] [||||||| ] 41.945 MB ● app [ ] errored
[1] [fork_mode] [ ] 0 B

重新启动进程/应用

//pm2 reset [app-name]
pm2 restart www
 $  pm2 restart www
Restarts are now immutable, to update environment or conf use --update-env
[PM2] Applying action restartProcessId on app [www](ids: 0)
[PM2] [www](0) ✓
┌──────────┬────┬──────┬──────┬─────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├──────────┼────┼──────┼──────┼─────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ app │ 1 │ fork │ 0 │ errored │ 15 │ 0 │ 0% │ 0 B │ enabled │
│ www │ 0 │ fork │ 3316 │ online │ 1 │ 0s │ 4% │ 11.2 MB │ enabled │
└──────────┴────┴──────┴──────┴─────────┴─────────┴────────┴─────┴───────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

如要重新启动所有进程/应用,使用

pm2 restart all

配置文件


我们也可通过在项目根目录下添加pm2的一个json的配置文件来控制我们的应用。

{
"name": "manage", //项目名称
"script": "./bin/www", //要执行的脚本
"cwd":"./", //项目所在目录
"watch":[ //添加受监控的文件,以便自动更新
"models",
"routes"
]
}

启动后:

# pm2 list
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ manage │ 0 │ fork │ 9791 │ online │ 2 │ 46m │ 0% │ 95.3 MB │ enabled │

pm2模式


修改模式

默认启动的是fork模式,修改成集群模式

$ pm2 start  app.js -i max

配置文件配置

我们也可以通过配置文件配置模式

{
"apps" : [{
"script" : "app.js",
"instances" : "1",
"exec_mode" : "cluster"
}]
}

pm2日志


查看所有日志

pm2 logs

查看某个进程/应用的日志

//pm2 logs [app-name]
pm2 logs www
 $  pm2 logs www
[TAILING] Tailing last 10 lines for [www] process (change the value with --lines option)
C:\Users\Administrator\.pm2\logs\www-error-0.log last 10 lines:
C:\Users\Administrator\.pm2\logs\www-out-0.log last 10 lines:
0|www | 使用备用db配置
0|www | Listening on port 3000
0|www | 使用备用db配置
0|www | Listening on port 3000
0|www | 使用备用db配置
0|www | Listening on port 3000
0|www | 使用备用db配置
0|www | Listening on port 3000
0|www | 使用备用db配置
0|www | Listening on port 3000 [STREAMING] Now streaming realtime logs for [www] process

查看指定行数开始的日志

# pm2 logs manage --lines 10

json格式查看日志

# pm2 logs manage --json

日志的输出配置

{
"script" : "echo.js",
"error_file" : "err.log",
"out_file" : "out.log",
"merge_logs" : true,
"log_date_format" : "YYYY-MM-DD HH:mm Z"
}

合并日志

{
"log_file": "combined.outerr.log",
"out_file": "out.log",
"error_file": "err.log"
}

将错误文件与输出文件合并到combined.outerr.log中。

查看pm2的运行日志

# pm2 logs
[TAILING] Tailing last 10 lines for [all] processes (change the value with --lines option)
/root/.pm2/pm2.log last 10 lines:
PM2 | 2016-12-28 16:04:01: pid=26706 msg=process killed
PM2 | 2016-12-28 16:04:01: pid=30925 msg=process killed
PM2 | 2016-12-28 16:04:15: [Watch] Start watching 0
PM2 | 2016-12-28 16:04:15: Starting execution sequence in -fork mode- for app name:manage id:0
PM2 | 2016-12-28 16:04:15: App name:manage id:0 online
PM2 | 2016-12-28 16:07:06: Starting execution sequence in -fork mode- for app name:test_wb123 id:1
PM2 | 2016-12-28 16:07:06: App name:test_wb123 id:1 online
PM2 | 2016-12-28 18:14:26: Reloading logs...
PM2 | 2016-12-28 18:14:26: Reloading logs for process id 0
PM2 | 2016-12-28 18:14:26: Reloading logs for process id 1 /root/.pm2/logs/manage-out-0.log last 10 lines:
/root/.pm2/logs/manage-error-0.log last 10 lines:
/root/.pm2/logs/test-wb123-out-1.log last 10 lines:
/root/.pm2/logs/test-wb123-error-1.log last 10 lines:

这个我们就能找到pm2中的日志,以及我们为输出的日志,这很重要,对于排除莫名其妙的问题!

进入我们的.pm2的文件中。

[root@Zhaoqize 18:35 ~/.pm2]
# ls
dump.pm2 ecosystem.config.js logs module_conf.json pids pm2.log pm2.pid pub.sock rpc.sock touch

建议:去百度问题前,先看下日志情况,确定问题范围,然后stackoverflow

NodeJs之pm2的更多相关文章

  1. CentOS 7.4安装nodejs & nginx & pm2

    一.安装nodejs1.查看操作系统信息 uname -a cat /etc/centos-release 2.安装wget yum install wget -y3.安装nodejs 1.下载 wg ...

  2. ubuntu 下安装nodejs以及pm2

    ubuntu 12.04服务器可以使用apt-get方式安装Node JS,但是,安装完后的版本为v0.6.12的版本,如果我们想要使用新一点的版本需要做如下配置: 1 2 3 4 apt-get i ...

  3. 阿里云CentOS7.x安装nodejs及pm2

    对之前文章的修订 您将了解 CentOS下如何安装nodejs CentOS下如何安装NVM CentOS下如何安装git CentOS下如何安装pm2 适用对象 本文档介绍如何在阿里云CentOS系 ...

  4. nodejs之pm2自动重启服务

    pm2 start xxx #启动服务器 pm2 list #查看运行状态 pm2 logs #查看日志 pm2 restart xxx #重启应用 pm2 stop xxx #停止应用 监听修改,并 ...

  5. centos服务器升级nodejs, pm2

    突然抽风想升级服务器的nodejs版本,原服务器版本运行的8.x,而目前(2019年5月30日)nodejs官方最新版本已经更新到了12.x了,稳定版本也更新到了10.x. 然后就折腾了一把去升级服务 ...

  6. Jenkins 远程启动nodejs失败,使用pm2守护Nodejs

    一.概述 使用Jenkins 远程ssh到linux,使用命令: ssh root@192.168.10.1 'cd /data/test;nohup npm start &' 发现linux ...

  7. 将nodejs代码部署到阿里云服务器

    概述 最近在做一个小项目,其中用nodejs做了个数据转发的接口,之后需要将这部分代码部署到服务器上面,并使用Nginx做反向代理.期间使用搜索引擎大量查阅了其他同鞋的经验,不过写的大多很笼统,因此踩 ...

  8. 在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目

    发现一台服务器部署管理多个nodejs服务,可以采用二级域名weekly.mwcxs.top,也可以采用固定后缀www.mwcxs.top/weekly的方式,本文先从固定后缀的方式部署管理多个nod ...

  9. 使用 pm2 守护你的 .NET Core 应用程序

    一.守护进程的前世今生 守护进程,英文名:"daemon",也有守护神的意思.守护进程是一个在后台运行并且不受任何终端控制的进程,不会随着会话结束而退出.诸如 mysql.apac ...

随机推荐

  1. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  2. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

  3. sonn_game网站开发01:写在最前面

    之前做的个人博客项目,日向博客现在已经进入后期完善阶段了.是时候开始打造一个新坑了. 然而改造个什么坑呢?构思了好几天,想了好多方案,都觉得没啥动手欲望.因为,我想做的是那种,自己能用得上,而且有一定 ...

  4. BIOS中未启用虚拟化支持系列~~例如:因此无法安装Hyper-V

    异常处理汇总-服务器系列:http://www.cnblogs.com/dunitian/p/4522983.html 一般都是启动一下CUP虚拟化就可以了 比如华硕的:

  5. 协议森林17 我和你的悄悄话 (SSL/TLS协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...

  6. 快递Api接口 & 微信公众号开发流程

    之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...

  7. dagger2系列之依赖方式dependencies、包含方式(从属方式)SubComponent

    本篇是实战文章,从代码的角度分析这两种方式.本文参考自下列文章: http://www.jianshu.com/p/1d42d2e6f4a5 http://www.jianshu.com/p/94d4 ...

  8. 深入.NET平台和C#编程总结大全

    对于初学者的你,等到你把这个看完之后就更清楚地认知.NET和C#编程了,好了废话不多说,开始吧!                                                     ...

  9. SAP CRM 性能小技巧

    导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比 ...

  10. SQL SERVER导入数据到ORACLE的方法总结

    我们偶尔会有将数据从SQL SERVER导入到ORACLE当中的这种需求,那么这种跨数据库导数有那些方法呢?这些方法又有那些利弊呢? 下面比较肤浅的总结了一些可行的方法. 1:生成SQL脚本然后去OR ...