Node-诊断报告-experimental-report

概要

在 12.x 里面V8模块内置了该功能,详见:

简要的说是主要通过一列实验性接口process.report/experimental-report实现的。

实现

  1. 启动脚本开启诊断报告功能node --experimental-report http_server.js
  2. 脚本设置参数
if (process.report) { // 监听报告类型
// 等同
  process.report.reportOnFatalError = true; 
  process.report.reportOnUncaughtException = true;
  process.report.reportOnSignal = true; // - 信号监听
  process.report.signal = 'SIGQUIT'; // 信号值默认 SIGUSR2
}
  • 手动调用1
const SECRET = '45u90rjigjrihfngihghkbgh+jghg/af';
// 诊断报告
function writeReport(WW, MF, req, resp, queryInfoDic) {
  if (resp.finished) {
    return;
  }
  if (!queryInfoDic.params.secret || 
  queryInfoDic.params.secret.replace(/ /g, '+') !== SECRET) {
    resp.end('1');
    return;
  }
  if (!process.report) {
    resp.end('writeReport unOpen');
    return;
  }
  resp.end(process.report.writeReport()); // 生成报告、返回系统格式接口
}

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

  • 手动调用2

kill -SIGQUIT <pid>

诊断报告文件类型

https://nodejs.org/dist/latest-v12.x/docs/api/report.html

分析

暂时没有发现比较好的分析工具,待补充

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

相关阅读更多精彩内容

友情链接更多精彩内容