应用服务器的软件老化测试

2009-03-23 02:40徐文彬常晋义
计算机时代 2009年1期
关键词:老化

徐文彬 常晋义

摘要:负载对应用服务器系统老化有很大影响。为了揭示这种现象,设计了实验方案,通过改变实验参数,得到结论:内存消耗是应用服务器系统老化的主要原因,而负载的轻重对应用服务器系统老化速度有直接的影响。该结果可作为实验数据分析的基础。

关键词:老化;内存消耗;已用内存;负载

0引言

应用服务器是分布式网络环境下,为应用提供企业资源集成、事务处理、业务组件管理和部署等基础服务的支撑平台,其技术发展十分迅速。但是,服务器的性能衰退乃至服务器崩溃严重地制约了服务器的可靠性,如何构建强壮、可靠、高性能的应用服务器平台是一个需要解决的问题。

以往,人们对通信系统的可靠性研究往往着眼于硬件的可靠性,随着软件在整个系统中的地位不断上升,软件可靠性问题已经成为制约系统可靠性发展的主要瓶颈。随着软件规模的增大以及软件重用的普及,排除软件系统中所有的缺陷变得越来越不可能。在运行过程中,这些缺陷随着时间逐渐累积,会导致软件的性能下降,最终造成系统失效和停机。这一过程就称为软件老化。近年来的研究结果表明,许多软件系统都存在老化现象。

为了抵消软件老化造成的影响,众多文献对软件老化进行了研究。但这些文献基本上集中在研究操作系统的老化上,对应用服务器中间件的老化研究均未涉及。本文采用测量的方法对一个实际的应用服务器进行实验,考察负载对系统老化的影响。通过对实验结果的分析,发现负载的轻重对软件老化的速度有重大影响。该结论可作为实验数据分析的基础。

1实验环境的构建

实验环境由三台计算机构成。一台作为测试服务器(CPU 2.G Hz,内存2G),另外两台作为负载发生器(cPU2.8G Hz,内存2G和CPU 3.0 GHz,内存1G),向服务器发送http请求,如图1所示。

服务器采用IBM的Websphere Application Server5.1,运行在Windows 2003 Server上。测试用例采用Websphere Application Server5.1自带的petstorel.3.1-02。Petstore是Sun公司在J2EE平台上开发的一个样例,是Java技术在J2EE上的蓝图程序,对于J2EE服务器测试有较强的代表性。Petstore采用MVC模式设计,由EJB层处理业务逻辑。它的数据库是IBM的CloudScape4.0,集成在Websphere内部。

负载发生器分别运行在Windows 2003 Server和Windows XP上。两个负载发生器同时向服务器发送负载请求,负载模拟真实情况中大量用户对服务器的访问。

数据采集工具使用Websphere自带的Tivoli性能查看器(Tivoli Performance Viewer)。它可以监控系统资源的使用情况,也可以从Websphere内部提取J2EE Server相关参数。

2实验方案

为了有效考察应用服务器的性能衰退情况,特设计了如下的实验方案:

(1)确定负载类型。根据有无状态、有无事务分成四种请求类型,还有一种是模拟真实的客户请求场景。

(2)确定在当前负载情况下服务器所能处理的最大峰值:逐渐增大请求率,并记录响应时间。如果发现到某个请求率时响应开始超时丢包且继续增大请求率时丢包率也增大,则可认为最大峰值就是产生丢包之前的请求率。

(3)根据所测量的峰值从低到高分几档确定客户端的请求率。

(4)在当前请求情况下,每隔一定时间间隔(需要根据老化速度而定,如5分钟或10分钟。如果老化时间很长,则应选较长的间隔,否则文件太大而且也没有必要。反之则应选择较小的间隔)需要记录的状态包括两大类:客户端、服务器端。

客户端要记录每次请求的响应时间,如果超时则记为-1:

服务器端要记录反映负载情况的状态:如CPU的任务切换次数/秒、页面调入率、页面调出率、系统调用率;反映当前系统状态的状态:如CPU的利用率、空闲内存空间、已用交换空间、队列长度;反映中间件系统的状态:JVM堆大小、使用内存;Servlet容器参数包括:Servlet运行数量和用户单位事件请求数量;EJB容器参数包括:SessionBean组件、EentityBean组件和MessageDriverBean组件而建立的其创建组件数量、运行组件数量、池态组件数量。

3测试结果

测试目标有:测试J2EE服务器中是否存在软件老化现象;如果存在老化现象,负载对老化速度的影响有多大。

为了完成这两个任务,设计了不同强度的负载。我们发现,服务器宕机直接原因是内存耗尽,然而,宕机时间与负载强度有紧密的关系。

3.1峰值测试

为了模拟真实场景,将用户分为三类:浏览用户(只对商品进行浏览,不登录,也不购买)、登录用户(登录后浏览商品,不购买)、购买用户(登录服务器后,选择商品购买)。三类用户是等概率随机到来的。

服务器的峰值是指服务器在单位时间内能够响应的最大用户数量。针对三种不同的用户分别测量其峰值。客户端在短间内向服务器发送等强度的负载,记录客户端是否得到响应及响应时间。如果客户端的响应结果全部为true,则加大负载强度,直到服务器无法响应所有请求。记录此时的负载强度,作为服务器的峰值。

3.2负载测试及结果分析

根据服务器的峰值,设计负载的强度。影响负载强度的两个主要因素是单位时间内发送请求的数量和服务的平均持续时间。

3.2.1重负载测试

采用与峰值测试中相同的服务平均持续时间,平均负载强度为峰值的30%,高峰期的负载强度为峰值的50%。服务器在运行43小时后无法响应客户端请求。

如图2所示,服务器宕机时,Java虚拟机使用内存达到250M左右。Websphere默认Java虚拟机堆的初始大小为128M,最大值为256M。因此,可以得到结论,内存耗尽是系统宕机的原因之一。

3.2.2轻负载测试

降低单位时间内发送请求的数量,将平均负载强度和高峰期负载强度都降低20%,服务器在运行140小时后无法响应客

如图3所示,服务器宕机时java虚拟机使用内存在250M左右,与重负载情况相同,再次证实了内存耗尽会引软件老化。

实验中,负载强度仅减小了20%,服务器运行时间延长了3倍多,可见,负载强度是影响软件老化速度的主要因素。

3.2.3延长服务平均持续时间

将服务平均持续时间延长至原来的6倍,单位时间内发送请求的数量与轻负载测试中相同,服务器在运行8小时后无法响应客户端请求。

服务器宕机时内存仍在250M左右,与上面的情况相同。

延长服务持续时间,意味着延长用户在服务器上的停留时间。EJB容器为用户保留占用的服务器资源,这会加快服务器的资源耗尽,因此大大缩短运行时间。

4结束语

通过设计的实验方案,证实了应用服务器在长期运行的情况下存在老化现象,并在实验中发现负载对老化速度影响明显。但是软件怎样老化、老化程度如何、如何度量其老化程度、什么时候进行模块的再生及如何再生尚有待进一步研究。

猜你喜欢
老化
基于HCD的适老化胶囊包装设计
延缓大脑老化,要怎样吃
青白江区医保保局“四举措”推行医保“适老化”服务
RAP料的老化性能与再生技术
室内老化和自然老化沥青性能及其对应关系研究
节能技术在开关电源老化测试中的应用
一种用于电磁炉老化的能馈型电子负载
考虑知识老化的知识网络演化模型
考虑知识老化的知识网络演化模型
杜绝初春老化肌