21
2016
03

nodejs插件PM2,我已经找到草原

昨天写的一篇关于PM2的博文:nodejs插件PM2,还只是一匹野马![Eliminate]。对于这个碰了一脸灰的插件,重新研究一下,得出了一些新的结论。完全推翻上篇的论点image

先处理上次出现的问题:

  1. 占CPU很高,特别访问在网站被访问的时候。

    1. 根据$pm2 logs命令和事先加的一些日志,分析出CPU占用高的代码,改之。

    2. 由于未配置"node_args": "--harmony"导致部分代码无法正常运行而引起重启的情况,导致CPU100%

    3. 由于mongodb有连接数限制,导致cluster模式后,出现mongodb的情况,导致部分节点重启。

  2. CPU100%后不管3721给你重启了。

    1. 100%的问题原因基本和上面一样

    2. 而100%是否不重启,这是否合理?生产环境下再验证。

  3. 监控文件更改的忽略功能和forever一样蛋疼

    1. 根据配置参数“cwd”来配置忽略功能,也是是cwd配置的目录下所有文件更改都会被监控到,所以要按该目录来写忽略规则。


今天收获了:

  1. pm2无缝开启cluster模式,实时监控,实时日志都非常赞。

  2. 在cluster模式如果用node-schelue这样的插件来调度会出问题,需提取出来在单独进程中运行。

  3. 处理队列时注意状态更改,避免重复处理数据


最后附上一段样码:

[{
    "name": "appname",
    "cwd": "/var/appname", 
    "script": "offline/app.js",
    "error_file": "/home/appname/pm2/logs/appname.stderr.log",
    "out_file": "/home/appname/pm2/logs/appname.stdout.log",
    "pid_file": "/home/appname/pm2/appname.pid",
    "log_date_format": "YYYY-MM-DD HH:mm:ss Z",
    "args": "env=dev",
    "node_args": "--harmony",
    "source_map_support": true,
    "max_memory_restart": "1G", 
    "watch": true,
    "ignore_watch": [
        "**/logs",
        "node_modules",
        "**/access_logs"
    ],
    "exec_mode": "cluster",
    "instances": 3
},{
    "name": "appname-schedule",
    "cwd": "/var/appname",
    "script": "offline/app-schedule.js",
    "error_file": "/home/appname/pm2/logs/appname-schedule.stderr.log",
    "out_file": "/home/appname/pm2/logs/appname-schedule.stdout.log",
    "pid_file": "/home/appname/pm2/appname-schedule.pid",
    "log_date_format": "YYYY-MM-DD HH:mm:ss Z",
    "args": "env=dev",
    "node_args": "--harmony",
    "source_map_support": true,
    "max_memory_restart": "1G", 
    "watch": true,
    "ignore_watch": [
        "**/logs",
        "node_modules",
        "**/access_logs"
    ]
}]



« 上一篇下一篇 »

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。