值班工程师的工作指南
1. 问题缓解(Mitigation)
当收到问题通知后,工程师需立即开展缓解工作。以一个实际案例来说,在发送通知的同时,工程师决定重启连接器,看是否能解决问题,但问题依旧存在。通过堆栈转储发现,连接器正在读取和解码消息,运行连接器的机器 CPU 已完全饱和(使用率达 100%),工程师推测是一条大的或损坏的消息导致连接器在反序列化时占用了所有 CPU 资源。
为缓解问题,工程师决定运行一个仅包含已知正常数据流的新连接器。由于有 30 个数据流,且不清楚哪些包含坏消息,他们采用二分查找法来定位损坏的数据流。即先添加一半的数据流,然后根据连接器的行为调整集合,最终找到了导致问题的数据流。之后,使用所有健康的数据流重启连接器,表数据也恢复正常,问题影响范围缩小到单个数据流和表。
缓解阶段的目标是减少问题的影响,而非解决问题。常见的缓解方法包括将软件版本回滚到“最后已知正常”版本,或转移流量以避开问题。根据具体情况,还可能涉及关闭功能标志、从资源池中移除机器或回滚刚部署的服务。
在缓解问题时,应尽可能收集数据,因为问题缓解后可能难以重现。快速保存遥测数据、堆栈跟踪、堆转储、日志和仪表盘截图,有助于后续调试和根本原因分析。同时,在缓解过程中,可能会发现指标、工具和配置方面的差距,如重要指标缺失、权限错误或系统配置错误等,应及时记录这些差距,并在后续阶段创建工单解决。
以下是缓解问题的操作步骤:
1. 收到问题通知后,立即尝试重启相关组件,观察问题是否解决。
2. 若问题依旧存在,分析堆栈转储等数据,推测问题原因。
3. 采用合适的方法定位问题,如二分查找法。
4. 实施缓解措施,如运行新
超级会员免费看
订阅专栏 解锁全文
44

被折叠的 条评论
为什么被折叠?



