Page 72 - 《软件学报》2021年第7期
P. 72

1990                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                 推理的方法中最具代表性的贝叶斯网络方法进行对比.
                    研究问题.为验证 SAFER 的有效性,本文尝试回答以下研究问题.
                    RQ1. SAFER 在识别事件上的准确性如何?是否做到了对识别准确性的保障?与现有其他分析方法相比,其
                 识别准确性是否较高?
                    RQ2. SAFER 在识别事件上的效率如何?是否做到了对识别效率的保障?与现有其他识别方法相比,其识别
                 效率是否较高?
                    实验数据集.自适应领域内研究人员普遍采集案例系统的运行数据,以构建测试数据集开展测试工作,但并
                 未对数据集进行公开发布         [35,36] .因此,鉴于无法获取恰当的公开测试数据集,本文同样使用满足条件的真实系统
                 作为案例系统,并将其运行时产生的实时数据作为实验数据集进行测试工作.SAFER 的测试需求决定了案例系
                 统需运行在不确定环境下,且具备自适应能力,并支持人为故障的注入.本团队前期开发的 BookStore 网上书城
                 系统 [37,38] 满足该测试需求,将作为案例系统对 SAFER 进行测试.
                    BookStore 作为一个典型的 Web 应用软件,主要包含账户管理服务、商品管理服务、购物服务和推荐服务
                 等多种服务.各个服务间通过交互协作共同向用户提供多种完整功能,如展示、浏览、支付、管理、广告等 9
                 项功能.该系统在运行过程中可能会发生部署集群节点损坏、服务故障、响应超时、网络故障等多种类型的软
                 件变化,这些不同的软件变化还有可能进一步引发未知的软件变化.并且,这些软件变化是随时发生的,发生时
                 间无法预测.BookStore 系统支持故障的人为注入,例如关闭相应节点模拟页面无响应事件,使不确定环境导致
                 的事件发生时间可受人为控制,从而使测试效果更加明显.因此,该系统满足运行在不确定环境的条件,足以支
                 持本文实验的进行.
                    BookStore 系统拥有基本的自适应控制系统,其中拥有轻量级的自适应感知-分析-决策-执行控制循环,在系
                 统离线状态下,可对其中的自适应分析方法进行修改,为本文不同分析方法的测试提供有力支持;在系统运行过
                 程中,自适应感知环节采用 Ganglia 系统        [27] 监测节点的 CPU、内存、磁盘利用率等信息,采用 JMeter 系统             [28] 监
                 测服务页面响应时间、服务页面错误率等信息,并以日志的形式记录运行环境状态,支持人为批量提取,为本文
                 测试需要的数据集构造提供了极大便利.
                    表 2 为获取的 BookStore 中商品服务的运行日志片段示例,展示了该服务运行中的各个属性,除心跳返回
                 时间外,其他属性均为 3s 采集 1 次.商品服务页面平均响应时间是指从请求服务到返回数据所需响应时间,
                 单位为 s;平均错误率是指商品页面显示的错误率,以百分号为单位;商品服务请求量是指请求该服务的用户数,
                 通过 JMeter 设置访问线程数来模拟访问用户数;商品服务心跳返回时间是指自适应控制系统每 30s 向各个服务
                 发送心跳检测,该商品服务向自适应控制系统返回心跳的时间,单位为 s,这个时间随每次自适应控制系统发送
                 心跳检测的时间而发生变化,即每 30s 或超过 30s 变化 1 次;节点 CPU 利用率和内存使用率是指商品服务部署
                 节点的 CPU 和内存利用率,由 Ganglia 系统监测而来,以百分数形式存储.
                    本文收集了 BookStore 系统运行日志,并人工标注了日志中的事件,作为测试 SAFER 识别准确性的数据集.
                 具体地,本文采集了 BookStore 运行一天所产生的日志数据,由于该系统运行过程中事件的发生是较为稀疏的,
                 不利于本文测试方法的有效性,因此本文在这一天内对该系统不定期地实现了 20 次故障注入.注入故障的方式
                 包括通过压力测试工具 JMeter 模拟高并发访问引发服务超载,关闭相应节点引发页面无响应,撤销服务引发软
                 件应用失效等.在收集到注入故障的日志数据后,本文手动标记了日志数据中发生的事件,并选取事件发生较为
                 密集的 6 个日志片段代表系统运行时事件发生情况,这 6 个日志片段作为 6 个不同大小的数据集,称为数据集
                 1~6,大小分别为 1 500 条、1 800 条、2 100 条、2 400 条、2 700 条、3 000 条.
                    评测指标.针对识别质量,本文通过以下指标               [15,17] 评测不同的自适应分析方法.
                      准确率(accuracy):正确识别出的已标记事件与未识别出的未标记事件之和占数据总数的比例.
                      召回率(recall):正确识别出的已标记事件占所有已标记事件的比例.
                      识别效率(time efficiency):从注入故障到识别出具体事件所花费的时间.
                    运行环境配置.完成实验的计算机集群包括运行 SAFER 等方法所提供的自适应控制的主控计算机、提供
   67   68   69   70   71   72   73   74   75   76   77