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

这里我们还需要在 app/controller/ 目录下创建一个 resource 文件夹 , 并且在这个文件夹中添加一个 error.txt , 这个 TXT 内容随意 , 只要是一个能超过 100M 的很大的字符串即可 。

值得注意的是 , 其实这里的问题已经在 egg-logger >= 1.7.1 的版本中修复了 , 所以要复现当时的状况 , 你还需要在 Demo 的根目录执行以下的三条命令以恢复当时的版本状况:

rm -rf package-lock.json

rm -rf node_modules/egg/egg-logger

npm install egg-logger@1.7.0

最后使用 npm run dev 启动这个问题最小化复现的 Demo 。

感知进程出现问题

这个案例下 , 实际上我们的线上 Node.js 应用几乎是触发了这个 Bug 后瞬间内存溢出然后 Crash 的 , 而平台预设的内存阈值告警 , 实际上是由一个定时上报的逻辑构成 , 因此存在延时 , 也导致了这个案例下我们无法像 冗余配置传递引发的内存溢出 问题那样获取到 Node.js 进程级别的内存超过预设阈值的告警 。

推荐阅读