上周出现了一次 pre 环境页面出现卡死崩溃的问题,记录一下排查步骤。
现象
进入页面后,页面开始卡住,所有请求都是 pending 状态, 过一会,页面直接崩溃
排查步骤
- 使用
Performance monitor面板 查看 cpu 和 内存实时使用情况
可以看到,CPU 和内存短时间内暴涨,基本确认有死循环
- 使用
Performance面板查看函数调用堆栈
可以看出发生频繁的垃圾回收以及某些函数的高频触发,然后看调用链:
stuckfoofunccallCallbackinvokeGuardedCallbackDevinvokeGuardedCallbackinvokeGuardedCallbackAndCatchFirstErrorexecuteDispatchprocessDispatchQueueItemsInOrder
最后直接排查 stuck 函数就好
总结
如果出现卡死,请求都 penging 不动的情况,基本确认是有死循环了,不要慌,用 Chrome DevTools 一步一步排查就行。