• pm2


     pm2 是一个带有负载均衡功能的Node应用的进程管理器

    1.安装

    npm install -g pm2

    测试示例

    app.js

    var http = require('http');
    http.createServer(function (req, res) {
        res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World
    '); 
    }).listen(2000, "127.0.0.1"); 
    console.log('Server running at http://127.0.0.1:2000/');

    2.使用

    (1)启动服务

    pm2 start app.js --name 'abc'

    [PM2] Starting E: odejshelloapp.js in fork_mode (1 instance)
    [PM2] Done.
    ┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
    │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
    ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 0 │ abc │ default │ N/A │ fork │ 20420 │ 0s │ 0 │ online │ 0% │ 29.6mb │ Adminis… │ disabled │
    └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

    请求测试服务

    (2)停止服务

    pm2 stop app.js

    [PM2] Applying action stopProcessId on app [app.js](ids: [ 0 ])
    [PM2] [abc](0) ✓
    ⇆ PM2+ activated | Instance Name: hkgi-PC-f914 | Dash: https://app.pm2.io/#/r/tbwhxwy4isgdc1n
    ┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
    │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
    ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 0 │ abc │ default │ N/A │ fork │ 0 │ 0 │ 0 │ stopped │ 0% │ 0b │ Adminis… │ disabled │
    └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

    (3)删除

    pm2 delete id号

    删除全部

    pm2 delete all

    (4)查看

    pm2 ls

    ⇆ PM2+ activated | Instance Name: hkgi-PC-f914 | Dash: https://app.pm2.io/#/r/tbwhxwy4isgdc1n
    ┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
    │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
    ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 0 │ abc │ default │ N/A │ fork │ 0 │ 0 │ 0 │ stopped │ 0% │ 0b │ Adminis… │ disabled │
    └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

    (5)使用pm2内置的cluster

    pm2 start app.js --name 'server1' -i 3

    [PM2] Starting E: odejs raptorifcnewapp.js in cluster_mode (3 instances)
    [PM2] Done.
    ⇆ PM2+ activated | Instance Name: hkgi-PC-f914 | Dash: https://app.pm2.io/#/r/tbwhxwy4isgdc1n
    ┌─────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
    │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
    ├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 0 │ abc │ default │ N/A │ fork │ 18516 │ 117s │ 0 │ online │ 0% │ 26.3mb │ Adminis… │ disabled │
    │ 2 │ server1 │ default │ 1.0.0 │ cluster │ 18928 │ 0s │ 0 │ online │ 0% │ 44.6mb │ Adminis… │ disabled │
    │ 3 │ server1 │ default │ 1.0.0 │ cluster │ 20120 │ 0s │ 0 │ online │ 0% │ 43.7mb │ Adminis… │ disabled │
    │ 4 │ server1 │ default │ 1.0.0 │ cluster │ 15252 │ 0s │ 0 │ online │ 0% │ 39.3mb │ Adminis… │ disabled │
    └─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

    注:

      如果任意一个工作线程挂掉了,不用担心,PM2会立即将其重启

    如果需要增加工作线程的数量,可以对集群进行扩展

    pm2 scale <app name> <n>

    参数<n>指定工作线程的数量

    示例A.

    $ pm2 scale server1 +2

    [PM2] Scaling up application
    [PM2] Scaling up application
    ⇆ PM2+ activated | Instance Name: hkgi-PC-f914 | Dash: https://app.pm2.io/#/r/tbwhxwy4isgdc1n
    ┌─────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
    │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
    ├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 0 │ abc │ default │ N/A │ fork │ 18516 │ 7m │ 0 │ online │ 0% │ 26.0mb │ Adminis… │ disabled │
    │ 2 │ server1 │ default │ 1.0.0 │ cluster │ 18928 │ 5m │ 0 │ online │ 0% │ 63.7mb │ Adminis… │ disabled │
    │ 3 │ server1 │ default │ 1.0.0 │ cluster │ 20120 │ 5m │ 0 │ online │ 0% │ 62.0mb │ Adminis… │ disabled │
    │ 4 │ server1 │ default │ 1.0.0 │ cluster │ 15252 │ 5m │ 0 │ online │ 0% │ 63.2mb │ Adminis… │ disabled │
    │ 5 │ server1 │ default │ 1.0.0 │ cluster │ 3964 │ 0s │ 0 │ online │ 0% │ 44.3mb │ Adminis… │ disabled │
    │ 6 │ server1 │ default │ 1.0.0 │ cluster │ 16996 │ 0s │ 0 │ online │ 0% │ 35.7mb │ Adminis… │ disabled │
    └─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

    示例B.

    $ pm2 scale server1 2
    [PM2] Applying action deleteProcessId on app [2](ids: [ 2 ])
    [PM2] [server1](2) ✓
    [PM2] Applying action deleteProcessId on app [3](ids: [ 3 ])
    [PM2] [server1](3) ✓
    [PM2] Applying action deleteProcessId on app [4](ids: [ 4 ])
    [PM2] [server1](4) ✓
    ⇆ PM2+ activated | Instance Name: hkgi-PC-f914 | Dash: https://app.pm2.io/#/r/tbwhxwy4isgdc1n
    ┌─────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
    │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
    ├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 0 │ abc │ default │ N/A │ fork │ 18516 │ 8m │ 0 │ online │ 0% │ 25.7mb │ Adminis… │ disabled │
    │ 5 │ server1 │ default │ 1.0.0 │ cluster │ 3964 │ 41s │ 0 │ online │ 0% │ 59.8mb │ Adminis… │ disabled │
    │ 6 │ server1 │ default │ 1.0.0 │ cluster │ 16996 │ 41s │ 0 │ online │ 0% │ 60.3mb │ Adminis… │ disabled │
    └─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

    补充:

    node.js 的 cluster

    (6)监听

    当文件变化时自动重启应用

    pm2 start app.js --name 'server1' -i 2 --watch

    [PM2] Starting E: odejs raptorifcnewapp.js in cluster_mode (2 instances)
    [PM2] Done.
    ⇆ PM2+ activated | Instance Name: hkgi-PC-f914 | Dash: https://app.pm2.io/#/r/tbwhxwy4isgdc1n
    ┌─────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
    │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
    ├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 0 │ abc │ default │ N/A │ fork │ 19108 │ 37s │ 0 │ online │ 0% │ 26.2mb │ Adminis… │ disabled │
    │ 3 │ server1 │ default │ 1.0.0 │ cluster │ 19880 │ 0s │ 0 │ online │ 9.4% │ 42.7mb │ Adminis… │ enabled │
    │ 4 │ server1 │ default │ 1.0.0 │ cluster │ 20308 │ 0s │ 0 │ online │ 23.5% │ 36.8mb │ Adminis… │ enabled │
    └─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

    (7)监控功能

    PM2 官网提供了在线监控 Node 服务的功能,功能十分强大,该功能是付费的,普通用户只能监控一个项目

    去  http://pm2.keymetrics.io/   注册一个账号

    注册之后点击登录,首次登陆可以创建一个新的 Bucket,用以监控 Node 服务

     连接服务器

    pm2 link  Private key  Public key

    断开连接服务器

    pm2 unlink

    pm2功能很强大,先记着写吧,以后用到再补充

  • 相关阅读:
    VS2008正式版序列号
    清空SQL Server数据库中所有的用户表
    [原创]JavaScript调用Button的服务器端事件
    动态加载枚举 到 DropdownList
    [转载]静态构造函数
    SQL 事务 [两种]
    Jpg文件格式[参考]
    Delegate Event
    javascript 操作cookie类
    [共享]一个文件上传的控件,绝对是精品源码
  • 原文地址:https://www.cnblogs.com/baby123/p/13729665.html
Copyright © 2020-2023  润新知