PM2 Daemon 进程内存占用持续上涨,很大原因可能不是本身的原因,大概率是使用PM2启动启动的服务内存存在问题,而导致PM2 Daemon 进程内存持续上涨。

解决问题的思路:解决 Node 中内存问题,最好的解决方案就是抓取内存堆快照。

抓取PM2启动进程的内存堆快照,请前往我的这篇文章。CSDNhttps://mp.csdn.net/mp_blog/creation/editor/120100534本文主要讲解如何抓取PM2 Daemon 进程的内存快照。

1、首先需要修改PM2的源码,找到node_modules目录下的pm2目录,这是pm2的源码目录。

2、打开文件 pm2\lib\Client.js,添加调试端口代码(大约在232行),如下图

node_args.push("--inspect=9950");

代码如下:

/**
 * Launch the Daemon by forking this same file
 * The method Client.remoteWrapper will be called
 *
 * @method launchDaemon
 * @param {Object} opts
 * @param {Object} [opts.interactor=true] allow to disable interaction on launch
 */
Client.prototype.launchDaemon = function(opts, cb) {
  if (typeof(opts) == 'function') {
    cb = opts;
    opts = {
      interactor : true
    };
  }

var that = this
  var ClientJS = path.resolve(path.dirname(module.filename), 'Daemon.js');
  var node_args = [];
  var out, err;

// if (process.env.TRAVIS) {
  //   // Redirect PM2 internal err and out to STDERR STDOUT when running with Travis
  //   out = 1;
  //   err = 2;
  // }
  // else {
  out = fs.openSync(that.conf.PM2_LOG_FILE_PATH, 'a'),
  err = fs.openSync(that.conf.PM2_LOG_FILE_PATH, 'a');
  //}

//此处为新增加代码
  node_args.push("--inspect=9950");
  if (this.conf.LOW_MEMORY_ENVIRONMENT) {
    var os = require('os');
    node_args.push('--gc-global'); // Does full GC (smaller memory footprint)
    node_args.push('--max-old-space-size=' + Math.floor(os.totalmem() / 1024 / 1024));
    // node_args.push('--inspect=9960');
  }

3、保存代码,将所有node进程结束,使用查看版本的命令(目的是启动pm2 Daemon 进程)

pm2 -v

4、查看任务管理器,如下图

5、打开chrome浏览器,输入地址

chrome://inspect/#devices

如下图:

6、点击configure,添加配置

localhost:9950

如下图:

点击Done

7、查看调试工具是否连接,如下图:

8、 点击 Open dedicated DevTools for Node 打开调试工具(也可以点击下面 inspect 进入对应的项目调试)

9、抓取内存堆快照

10、录制堆快照

注1:chrome版本:版本 93.0.4577.63(正式版本) (64 位)

注2:linux 下可使用 阿里云Node.js性能平台,原理一样,修改Pm2源码,增加相应的命令参数即可。

关于 PM2 Daemon 进程,内存爆涨的问题分析及解决相关推荐

  1. Android应用内存泄漏的定位、分析与解决策略

    Hello,大家好,我是Clock.翻了一下简书,发现有一个多月没有更新博客,本来今天打算和妹纸去电影院看<你的名字>,然后再去到处浪的. 结果因为妹纸公司临时有事,她不得不回公司一趟.. ...

  2. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )

    文章目录 一.使用 IDA 分析要修改的内存特征 二.根据内存特征搜索修改点 三.修改进程内存 一.使用 IDA 分析要修改的内存特征 在前的博客 [Android 逆向]逆向修改游戏应用 ( 分析应 ...

  3. mysql内存爆_线上MySQL机器内存爆掉原因分析与解决

    现象: 阿里金融某业务的MySQL机器的内存每隔几天就会增长,涨上去后,却不下来.累积后内存爆掉. 分析: 此业务是间隔的对MySQL有大访问,其它时间几乎无访问.排查发现,内存涨时,一般会有MySQ ...

  4. mysql爆内存_线上MySQL数据库机器内存爆掉原因分析与解决

    本文主要向大家介绍了线上MySQL数据库机器内存爆掉原因分析与解决,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 现象: 阿里金融某业务的MySQL机器的内存每隔几天就会增长,涨 ...

  5. glance查看进程内存使用过大问题

    glance查看进程内存使用过大问题 如题,CPU使用率才3%,基本上就没用应用在跑,可内存都用了73%, 实际的物理内存为48G,单个进程有好多都超过500M了,这是什么原因呀? Glance C. ...

  6. pytorch运行过程中死机(内存爆掉或者内存正常)

    linux18.04下,在运行pytorch程序的过程中,电脑直接卡死死机,鼠标和键盘都没有反应,只能强制关机. 安装htop观察内存和cpu的使用情况,内存32G,CPU是i7-8700. 程序在之 ...

  7. linux 进程内存分布及 堆分配和栈分配的特点

    文章目录 进程内存空间分布 size命令查看内存分布 堆方式内存分配和栈方式内存分配比较 使用stap 深入追踪malloc逻辑 进程内存空间分布 一个程序的内存空间主要如下: 代码段(text se ...

  8. Linux查看进程内存状况

    查看全部进程 通过top或ps -ef | grep '进程名' 得到进程的PID.该命令可以提供进程状态.文件句柄数.内存使用情况等信息. #pa aux 先查看进程 nginx的工作进程是5757 ...

  9. 转 linux进程内存到底怎么看 剖析top命令显示的VIRT RES SHR值

    引 言: top命令作为Linux下最常用的性能分析工具之一,可以监控.收集进程的CPU.IO.内存使用情况.比如我们可以通过top命令获得一个进程使用了多少虚拟内存(VIRT).物理内存(RES). ...

最新文章

  1. 突破帧率天花板,超速全时视觉感知芯片重塑机器视觉技术体系
  2. 简述JavaME,JavaSE,JavaEE
  3. Spring MVC与表单日期提交的问题
  4. 基于Java的RDMA高性能通信库(一):IBM jVerbs库
  5. 如何给DataFrame的列命名或重命名。
  6. python mount回调函数_让Python脚本暂停执行的几种方法(小结)
  7. 单片机蜂鸣器编程音乐_基于单片机的智能鱼缸温控系统设计
  8. QuickSort 快速排序
  9. Redis学习笔记(四) 发布订阅命令
  10. poj 1056 IMMEDIATE DECODABILITY trie树 ——字典树 静态数组版
  11. XE5 搭建DataSnap服务
  12. 输入关键字生成对联_对联生成器在线生成_对联在线自动生成器下载V1.0.0|好特下载...
  13. 单个dcm文件含有多帧数据,如何拆分成多个dcm文件
  14. 创龙TI TMS320C6748定点/浮点DSP C674xSD卡接口、拓展IO信号
  15. 电脑安装win10系统
  16. 数码相机与手机相机成像差别
  17. Win系统 - Win10 进入 BIOS 系统(非启动快捷键)
  18. 奋什么直什么的成语(奋什么直什么四字成语大全)
  19. agios插件之监控AEP主机InBound和Awaiting数量
  20. Lotus Notes Send EMail from VB or VBA

热门文章

  1. numpy python取表格的前几行前几列 某行某列
  2. 金蝶应收应付模块流程_金蝶应收应付手册
  3. 写一封信给N年前的自己
  4. 2018百度之星大赛游记
  5. 两个函数相加、相减、相乘等之后的单调性
  6. 信息安全的核心:CIA三元组 | 安全千字文系列1
  7. Linux下使用云笔记及OneNote
  8. 计算机显示器文字不清楚,笔记本电脑字体显示不清晰解决方法分辨率和显卡驱动...
  9. maya2020linux下卸载,卸载产品的步骤 | Maya 2022 | Autodesk Knowledge Network
  10. SSM+阳光大学宿舍管理系统 毕业设计-附源码211714