事故的复盘要有结构才有效:时间线还原事发经过、根因追问到底层原因、行动项带负责人与期限——复盘的模板让每次事故的学费变成团队的资产。模板的要点是结构的完整性、追问的刨根与行动的跟踪。
---复盘报告:标准模板的七段结构
local REPORT = {
summary = '', -- 一句话事故名
level = '', -- P0/P1/P2
timeline = {}, -- 时间轴
impact = {}, -- 影响面
rootCause = '', -- 根因
why5 = {}, -- 五问
actions = {}, -- 改进项
}
---时间轴的节点
function Report.addTimeline(rpt, time, event)
rpt.timeline[#rpt.timeline + 1] = {
time = time, event = event,
}
end
复盘的模板七段:一句话的事故名、级别、时间轴(发生/发现/响应/恢复四节点)、影响面、根因、五问、改进项——七段的结构完整覆盖事故的全生命周期。时间轴的节点用监控的数据说话:告警时刻、值班响应时刻、恢复验证时刻,响应的快慢在时间轴上无处藏身。五问的追问从表层挖到制度层:为什么掉线、为什么内存耗尽、为什么清扫没跑、为什么定时器被误关、为什么没有权限控制。
---改进项的跟踪:逾期升级的自动化
setontimerex(148, 3600)
function Report.trackActions()
for _, rpt in pairs(Report.store) do
for _, act in ipairs(rpt.actions or {}) do
if not act.done and os.time() > act.deadline then
Ops.alert('改进项逾期', rpt.summary,
act.task, act.owner)
act.escalated = true
end
end
end
end
改进项的跟踪带期限与负责人:每条措施有 deadline 与 owner,逾期的自动升级到管理层——复盘的结论躺在文档里是第二次事故的预告。改进的验证:措施完成后用故障的复现场景回验,改了没用等于没改。同类事故的关联:新事故的根因与历史库匹配,重复的根因说明上次的改进没执行到位。
复盘的按时完成率:事故后 48 小时内出报告的占比;改进项的完成率核验:完成的措施与总措施的比值是复盘质量的硬指标。
根因的分析曾经停在表层,「代码有 Bug」式的结论让改进无处使力,五问的追问法强制到流程层。改进项的负责人曾经写团队不写个人,逾期的追责无人认领,署名到个人。时间轴的节点曾经靠回忆,监控的告警时间与工单的时间戳的对齐让时间轴可重构。
复盘的会议 48 小时内召开,记忆的衰减不等人。报告的库全团队可查,事故的学费共享。每季度的复盘复盘:改进项的完成率与同类事故的复发率,制度本身的成效也要被复盘。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 悬赏捕杀把玩家之间的恩怨变成可托付的系统行为:仇家难以亲自复仇时,花费金条发布悬赏,全服玩家接单击杀目标…
实战应用:用在哪里 策划改表是日常动作,漏填字段、引用了不存在的编号、数值越界这三类问题占了配表故障的绝大多数。等玩家报错再…
实战应用:用在哪里 行会擂台给中小行会提供了固定的对抗出口:挑战方击败守擂方后接管擂台,连胜次数决定每日结算奖励档位。接口层…
实战应用:用在哪里 世界首领战里玩家最关心的是伤害前十名:榜单要求随时插入、随时能按序取出,每来一条伤害记录都重新排序一次太…
实战应用:用在哪里 百人同屏的攻城战里,把每条移动、施法消息广播给全地图是最常见的性能失误。九宫格视野的做法是把地图切成等大…
实战应用:用在哪里 留言板、行会招募语、邮件标题这类字段会被玩家自由填写,并写入角色变量或转发给持久层。拼接式的写法一旦遇到…