Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
XuHuaiyu opened this issue Nov 2, 2020 · 1 comment
Open

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

XuHuaiyu opened this issue Nov 2, 2020 · 1 comment

Comments

@XuHuaiyu
Copy link

XuHuaiyu commented Nov 2, 2020

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

@cch123
Copy link
Collaborator

cch123 commented Nov 2, 2020

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

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

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants