holmes icon indicating copy to clipboard operation
holmes copied to clipboard

为什么要记录 cpu 利用率和 goroutine 数量?

Open XuHuaiyu opened this issue 5 years ago • 1 comments

看 readme 提及的意思是,为了解决的问题是被 OOM-Killer kill 掉而无法保留现场的问题 那么是否只监控物理机或容器的内存使用率即可,而无需监控 cpu 利用率和 goroutine 数量?

XuHuaiyu avatar Nov 02 '20 09:11 XuHuaiyu

@XuHuaiyu OOM 是我们碰到的最多的问题,但不是唯一的问题

goroutine 暴涨,我们也是需要知道原因的,举一个实际的例子,和 mosn 通信的本地应用正在 GC, mosn 有很多 goroutine 卡在了向一个 channel 发数据上,但是过了一会,这个现场就没了。我们事后在监控里看到发生抖动,也可以上线上机器拿到这个现场,解释清楚当时发生了什么事情

CPU 则是为了定位一些转瞬即逝的尖刺,看看整个进程是不是在某些地方有潜在的性能问题,或者是其它人写的什么 bug(内部项目会在 mosn 上开发很多应用逻辑,这部分代码可能是由其他团队完成的

再扩展一些说,我们也碰到过比较少见的进程创建了大量的线程的问题,但是事后去看现场的话,只能看到这些线程都已经闲置,没有办法知道当时是什么原因创建出来的(比如可能是因为 cgo 阻塞?

这个线程问题是最近才碰到的,之前开发这个工具没有想到会碰到这种情况,所以那次现场也没有抓到,到现在还没法解释清楚原因

能够通过对现场进行分析,我们可以进一步发现代码里的一些潜在的缺陷,和可能的优化点

cch123 avatar Nov 02 '20 09:11 cch123