zoukankan      html  css  js  c++  java
  • 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功能很强大,先记着写吧,以后用到再补充

  • 相关阅读:
    jQuery的几个Grid插件简单比较
    位运算符
    Unity --- 纹理压缩基本知识点
    Unity---资源管理中不同资源的路径获取方式
    Unity--- 资源路径问题
    数据结构 --- 基本概念
    《UnityShader入门精要》学习笔记之渲染流水线
    UnityShader中的语义相关
    补充一下角度制与弧度制的相关知识
    NGUI中处理层级问题的几个方法总结
  • 原文地址:https://www.cnblogs.com/baby123/p/13729665.html
Copyright © 2011-2022 走看看