NodeJS-HeapDump

概要

Heap Dump 以前我们分析问题的时候,需要手动安装对应的类库或者使用 AliNode。
在 12.x 里面V8模块内置了该功能,详见:

内容比较晦涩writeheapsnapshot直接调用此接口可简单实现

实现

  • 信号监听
process.on('SIGUSR1', () => {
  const { writeHeapSnapshot } = require('v8');
  console.log('Heap snapshot has written:', writeHeapSnapshot());
});
  • 手动调用1
const SECRET = '45u90rjigjrihfngihghkbgh+jghg/af';
// 运行快照-通过http协议开启
function heapDump(req, resp, queryInfoDic) {
  const { writeHeapSnapshot } = require('v8');
  if (resp.finished) {
    return;
  }
  // 参数校验权限
  if (!queryInfoDic.params.secret || 
  queryInfoDic.params.secret.replace(/ /g, '+') !== SECRET) {
    resp.end('1');
    return;
  }
  resp.end(writeHeapSnapshot()); // 采用系统快照名、返回给客户端
}

只需把此请求挂在http/ws服务器route上即可。

  • 手动调用2

kill -SIGUSR1 <pid>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容