标准答案

  1. 先描述错误率、P99、堆或线程变化以及发生前的发布、流量或配置变化。
  2. 区分 GC、锁、线程池、连接池、慢 SQL 和远程调用等候选层,使用 dump、profile 和 trace 验证。
  3. 止血可以限流、降级、回滚或隔离资源,但不能只扩大 JVM 内存掩盖根因。
  4. 恢复后用数据正确性、性能基线、告警和演练验证修复,并沉淀升级或运行手册。

题目解析

事故回答应先说明用户影响和时间线,再把 GC、线程、锁、连接池、慢 SQL 和远程调用作为可验证假设。运行时参数只是工具,不能替代证据和业务边界。

止血可以限流、降级、回滚或隔离资源,但要说明哪些请求被拒绝、哪些结果未知以及如何避免重试放大。根因修复和临时恢复要分开描述。

恢复验收要同时看服务性能、业务数据、重复/丢失、消息和对账,并把结果沉淀成监控、升级兼容矩阵和运行手册。

常见误区

  • 误区:只说“调大堆、加机器”。改正:指出证据、根因、放大因素、止血动作和长期容量边界。
  • 误区:没有区分根因和放大因素。改正:说明是 GC/锁/下游先出问题,还是重试、连接和队列把影响扩大。
  • 误区:只验证服务恢复。改正:补充重复、丢失、状态、对账、P99 和恢复演练结果。

作者信息