记一次预发布环境卡死问题

85 阅读1分钟

上周出现了一次 pre 环境页面出现卡死崩溃的问题,记录一下排查步骤。

现象

进入页面后,页面开始卡住,所有请求都是 pending 状态, 过一会,页面直接崩溃

image.png

排查步骤

  1. 使用 Performance monitor 面板 查看 cpu 和 内存实时使用情况

20250312175709_rec_.gif 可以看到,CPU 和内存短时间内暴涨,基本确认有死循环

  1. 使用 Performance 面板查看函数调用堆栈

20250312181843_rec_.gif

可以看出发生频繁的垃圾回收以及某些函数的高频触发,然后看调用链:

  1. stuck
  2. foo
  3. func
  4. callCallback
  5. invokeGuardedCallbackDev
  6. invokeGuardedCallback
  7. invokeGuardedCallbackAndCatchFirstError
  8. executeDispatch
  9. processDispatchQueueItemsInOrder

最后直接排查 stuck 函数就好

总结

如果出现卡死,请求都 penging 不动的情况,基本确认是有死循环了,不要慌,用 Chrome DevTools 一步一步排查就行。