Page 177 - 《软件学报》2026年第2期
P. 177
656 软件学报 2026 年第 37 卷第 2 期
3, 5, 因为根据微信运维工程师团队的调查, 超过 73% 的运维工程师只考虑前 5 个排名的结果. HR@k 的结果越高,
方法的效果越好.
● 实验实施: 本文基于 Python 3.6 实现了本文提出的根因变更识别方法的原型系统. 本文所有的实验是在一
台腾讯云虚拟机上进行的, 该虚拟机配备有 32 核的 AMD CPU (2.6 GHz) 和 32 GB 运行内存, 1 TB 的硬盘, 运行
Ubuntu 20.04 操作系统.
5.2 对比方法
在实验中, 本文选择以下 3 种不同的对比方法来和本文提出的方法进行对比分析.
[9]
(1) FUNNEL : 该方法采用 SST 算法监测在软件变更后服务指标是否发生变化. 当检测到异常指标时使用
DiD 算法来比较已变更的服务实例和未变更的服务实例之间的差异, 以判断是否是由缺陷软件变更引起的指标变
化. FUNNEL 在百度内部网络变更中得到充分验证, 代表了工业缺陷变更检测系统的前沿技术.
(2) Gandalf [11] : 该方法持续监测和提取各种故障信号 (如操作系统事件和服务日志), 并使用 Holt-Winters 预测
算法基于历史数据来检测发生异常的实例. 如果在服务变更后出现大量该服务的错误实例, Gandalf 会将异常与该
服务的变更关联. Gandalf 在 Microsoft Azure 中被大规模实际应用和部署, 代表了工业缺陷变更检测的前沿技术.
(3) SCWarn [12] : 该方法利用变更服务的多源可观测数据 (如日志和指标) 作为输入, 通过基于历史正常数据训
练的 LSTM 模型来检测变更后的可观测性数据是否异常从而推断根因. SCWarn 代表了当前基于深度学习方法的
缺陷变更检测前沿技术.
5.3 问题 6: 有效性评估
表 4 展示了本文提出的方法和对比方法在微信变更故障数据集上根因变更识别的准确率. 从表 4 中可以看
出, 与当前最先进的方法相比, 本文提出的方法在 HR@1 上取得了更好的结果 (73.33%). 具体而言, 本文提出的方
法在 HR@1 方面比 FUNNEL 提升了 29.4%, 比 Gandalf 和 SCWarn 提升了 9.99%. 表 5 展示了模拟数据变更数据
集上的根因变更识别结果, 从表中可以看出本文方法同样表现出色. 在 OnlineBoutique 基准系统数据集的 50 个故
障案例中, 本文方法达到了 74% 的 HR@1 和 84% 的 HR@3, 明显优于基线方法, 展现了强大的跨系统泛化能力.
本文方法的优越性源于其对根因变更的定位方式. 之前的方法只关注在指标上有异常变化的变更, 而未考虑到一
些缺陷变更通过故障传播在其他服务上表现出异常的情况. 本文方法通过综合考虑服务依赖图和变更时间, 弥补
了之前方法的不足, 从而取得更好的根因变更识别效果. 尤其在复杂的服务依赖关系中, 本文提出的时空特征提取
和变更可疑度评分机制能够更准确地捕捉故障传播路径, 有效识别出真正的根因变更, 即使该变更本身的异常指
标不明显. 实验证明, 这种方法在实际生产环境和模拟环境中都具有显著优势.
表 4 微信变更故障数据集根因变更识别准确率对比结果 (%)
方法 HR@1 ↑HR@1 HR@3 ↑HR@3 HR@5 ↑HR@5
FUNNEL [9] 56.67 29.40 73.33 9.10 76.67 13.04
Gandalf [11] 66.67 9.99 76.67 4.34 80.00 8.33
SCWarn [12] 66.67 9.99 73.33 9.10 80.00 7.33
本文方法 73.33 - 80.00 - 86.67 -
注: ↑表示准确率提升的百分比
表 5 模拟变更故障数据集根因变更识别准确率对比结果 (%)
方法 HR@1 ↑HR@1 HR@3 ↑HR@3 HR@5 ↑HR@5
FUNNEL [9] 60.00 23.33 68.00 23.52 72.00 22.22
Gandalf [11] 64.00 15.62 72.00 16.66 80.00 10.00
SCWarn [12] 62.00 19.35 70.00 20.00 78.00 12.82
本文方法 74.00 - 84.00 - 88.00 -
注: ↑表示准确率提升的百分比

