基于人工神经网络的软件老化状态检测毕业论文
2020-02-17 22:26:33
摘 要
现今,科学技术迅猛发展,给人们的生活带来了很大的便利,人们的生活越来越离不开计算机系统,系统故障的问题也随之出现。现阶段系统故障主要有三个原因:软件故障,硬件故障和设计失败。其中软件故障是导致系统故障的主要原因且大多数是由软件老化引起的。虽然软件开发人员和测试人员可以通过利用很多工具和技术来实现部分软件故障的排除,但实际上是不可能完全排除软件产品中的故障。因为软件老化主要是由内存泄漏,资源耗尽,数据更新不及时,存储空间破碎以及内部错误条件积累引起的。软件老化降低了系统的稳定性和可靠性,极大影响了网站的运行状况,也对公众的财产安全和生命安全有很大的影响。
本文利用Apache软件作为服务器,在另一台主机上利用JMeter来模拟对服务器的访问,进行压测。选取负载数量,每秒接收的数据量,每秒服务器处理的请求数目作为3个特征向量。因为平均响应时间是最能反应软件老化状态的特征向量,所以选取平均响应时间作为神经网络的输出值。利用MATLAB软件设计神经网络。为了减少BP神经网络随机初始化权重和阈值带来的影响,设计了基于AdaBoost算法的BP神经网络的软件老化预测模型。
实验结果表明,基于AdaBoost算法的BP神经网络的软件老化预测模型预测的误差更小,效果更好,能更好的预测软件的老化状态。
关键词: BP神经网络;软件老化;AdaBoost算法;性能分析
Abstract
Nowadays, the rapid development of science and technology has brought great convenience to people's life. People's life is more and more inseparable from the computer system. Therefore there is more and more software failure.There are three main reasons for system failure: software failure, hardware failure and human design failure. Software failure is the main cause and most of it is caused by software aging. Although software developers and testers can use many tools and techniques to try to eliminate software failure, but in fact they are unlikely to completely rule out the problems of software products. Software aging is mainly caused by memory leakage, resource depletion, untimely data updates, fragmentation of storage space and the accumulation of internal error conditions. Software aging reduces the stability and reliability of the system, and poses a threat to the normal operation of the website, people's property and life.
In this paper, Apache software was used as the server, and Jmeter was used to simulate the access to the server on another computer for pressure testing. The numbers of samples, throughput, amount of data received per second and average response time were selected as three feature vectors. The average response time can best reflect the aging state of the software,so the average response time is selected as the output of the neural network . the BP neural network model is designed in MATLAB.In order to optimize the weight and threshold of BP neural network randomly initialized, BP neural network is combined with AdaBoost algorithm to design the software aging prediction model of BP neural network based on AdaBoost algorithm.
The experimental results show that the bp neural network software aging prediction model based on AdaBoost algorithm can predict the aging state of software more accurately.
KeyWords: BP neural network;software aging;AdaBoost algorithm;performance analysis
目 录
摘要 I
Abstract II
第1章 绪论 1
1.1软件老化研究的意义 1
1.2国内外研究现状 2
第2章 研究方法 4
2.1 实验环境的构建 4
2.2预测的相关理论以及方法 5
2.2.1时间序列分析法 5
2.2.2灰色预测 7
2.2.3人工神经网络 8
第3章 基于BP神经网络的软件老化预测 10
3.1 BP神经网络的基础 10
3.1.1 BP神经网络的原理 10
3.1.2 BP神经网络的算法 10
3.2 BP神经网络软件老化的预测 12
3.2.1软件老化环境的设置 12
3.2.2 BP神经网络的设计 13
3.2.3实验结果分析 16
第4章 基于Adaboost算法BP神经网络软件老化预测 19
4.2预测基本步骤 19
4.3实验结果分析 22
第5章 总结与展望 23
5.1总结 23
5.1.1全文总结 23
5.1.2问题与解决 23
5.2展望 23
参考文献 25
致谢 28
第1章 绪论
1.1软件老化研究的意义
当今的应用程序在软件可靠性和可用性方面提出了严格的要求,因为在许多情况下,软件故障的后果可能导致巨大的经济损失或对人类生命造成的风险。然而,目前的开发水平很难通过人为设计去达到要求,特别是在尖端复杂性的应用中更难以容易出现软件故障。无论开发和测试工作做的如何,复杂的软件系统中仍然会包含残留故障[1]。当软件应用程序长时间连续执行时,软件系统会产生一些错误条件,某些故障会导致软件老化。软件老化会影响应用程序的性能并最终导致其无法运行[2]。Huang等人[3]在实际电信计费应用中报告了这种现象,随着运行时间变长,应用程序会遇到崩溃或出现宕机故障。Avritzer和Weyuker讨论了电信交换软件中的老化问题,其效果表现为性能逐渐降低[4]。在Netscape和xrn等广泛使用的软件中也观察到软件老化[5]。最经典的例子是爱国者导弹的软件老化,由于软件老化,导致导弹实际飞行路径和预计路径不同,造成巨大经济损失[6]。东京证券交易所因为软件老化使得软件无法提供服务,最终造成了巨额的经济损失[7]。一个机构调查发现,如果企业服务器出现软件老化,最终导致宕机现象出现的话,该公司每分钟将直接或者间接失去3万美元的收入[8]。根据Gartner Group的估算,40%的服务器故障都是由于软件老化的原因导致的[9]。因此软件老化的研究是非常重要的。长期运行的软件系统性能通常也会逐步下降,表现为服务响应变慢[10],服务受限也有可能出现服务失效现象,这种现象即为软件老化现象[11]。长时间运行的软件中的内存泄漏会极大地影响系统的可靠性和性能,它们通常是软件老化的一个因素。内存泄漏的常见原因是程序员错误地使用了内存管理例程。例如,在C 程序中不平衡地使用malloc / free。关于java程序,尽管JVM中内置了垃圾收集器,但java应用程序中仍然存在内存泄漏。下面,首先介绍JVM内存管理和垃圾收集机制,分析内存泄漏问题。JVM内存区域也称为(运行时数据区域)负责在程序在JVM中运行时存储数据(例如字节代码,对象和参数)以及返回值,局部变量和中间结果。JVM内存区域可以分为方法区,堆内存,堆栈,寄存器和本机代码堆栈。其中,堆内存用于存储类的实例或运行时JAVA应用程序的数组。内存管理本质上需要提供在其请求时动态地将部分内存分配给程序的方法,并在不再需要时释放它们以便重用。内存管理为新对象提供内存分配指令,但不支持内存释放指令,后者由垃圾收集机制实现。当JVM内存使用量持续增加并达到最大值时,垃圾收集器将自动启动以释放内存。但是,垃圾收集器只回收无用和未引用的对象,而无用和引用的对象无法从占用的内存区域释放,从而导致内存泄漏。同时,由于系统资源是有限的,垃圾收集器在内存释放期间将占用大量的CPU时间和系统资源。因此,连续出现的内存泄漏问题的累积效应将直接导致可用内存不足和与老化相关的系统故障。软件老化失效链如图1.1
图1.1 软件老化失效链
由软件老化引起的服务性能下降,停止服务现象虽然不可能完全消除,但是可以尽可能的去避免这种现象在核心领域发生的几率。针对软件老化现象,黄等人[13],提出了“软件复兴”技术,主要思路是选择时机让软件应用程序暂停服务,清理其内部环境,然后重新启动,进行服务。通过移除应计错误条件和释放或整理操作系统(OS)资源,这种技术可以预先预防未来系统意外停机。然而在进行维护时,一定会带来直接或间接的损失,所以如何选取一个最佳的复兴时机,选取什么样的复兴方案也是一个非常需要研究的问题。
1.2国内外研究现状
目前国内外学者对于软件老化分别从各个角度出发开展了相关研究,并且取得了不少研究成果,软件老化和复兴的研究大致可分为两种方法:基于测量的方法和分析建模方法。第一种方法把从系统中收集的数据进行统计分析,并应用趋势分析或其他技术来确定执行复兴的时间窗口,以防止意外中断。而分析建模方法是假设系统的故障和修复时间分布,来获得最佳的恢复计划以实现最大化可用性,或是得到最小化损失概率或最小停机成本。下面从国外研究状况和国内研究状况两个方面来介绍软件老化的研究现状:
国外研究状况为:Grag等人依据服务率的逐步减小来对性能降低进行建模,并且通过马尔可夫决策过程来确定用于软件更新时间的优化问题[14]。在文献[15]中,提出了基于相互传输的软件系统模型中考虑了软件老化和硬件故障对软件性能下降的影响,在该模型中,相互传输的服务率是随时间变化的,并且整体模型变为三态非齐次马尔可夫过(NHMP)。Okamura等人[16][17][18][19]从不同的角度修改并扩展了Garg等人的NHMP模型[15]。最近,Okamura和Dohi也提出了一个MDP用于传输系统的马尔科夫调制泊松过程,并分析了软件复兴方法的最优性[20]。由于假设所有系统状态在文献[20]中都是可观察的,因此基于MDP的动态策略不能直接应用于实际情况,Zheng等[21]假设传输系统的到达流遵循马尔可夫到达过程,并展示了一项综合研究,以比较六种软件更新模型,包括Garg等人提出的现有基于时间的策略[15]以及Okamura等人提出的基于工作量的政策。[16]中的工作分析了使用的检查点和复兴手段对软件程序的预期完成时间的影响。在[22]中,提出并分析了包括定期软件和系统恢复在内的预防性车载维护。Bobbio等人[23]和Okamura等人[24]提出了细粒度的软件退化模型最佳复兴方法,其中软件降级由复合泊松过程建模。前者提出了两种复兴方法; 风险等级的复兴方法和警戒阈值复兴方法,并在数值上评估了长期奖励措施,后者对数量的三种复兴政策进行了定量比较。Park和Kim[25]为电缆调制解调器终端系统和一些集群系统设计了最佳的复兴方案。通过考虑完全重启和部分重启动作,谢等人,考虑了基于检查的预防性维护并推出了两级软件复兴政策,然后,他们提出了一个半马尔可夫过程模型,以确定最大化的恢复计划,使系统可用性最大化[26]。
有一些是基于测量的方法,Garg等人提出了一种基于测量的方法,用于预测软件老化导致的操作系统资源耗尽的趋势和时间[14]。卡西迪等人为大型在线交易处理服务器开发了一种恢复活力的方法[27]。使用模式识别方法,他们发现有13个受监控参数在崩溃之前偏离了“正常”行为,提供了足够的警告来启动恢复活力。李等人提出了一种基于时间序列分析的方法,用于预测Web服务器中的资源使用趋势,同时使其受到人工工作量的影响[28]。
国内诸多学者也在这个方面开展了深入研究:杜小智等人对流媒体系统的软件老化进行了相关研究,采用Mann-Kendall方法检测软件老化的趋势[29]。李焱等人利用时序分析理论建立模型,最终能较好的预测出实际负载情况[30]。郭平等人详细研究了软件老化的成因,提出了基于时间和基于检测的抗软件老化方法[11][31],万群丽等人对Web应用所具备的特征进行分析,使用了以Agent为基础的软件抗衰措施,实验结果证明该措施具有计算方便的优势[32]。哈尔滨工程大学的陈小勇利用蚁群算法对BP神经网络进行优化,来检测软件老化的趋势[33]。
第2章 研究方法
2.1 实验环境的构建
一般而言,构建软件老化的实验环境有如下3种方案:
1.对实际长期运行的大型网站服务器,商用服务器进行数据监控,采集相关指标数据,优点是:这样采集到的数据更加真实,来源于一线数据更加贴切实际问题。缺点是大型网站服务器,或者是长期运行的大型商业服务器要具有保密性,难以去接触到数据,且这种类型服务器会定期优化,对检测老化有一定影响。
2.搭建一个流媒体服务器,然后模拟大量用户对该服务器同时进行访问,服务器无法支持足够多的用户访问,出现性能下降现象。Helix Server是在前些年广泛使用的流媒体服务器,技术相对成熟。Helix Server支持微软Windows media格式的视频音频文件文件和MMs协议,还支持Real格式的流媒体文件。利用RTsP协议以及RDT协议开发了HelixClientEmulator用于模拟大量客户端访问服务器上的流媒体文件。缺点是:测试数据不具备代表性,且该服务器在14年停止服务,之前的准许证提供的服务不稳定。
3.第三种方案:选择广泛使用的服务器作为软件老化预测的研究对象,设计一个计算机网络环境去模拟真实运行环境下的网络,利用压测软件Jmeter来进行压测,模拟软件老化。优点是实验环境搭建简单方便,通用服务器作为研究对象更具备代表性。
综合上述的3种方案,由于第三种方案环境搭建较为方便,可行性强,所以本文选择的是第三种方案。本文选取的Apache服务器,Apache遵循新的网络协议。使用的系统资源非常少,用户可以自己定制适合的模块构架,可以自己定义接口号,可以自己控制带宽,控制允许最大访问用户数。便于实现软件老化环境。本文用来模拟用户访问服务器的工具是Jmeter,Jmeter是一个开源免费的软件测试工具,可以对HTTP请求进行测试,可以配置服务器的名称和端口号、HTTP请求的方式、URL地址,负载等等,记录负载数量,每秒接收的数据量,每秒服务器处理的请求数目[34]。
图2.1实验平台拓扑图
2.2预测的相关理论以及方法
2.2.1时间序列分析法
时间序列分析法是对一组按时间顺序排列的数据进行数学处理,以来预测某一事件的发展规律。时间序列分析的原理是认为某一事情的发展具有连续性,我们可以根据该事物过去的一些特征值来推测该事物在未来的状况,是一种定量预测方法。二是认为任何事物的发展都不是稳定不变的,在必然中都伴随着偶然性,所以要使用一些数学方法对之前的一些数据进行处理,一般是使用加权平均法。这是方法的优点是变焦方便操作,可行性强缺点是准确率不高,不能用于长期预测[35]。
时间序列分析法的一般步骤[36]:第一步是获得初始数据,要对初始数据进行数学处理,来得到时间序列。然后要对获得的时间序列进行评测分析,根据分析来选择适合的数学方法进行预测。最后,我们利用得到的预测值来分析该事物以后的发展趋势。一般利用一下几种方法进行分析:
1.简单平均法:
首先获得初始数据,将获得的初始数据进行取平均值运算,将该平均值作为预测结果。公式如2.1
(2.1)
式(2.1)中,为最终的预测值,为获得的初始数据,n为时段。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: