[0001]技术领域
[0002]本发明属于大数据信息处理及智能化运维技术领域,尤其涉及一种软件系统性能故障预测方法及系统。
[0003]背景技术
[0004]本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
[0005]大规模的软件系统已经成为我们日常活动的重要组成部分,如提供金融服务、实现医疗保健运营等。为了满足用户的期望,软件系统需要以高性能和高可靠性来执行其功能。然而,在系统运行时,可能出现性能异常,进而影响用户体验。
[0006]为了维护软件系统的性能,操作员需要检测性能异常,防止在运行时发生故障。由于软件系统的规模和复杂性的增加,操作人员手动跟踪软件系统的执行状态会导致成本较高。因此,研究人员提出了各种方法来自动监控软件系统和检测运行时的异常。但是,发明人发现,在故障发生后进行检测并采取纠正措施可能导致违反服务水平目标(例如,用户请求的响应时间长),从而导致财务损失;同时,在进行故障预测时,大多数现有的工作关注的是是否会发生故障,而对于造成异常的原因没有进一步解释,导致运维人员需要耗费大量时间去核对造成异常的原因。因此,提供一种可以主动提前发现故障的性能故障预测方法,从而帮助运维人员防止潜在故障的发生,是当前急需解决的问题。
[0007]发明内容
[0008]本发明为了解决上述问题,提供了一种软件系统性能故障预测方法及系统,所述方案充分考虑了单一监控指标的不同维度之间的关系,采用结合交叉注意力机制的LSTM进行预测,同时,所述方案结合多种监控指标,并使用基于相似性分解的注意力机制对Transformer的多头注意力机制进行优化,进而预测可能导致异常的原因,有效提升了预测效率和准确性。
[0009]根据本发明实施例的第一个方面,提供了一种软件系统性能故障预测方法,包括:
[0010]获取待测系统运行时的监控指标数据,并进行相应预处理;
[0011]基于预处理后的监控指标数据,获得各单一指标数据的纵向序列和横向序列;
[0012]基于交叉注意力机制获取所述纵向序列和横向序列的交叉注意力向量,基于所述交叉注意力向量及预先训练的LSTM模型,获得各单一指标的预测值;
[0013]计算所述预测值与实际监测值的差值,若存在单一指标预测值与实际监测值的差值超过预设阈值,则判定存在异常发生,输出故障预警;
[0014]将各单一指标数据序列结合,获得多维监控指标序列数据;并将所述多维监控指标序列数据输入预先训练的Transformer模型中进行故障分类,获得故障类型分类结果,其中,所述Transformer模型采用基于相似性分解的注意力机制。
[0015]进一步的,所述基于交叉注意力机制获取所述纵向序列和横向序列的交叉注意力向量,具体为:
[0016]将获得的单一指标数据的纵向序列和横向序列分别输入交叉注意力模块中,分别获得第一交叉注意力向量和第二交叉注意力向量;
[0017]将所述第一交叉注意力向量和单一指标数据的纵向序列交叉相乘,并与所述第二交叉注意力向量和单一指标数据的横向序列交叉相乘的结果进行拼接,获得交叉注意力向量。
[0018]进一步的,所述基于相似性分解的注意力机制,其处理过程具体为:
[0019]基于获得的多维监控指标序列数据,获取其键向量、值向量以及查询向量;
[0020]基于获得的键向量和查询向量,计算入流和出流;
[0021]基于出流以及值向量,计算竞争;并基于键向量、查询向量、入流以及竞争,计算汇聚;
[0022]基于所述汇聚和入流,计算得到分配结果。
[0023]进一步的,所述将所述多维监控指标序列数据输入预先训练的Transformer模型中进行故障分类,获得故障类型分类结果,具体为:
[0024]将计算得到的分配结果,输入至Transformer模型中的Add&Norm网络层进行残差连接计算,并将输出的结果输入至Feed Forward层,并经归一化层处理后,获得分类结果。
[0025]根据本发明实施例的第二个方面,提供了一种软件系统性能故障预测系统,包括:
[0026]数据获取单元,其用于获取待测系统运行时的监控指标数据,并进行相应预处理;
[0027]交叉注意力预测单元,其用于基于预处理后的监控指标数据,获得各单一指标数据的纵向序列和横向序列;基于交叉注意力机制获取所述纵向序列和横向序列的交叉注意力向量,基于所述交叉注意力向量及预先训练的LSTM模型,获得各单一指标的预测值;
[0028]预测值分析单元,其用于计算所述预测值与实际监测值的差值,若存在单一指标预测值与实际监测值的差值超过预设阈值,则判定存在异常发生,输出故障预警;
[0029]故障分类单元,其用于将各单一指标数据序列结合,获得多维监控指标序列数据;并将所述多维监控指标序列数据输入预先训练的Transformer模型中进行故障分类,获得故障类型分类结果,其中,所述Transformer模型采用基于相似性分解的注意力机制。
[0030]根据本发明实施例的第三个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上运行的计算机程序,所述处理器执行所述程序时实现所述的一种软件系统性能故障预测方法。
[0031]根据本发明实施例的第四个方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述的一种软件系统性能故障预测方法。
[0032]与现有技术相比,本发明的有益效果是:
[0033](1)本发明提供了一种软件系统性能故障预测方法及系统,所述方案将指标的纵向序列与横向序列相结合,并引入交叉注意力机制来捕获双序列信息之间的依赖信息,同时利用LSTM来学习表示向量,从而有效增强了预测结果的有效性;
[0034](2)所述方案通过对Transformer模型进行优化,获得SD-Transformer模型,在进行故障预警后,采用多维指标监控数据序列,将其输入至SD-Transformer模型进行故障类别预测,获得可能的产生异常原因,基于获得的异常原因,可以对运维人员进行有效指导,进一步提升软件系统的运行效率。
[0035]本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
[0036]附图说明
[0037]构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
[0038]图1为本发明实施例中所述的一种软件系统性能故障预测方法流程图;
[0039]图2为本发明实施例中所述的融合交叉注意力的LSTM处理流程图;
[0040]图3为本发明实施例中所述的SD-Transformer处理流程图;
[0041]图4为本发明实施例中所述的一种软件系统性能故障预测系统结构示意图。
[0042]具体实施方式
[0043]下面结合附图与实施例对本发明做进一步说明。
[0044]应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
[0045]需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0046]在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0047]术语解释:
[0048]键向量、值向量、查询向量为所使用的注意力机制中的术语,其中:
[0049]键向量与值向量用于以键值对形式表示输入;
[0050]查询向量是任务相关的表示;
[0051]入流、出流、竞争、汇聚为网络流视角下的描述,其中:
[0052]入流、出流为某节点的输入数据与输出数据;
[0053]竞争:权重的分布;
[0054]汇聚:将信息进行聚合的结果。
[0055]实施例一:
[0056]本实施例的目的是提供一种软件系统性能故障预测方法。
[0057]性能故障预测方法是通过捕获故障发生前的状态来预测软件系统即将进入故障状态。性能异常并不总是立刻对系统造成故障,这期间会有一段时间差。而软件系统从性能下降到性能故障发生都被认为处于异常状态,在此阶段预测出故障可以提前做出预防措施,以减少损失。
[0058]使用交叉注意力可以捕获单一指标的不同维度之间的依赖关系,包括纵向序列与横向序列,其中纵向序列指单一指标过去几个周期内同时阶段数据形成的时间序列,而横向序列指单一指标在最近几个时间步长中形成的时间序列。而在先前的时序数据预测工作中,LSTM得到了广泛的应用,因此本发明将交叉注意力融入LSTM模型中,得到单一指标预测值。
[0059]在进行故障预测时,大多数现有的工作关注的是是否会发生故障,而对于造成异常的原因没有进一步解释。且对于故障预测任务来说,预测及时性也很重要,因此本发明在进行故障预测之后,结合多种指标数据,使用Transformer进行故障分类,并对其中的多头注意力机制进行优化,使用基于相似性分解(Similarity Decomposition)的注意力机制,提出SD-Transformer,以提升Transformer计算效率,解决此问题。
[0060]为了解决现有技术存在的问题,本实施例提供了一种软件系统性能故障预测方法,包括:
[0061]获取待测系统运行时的监控指标数据,并进行相应预处理;
[0062]基于预处理后的监控指标数据,获得各单一指标数据的纵向序列和横向序列;
[0063]基于交叉注意力机制获取所述纵向序列和横向序列的交叉注意力向量,基于所述交叉注意力向量及预先训练的LSTM模型,获得各单一指标的预测值;
[0064]计算所述预测值与实际监测值的差值,若存在单一指标预测值与实际监测值的差值超过预设阈值,则判定存在异常发生,输出故障预警;
[0065]将各单一指标数据序列结合,获得多维监控指标序列数据;并将所述多维监控指标序列数据输入预先训练的Transformer模型中进行故障分类,获得故障类型分类结果,其中,所述Transformer模型采用基于相似性分解的注意力机制。
[0066]进一步的,所述基于交叉注意力机制获取所述纵向序列和横向序列的交叉注意力向量,具体为:
[0067]将获得的单一指标数据的纵向序列和横向序列分别输入交叉注意力模块中,分别获得第一交叉注意力向量和第二交叉注意力向量;
[0068]将所述第一交叉注意力向量和单一指标数据的纵向序列交叉相乘,并与所述第二交叉注意力向量和单一指标数据的横向序列交叉相乘的结果进行拼接,获得交叉注意力向量。
[0069]进一步的,所述基于相似性分解的注意力机制,其处理过程具体为:
[0070]基于获得的多维监控指标序列数据,获取其键向量、值向量以及查询向量;
[0071]基于获得的键向量和查询向量,计算入流和出流;
[0072]基于出流以及值向量,计算竞争;并基于键向量、查询向量、入流以及竞争,计算汇聚;
[0073]基于所述汇聚和入流,计算得到分配结果。
[0074]进一步的,所述将所述多维监控指标序列数据输入预先训练的Transformer模型中进行故障分类,获得故障类型分类结果,具体为:
[0075]将计算得到的分配结果,输入至Transformer模型中的Add&Norm网络层进行残差连接计算,并将输出的结果输入至Feed Forward层,并经归一化层处理后,获得分类结果。
[0076]进一步的,所述获得各单一指标数据的纵向序列和横向序列,具体为:所述纵向序列为单一指标过去几个周期内同时间阶段数据形成的时间序列;横向序列为单一指标在当前时间临近的若干个时间步长中形成的时间序列。
[0077]进一步的,所述监控指标数据包括CPU使用率、内存使用率、网络传输速率、网络接收速率、每秒文件写入字节、每秒文件读取字节及活动线程数。
[0078]进一步的,所述预处理包括数据清洗、缺失数据补全、数据定义以及规范化处理。
[0079]具体的,为了便于理解,以下结合附图对本实施例所述方案进行详细说明:
[0080]如图1所示,本实施例提供了一种软件系统性能故障预测方法,其具体包括如下步骤:
[0081]步骤1:监控指标数据获取
[0082]借助软件系统的监控工具收集系统在运行时的监控指标数据,包括:CPU使用率(CPU)、内存使用率(mem)、网络传输速率(netTransmit)、网络接收速率(netReceive)、每秒文件写入字节(diskWritten)、每秒文件读取字节(diskRead)及活动线程数(thread),上述监控指标数据包括正常数据与异常数据、纵向数据与横向数据,并对监控数据进行预处理,其中,所述预处理包含数据清洗、缺失数据补全、数据定义以及规范化处理,之后将各类指标数据进行结合并转换成可以输入神经网络的格式,得到单一指标序列数据与多维指标序列数据。
[0083]步骤2:如图2所示。基于得到的单一指标的两类序列数据,纵向数据 横向数据 采用交叉注意力获得两种序列间的相互依赖关系。其中,纵向序列指单一指标过去几个周期内同时间阶段数据形成的时间序列,例如当前时间为15:00,指标数据以天为周期,纵向序列数据为过去t天15:00的数据构成的序列,而横向序列指单一指标在最近几个时间步长中形成的时间序列,例如当前时间为15:00,以每分钟一个时间步,横向序列数据为过去t分钟的数据构成的时间序列。
[0084]基于双序列向量,计算序列间的交叉注意力向量 和
[0085]其中,V cd ,W cd ,U cd ,V dc ,W dc 和U dc 表示的是参数向量。
[0086]基于得到的交叉注意力向量,计算LSTM的输入:
[0087]对于输入的数据,使用输入门i t 控制当前时刻的候选状态 需要保存多少信息:
[0088]i t =σ(W i x t +U i h t-1 +b i )
[0089]使用遗忘门f t 控制上一时刻的内部状态c t-1 需要遗忘多少信息:
[0090]f t =σ(W f x t +U f h t-1 +b f )
[0091]使用输出门o t 控制当前时刻的内部状态c t 有多少信息需要输出给外部状态h t :
[0092]o t =σ(W o x t +U o h t-1 +b o )
[0093]其中,σ为Logistic函数,x t 为当前输入,h t-1 为上一时刻的外部状态。
[0094]之后,计算候选状态
[0095]并更新记忆单元c t :
[0096]再将内部状态信息传递给外部状态h t :
[0097]h t =o t ⊙tanh(c t )
[0098]上述公式中,W、U、b为可学习的网络参数。
[0099]根据上述步骤得到状态向量H[h 1 ,h 2 ,…,h t ],并输入至全连接层获取单一指标预测值。
[0100]步骤3:基于得到的预测值,计算其与实际监测值的差值,并将差值与指定阈值进行比对,若其未超过阈值,则判定为无异常发生;若差值高于指定阈值,则输出故障预警,并将多维监控数据输入至分类模型中。
[0101]对于收集到的多维数据,将第i步(即第i时刻)的监控数据相结合,得到序列 {CPU i ,mem i ,netTransmit i ,netReceive i ,diskWritten i ,diskRead i ,thread i }
[0102]将t步序列结合,得到
[0103]步骤4:基于得到的多维监控数据,将其输入至改进的Transformer模型中。
[0104]如图3所示,在原始Transformer模型中,注意力机制采用的是多头注意力机制,计算成本较高,本发明使用基于相似性分解的注意力机制,提高计算效率。
[0105]对于输入至模型的多维监控序列数据 根据 得到键值对与查询向量:
[0106]其中,W q 、W k 、W v 分别为查询-键-值的线性映射参数矩阵,为可学习的参数;Q,K,V分别为由查询向量、键向量和值向量组成的矩阵。
[0107]之后,计算入流I和出流O:
[0108]基于得到的I与O,计算竞争v^与汇聚A:
[0109]最后计算分配结果R:
[0110]R=Sigmoid(I)⊙A
[0111]基于得到的结果R,将其输入至Add&Norm网络层中进行残差连接计算:
[0112]基于得到的输出,输入至Feed Forward层,得到输出
[0113]Y=max(0,outputAdd·W 1 +b 1 )·W 2 +b 2
[0114]output=LayerNorm(outputAdd+Y)
[0115]上述公式中,W 1 、W 2 、b 1 、b 2 为可学习的网络参数。
[0116]基于得到的output,输入至全连接层并使用softmax预测函数,计算预测函数输出值的损失函数,采用反向传播算法训练模型的学习参数,完成故障分类。
[0117]实施例二:
[0118]本实施例的目的是提供一种软件系统性能故障预测系统。
[0119]一种软件系统性能故障预测系统,包括:
[0120]数据获取单元,其用于获取待测系统运行时的监控指标数据,并进行相应预处理;
[0121]交叉注意力预测单元,其用于基于预处理后的监控指标数据,获得各单一指标数据的纵向序列和横向序列;基于交叉注意力机制获取所述纵向序列和横向序列的交叉注意力向量,基于所述交叉注意力向量及预先训练的LSTM模型,获得各单一指标的预测值;
[0122]预测值分析单元,其用于计算所述预测值与实际监测值的差值,若存在单一指标预测值与实际监测值的差值超过预设阈值,则判定存在异常发生,输出故障预警;
[0123]故障分类单元,其用于将各单一指标数据序列结合,获得多维监控指标序列数据;并将所述多维监控指标序列数据输入预先训练的Transformer模型中进行故障分类,获得故障类型分类结果,其中,所述Transformer模型采用基于相似性分解的注意力机制。
[0124]进一步的,本实施例所述系统与实施例一所述方法相对应,其技术细节在实施例一中进行了详细说明,故此处不再赘述。
[0125]在更多实施例中,还提供:
[0126]一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成实施例一中所述的方法。为了简洁,在此不再赘述。
[0127]应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0128]存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
[0129]一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一中所述的方法。
[0130]实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
[0131]本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元即算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0132]上述实施例提供的一种软件系统性能故障预测方法及系统可以实现,具有广阔的应用前景。
[0133]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。