概述

运维同学发现某个服务器,会出现频繁读写磁盘、cpu直接100%的情况。

排查问题

因为我们的某个Node.js服务没有做监控,所以内存占用、GC我们都看不到详情,在加监控的同时,我们首先怀疑是否有定时任务在做频繁读取磁盘的功能。经过几轮代码review、git diff、日志分析,并没有发现明显的错误代码。但是diff某一个版本的时候发现了引入的一个新的SDK包。

安装监控

  • Node.js性能平台

分析堆栈信息

  • 内存占用
  • 堆栈信息时间节点1
  • 堆栈信息时间节点2

很明显的可以看到TLSSocket这项一直在增加并且没有被释放,而且增长幅度很小。这也是当时我们没有安装监控时不好排查的原因。

修复

  • 查看TLSSocket详情发现请求了下图地址,经过review这是一个第三方的包请求的地址。
  • 修复后的内存占用

总结

  • 不管服务有多么不重要也一定要安装监控

如发现疑问或者错误点击反馈

备注