标准答案
- 先说明 P99、错误率、事件循环延迟、CPU、内存、连接池或下游指标的变化。
- 区分同步计算、微任务风暴、线程池等待、慢下游、内存泄漏和重试放大。
- 止血可以限流、降级、回滚、隔离 Worker 或重启异常进程,但要保留任务和业务状态。
- 修复后用相同流量验证事件循环、吞吐、尾延迟、资源释放和数据对账。
题目解析
事故回答先说明用户影响、P99、错误率和时间线,再区分主线程同步计算/微任务风暴、libuv 线程池、连接池、内存、下游和重试。Node 主线程是一个重要边界,但不是完整系统。
止血可以限流、降级、回滚、隔离 Worker 或重启异常进程,同时保存任务和业务状态。增加 cluster 只能分散可横向扩展的主线程工作,不能修复共享数据库、热点或重试放大。
恢复验证要看事件循环、吞吐、P99、资源释放和数据结果,并说明客户端取消、服务端继续执行、幂等和对账如何收敛。
常见误区
- 误区:只说 Node 单线程所以慢。改正:指出具体阻塞栈、事件循环指标、线程池/连接池和下游证据。
- 误区:只说增加 cluster 实例。改正:先确认瓶颈可横向分散,再评估总连接、共享状态和下游容量。
- 误区:没有说明取消、重试和异步副作用。改正:明确 timeout 后的最终状态、幂等键、补偿和对账。