Page 168 - 《软件学报》2026年第2期
P. 168
余广坝 等: 面向大规模在线系统的故障根因变更识别 647
督下, 独立地标记一个故障是否由变更引起以及其变更类型 (问题 1). 对于存在分歧的情况, 本文作者会与负责故
障处理的工程师进行讨论, 最终达成共识. 此外, 有一组运维专家根据故障的影响和造成的经济损失确定故障的严
重等级 (问题 2). 每个故障的故障识别时间 (问题 3) 可以通过从最终故障检测时间减去告警时间来计算. 告警服务
和根因变更服务 (问题 5) 可以分别从事后总结和由负责该故障的工程师确认的最终根因定位结果中提取. 为了获
取它们之间的关系, 本文分析了告警服务和根因变更服务之间的调用图.
3.3 问题 1: 变更故障的故障比例
为了回答问题 1, 本文对由缺陷变更引起的故障数量进行量化, 并对这些变更进行详细的分类. 通过分析在
2022 年 10 月 1 日–2023 年 3 月 30 日这 6 个月的时间段内的数据, 本文获得了有关变更故障的分布情况. 图 2 直
观地展示了每个月的故障分布情况. 观察结果显示, 在微信系统中, 软件变更是导致故障的一个重要因素, 其比例
在 52%–84% 之间变化, 平均为 66%. 换句话说, 相当大比例的故障是由缺陷变更引起的, 这给运维工程师在保障
微信的可靠性和性能方面带来相当大的挑战.
无变更 模型 客户端 资源 配置 后端
100
80
占比 (%) 60
40
20
0
10 月 11 月 12 月 1 月 2 月 3 月
图 2 微信系统中变更故障的分布
通过对不同类型变更的比例进行观察, 本文发现缺陷后端变更占据了很大的比例, 每个月的比例从 15.78% 到
50% 不等. 其次是配置变更, 平均占据 13% 的故障比例. 这是因为这两种类型的变更在软件升级中较为常见, 这种
类型的变更次数更多, 因此出现故障的次数也相应变多.
综上所述, 本文可以得出结论: 软件变更是导致故障的重要原因之一. 这使得运维工程师在故障发生时需要优
先考虑是否由缺陷变更引起. 因此, 开发一种精准识别缺陷变更的自动化方法至关重要, 这也是本文研究的主要动机.
发现 1. 在微信系统内部, 平均有 66% 的故障是变更故障. 在某一个月内, 高达 80% 的故障是由缺陷变更引
起的.
3.4 问题 2: 缺陷更改引发事件的严重程度
在故障发生后, 微信内部有一组运维专家根据故障的影响和造成的经济损失评定故障的严重等级. 表 1 展示
了微信系统中的故障严重程度级别的对比情况. 在微信系统中, 故障的严重程度级别分为 1–6 级, 其中 1 级故障代
表最严重的故障, 这一级别故障对用户数据安全、公司基础设施或核心业务等造成了更严重的影响.
表 1 由缺陷变更导致的和其他原因导致的故障的严重等级对比 (%)
故障级别 6 5 4 3 2 1
变更故障 52.08 10.41 4.16 0.69 0 0
其他故障 27.77 4.16 0.69 0 0 0
通过观察表 1, 得出以下结论: 与其他故障类型相比, 缺陷变更导致严重故障的比例更高. 具体而言, 6 级变更
故障的数量比其他原因导致的故障高出 2.1 倍. 这说明由缺陷变更引起的故障对微信系统的稳定性和可靠性造成
更大的威胁. 此外, 5 级和 4 级故障也更多地由缺陷变更引起, 分别比其他原因高出 2.5 倍和 6 倍. 这意味着对于这
些故障等级严重的故障, 缺陷变更是主要的根源之一. 值得注意的是, 6 个月内唯一的 3 级故障也是由缺陷变更引
起的. 这进一步强调了由缺陷变更引起的故障的严重性和紧迫性. 在处理故障时, 运维团队需要优先考虑和解决由

