通常软件失效的过程分为两个阶段,第一个阶段是软件从初始健康状态开始,经过一定的老化积累,到达软件可能失效状态,在该状态下软件依旧能够正常工作,但是随时可能出现失效的情况;第二个阶段是在可能失效状态下,未采用任何处理措施,最终到达失效状态。软件恢复技术的关键是在软件到达可能失效态时,消除软件失效的条件,即对软件采取自愈,使软件避免失效的发生,从而可以在健康态下长期运行。62972
因此,自愈触发间隔如何确定(初始状态到可能失效态之间的时间间隔),使系统自愈开销(服务响应时间、停机恢复花费、系统停机时间等)达到最低,成为研究软件自愈的关键。目前,确定自愈间隔的策略主要分成两类:基于时间的恢复策略(也称作基于模型分析的恢复策略)和基于检测的恢复策略。
1 基于时间的恢复策略
基于时间的恢复策略是根据以往软件衰退的规律,基于服务响应更快、系统服务率更高、停机时间最短、恢复成本最低等要求,建立模型,预先计算出最佳自愈间隔,并且按照该自愈间隔,周期性恢复性能出现衰退的系统。本文采用基于时间的恢复策略以确定自愈间隔。
该策略首先需要建立系统模型,在其基础上进行分析计算,以确定最佳软件自愈间隔使得系统反应时间最小、待处理事务丢失率最小、系统可用性最大。某些关键性的商业事务处理软件对系统的可用性和系统的反应时间都有非常严格的标准。通过分析各种不同种类的软件系统表明软件的失效和老化都不相同。
在由Huang等人提出的经典软件自愈模型中,系统运行一段时间后,性能出现衰退,实行软件自愈技术使系统恢复到正常态运行。而把上述模型用随机的连续时间马尔科夫链来形式化的模型在文献[24]进行了描述。Garg等人[25]发展了基于马尔科夫再生过程的分析模型文献综述,该模型将失效分布限制在超指数分布。Dohi等人提出了基于半马尔科夫链的自愈模型,优化的自愈策略设置了警示阈值,以控制的思想探索了一个闭环的软件自愈模型。Bobbio等人提出了一个细粒度的性能衰退模型,其中对系统所处于的衰退水平的识别是建立在对系统参数的观察的基础上。
2 基于检测的恢复策略
基于检测的恢复策略的基本思想为:周期性的监测系统的软件老化现象,收集决定运行软件的“健康”的属性的数据,然后统计分析这些数据,估计可能要发生软件失效的时间。也就是监测系统的软件老化现象,根据监测结果预测因为老化而造成的软件失效,然后通过采取主动措施的方式防止发生非计划性宕机。
大多数基于测量的方法必须观察系统失效时间和系统有错误出现的时间。lyer等人[27]提出在大型系统中,对出错数据的统计模式进行再生分析,来识别系统的持久性问题。Chillarege[24]等人讨论了分布式软件的平均失效时间的经验估计和软件失效率。文献[26]分析了系统负载对软件老化的效应问题。Lin等人[29]给出一种基于阈值预测的方法:观察CPU使用的限值、出错率提高时错误数量的阈值或者上述因素的结合。Garg等人提出了一个方法,用来估计系统资源消耗时间和趋势[30];Avritzer和Weyuker[31]通过监测一个大型电信系统给出了一种软件自愈策略,该策略可用来提高系统可用性和减少丢包率。Hansen和Siewiorek[28]提出在由单一缺陷产生多个错误的情况下,结合多个错误进行分析推导。Cassidy等人[32]在大型在线事务处理系统中运用了软件自愈技术。文献[33,34,35]介绍了在网络服务器里人为加入负载的方法,通过分析时间序列来监测和估计系统资源消耗的时间。