Node.js 应用故障排查手册 —— 雪崩型内存泄漏问题( 七 )

这里可以看到 , 这个正在被util.inspect的字符串大小高达 186.94 兆 , 显然正是在序列化这么大的字符串的时候 , 造成了线上 Node.js 应用的堆内存雪崩 , 几乎在瞬间就内存溢出导致 Crash 。

值得一提的是 , 我们还可以点击上图中的 + 号来在当前页面展示更多的问题字符串内容:

也可以在页面上点击 一键导出 按钮下载问题完整的字符串:

毕竟对于这样的问题来说 , 如果能抓到产生问题的元凶参数 , 起码能更方便地进行本地复现 。

III. 修复问题

那么知道了原因 , 其实修复此问题就比较简单了 , Egg-logger 官方是使用 circular-json 来替换掉原生的 util.inspect 序列化动作 , 并且增加序列化后的字符串最大只保留 10000 个字符的限制 , 这样就解决这种包含大字符串的错误对象在 Egg-logger 模块中的序列化问题 。

推荐阅读