提高分布式系统性能调优速度的方法

文档序号:6575062阅读:196来源:国知局
专利名称:提高分布式系统性能调优速度的方法
技术领域
本发明属于计算机性能优化领域,具体属于三层服务器(网页服务器,应用程序服务器和数据库服务器)系统的性能优化领域。

背景技术
随着在线用户数量的不断增多和用户对于应用需求的不断提升,给分布式系统性能调优领域带来了诸多的挑战。集群计算、网格计算、赛百平台,都是利用复杂的分布式系统来满足个人、商业、政府等各领域、各层次的不同需求。如今,被工业界和学术界广泛推崇的,致力于完全改变现有的计算机运行模式的云计算技术应运而生。其核心思想是将数据放在一片巨大的服务器“云”后台,前台的终端用户只需要一个轻易便捷的浏览器即可随时随地的存取到自己放在“云”后台的所有资源。技术思想诞生后,微软、谷歌、IBM、亚马逊等争相逐鹿,纷纷推出自己的云计算产品和技术。在国内,中国移动通信研究院也在研究云计算下给予手机访问的数据中心构建。纵观整个技术的发展趋势,大量数据中心的服务器系统的建立是这些名企在今后市场竞争中最明显的趋势。于此同时,各大商业网站,像亚马逊,ebay和中国的淘宝网等都有自己的服务器集群系统。系统的性能调优一直是各大知名企业、学术会议和科研刊物等关注的话题。
系统调优有软性和硬性两个方面。硬性主要在于针对应用的具体类型和面对的应用规模,选择与其相适应的硬件设备集群系统,在“量”上解决供需矛盾。我们可以很明显的看得出来,仅仅靠投入更多的硬件设备会给企业带来巨大的经济负担,是一种粗放型的提升性能的方式。并且在很多时候,系统的性能提升光靠硬件方面的投入收获系统性能的提升幅度是比较小的。于是集约型的性能提升方式,即从软性角度来调整系统性能成为了现阶段的研究热点。问题即是,如何在有限资源的情况下,提升系统性能从而满足用户需求是一个更有挑战的问题。其考察指标主要有两种 一.系统的平均吞吐率,即单位时间平均处理请求的数量。
二.系统的平均响应时间,即平均每个请求的处理时间。
在软性调优的研究领域,对于系统配置参数(如会话时间,最大线程数量,最大连接数量,缓冲池的大小等)的综合调整是其中的之一。主要体现在其操作简单、成本低廉以及效果明显。传统的硬性调优主要将优化参数的配置设想成一个黑盒子(Black Box)的优化问题,然后采用进化计算等方法进行调优。最近有学者提出应用爬小山法(Small HillClimbing)算法,其充分利用梯度信息和过去的优化结果,仿真结果明显优于传统的模拟退火算法和随机迭代搜索算法。也有学者提出中利用协方差矩阵算法(Covariance MatrixAlgorithm),挖掘系统性能时不仅采用广度搜索(Exploration),而且结合深度搜索(Exploitation)的方法。测试结果比爬小山法提升了3%的性能,是目前文献中出现的前沿技术中最行之有效的方法之一。于此同时,检查点技术最近也被提出并且应用到系统性能提升中,其主要是利用记录每次系统的状态来分析系统在这一个“检查点”时刻的性能。以上各类方法各有千秋,均能在一定程度上提升系统的整体性能,共同的不足之处在于其测量时间过长。虽然其具备很好的理论基础与试验价值,其推广到商业中的应用价值却受到很大的限制。
面对参数空间的膨胀以及相当长的测试时间问题,近来也有学者提出利用预测系统性能方式提升系统性能同时降低仿真时间。其所给出的试验结果确实降低了测量时间并且提升了系统性能,但是其给出的实例中,搜索空间对于离散情形很适用,但是推广到连续空间以后,问题就会凸现出来。因为其搜索空间对于特定的参数配置是有效的,但是其搜索能力受到了一定的限制。
在这种应用需求下,是否能设计出一套系统,既能显著提升分布式计算系统的性能,又不需要大量的测试测量时间成为当前的一个重要议题。


发明内容
本发明的目的在于为分布式系统性能提升提供了一套行之有效的方法。不仅极大的降低了响应时间,提高了吞吐率;同时也能降低调优的时间。
本发明的特征在于所述方法是一种包括网页服务器,应用程序服务器和数据库服务器在内的由三层服务器组成的分布式系统的调优方法。
本发明的测试在三层分布式系统上进行。第一层web Server(网页服务器)层,主要是展示HTML/XML,第二层是Application Server(应用程序服务器)层,第三层是DatabaseServer(数据库服务器),我们应用系统用户登陆,列出工作,选择工作,执行工作最后返回的业务流程。基本上大多数用户登陆到办公OA后执行的都是类似的工作。系统同时产生410个用户来压整个系统,使得系统的真实性能能够体现出来。通过对比序优化和协方差矩阵算法来对系统的参数进行调整。通过测试结果我们也能看出,序优化在整体测试效果上和协方差矩阵算法相差不大,但是在仿真时间上,序优化能节省一半以上的测试时间。



图1.本发明的程序流程框图。
图2.本发明的排序性能曲线的类型图(Bell型曲线图)。
图3.系统的结构图和工作流程图 图3.1系统的结构图, 图3.2系统的工作流程图。
图4.协方差矩阵算法(CMA)和序优化(OO)吞吐率比较图(实线CMA,虚线OO)。
图5.协方差矩阵算法(CMA)和序优化(OO)响应时间比较图(实线CMA,虚线OO)。
图6.协方差矩阵算法(CMA)和序优化(OO)试验时间比较图(实线CMA,虚线OO)。
图7.粗糙模型的神经网络框图。

具体实施例方式 前提假设我们现在调优的分布式计算系统含有n个参数{p1,p2,…,pn},参数pi的取值范围是[pi,pi],算法如下 (1)将所有的[pi,pi]线性量化到
中。
(2)随机均匀的在
取200组参数{v1,1,v2,1,…,vn,1}{v12,v22,…,vn2},…,{v1,200,v2,200,…,vn,200}并将其线性量化回到原来的区间[pi,pi]。
(3)测试上述200组参数下的输出,设响应时间和吞吐率分别为(t1,1,r2,1),(t1,2,r2,2),…,(t1,200,r2,200)将测试的200组输出结果用来训练具有两个隐藏层的三层神经网络模型(其模型的原理和分析过程见附件1,亦可见Simon Haykin编著的Neural Network第四章第111页神经网络模型的使用方法)。神经网络的每一个节点采用的logistic函数。在matlab软件里有专门的神经网络模型工具箱(开始->工具箱->神经网络->神经网络工具),在工具箱中直接将以上200组输入和输出结果作为训练数据,点击开始就可以训练这个神经网络模型了。
此模型只需计算一次即可。重复步骤(1)和(2),再选取200组参数{v′1,1,v′2,1,…,v′n,1},{v′12,v′22,…,v′n2},…,{v′1,200,v′2,200,…,v′n,200}作为样本,用已经训练好的图1中的神经网络进行测试,得到输出结果(t′1,1,r′2,1),(t′1,2,r′2,2),…,(t′1,200,r′2,200)。这部分结果分别称之为粗糙模吞吐率和粗糙响应时间。
(4)使用粗糙模吞吐率或粗糙响应时间估计出系统的问题的OPC(OrderedPerformance Curve,排序后性能曲线)类型(Flat,U-Shaped,Neutral,Bell or Steep)。此时可以仅用粗糙响应时间来代替系统性能进行分析。我们抽取出(3)中获得的200组粗糙响应时间{r′1,1,r′1,2,...,r′1,200},对其进行排序,假设排序后按照升序排列的粗糙响应时间为{r′1,[1],r′1,[2],...,r′1,[200]},设其对应的参数配置为{v′1,[1],v′2,[1],…,v′n,[1]},{v′1[2],v′2[2],…,v′n[2]},…,{v′1,[200],v′2,[200],…,v′n,[200]}。通过以下方法计算OPC类型 子步骤(1)对于第i个响应时间r′2,[i],计算其yi=(r′1[i]-r′1,[1])/(r′1,[200]-r′1,[1])。
子步骤(2)对于第i个响应时间r′2,[i],计算其xi=(i-1)/(200-1)=(i-1)/199。
在[1,200]中遍历所有的i,这样就能获得200对(xi,yi),我们记其为A(x),并将其画在坐标轴上就得到了问题的OPC类型。其横坐标xi为归一化后的1到200,纵坐标yi为性能的归一化排序。如图2所示。在多次的实验中,问题类型均为标准的Bell型,说明问题本身是属于Bell类型的。
(5)确定噪声等级。将(3)中获得的200组输出进行平均,即 作为输出,然后分别计算t和r的噪声等级,为Nt=|max(t1,i-t)|/[max(t1,i)-min(t1,i)]和Nr=|max(r2,i-r)|/[max(r2,i)-min(r2,i)],其中i=1,2,…,200。取Nt和Nr中的较大值为噪声大小,如果此值大于2.5,则为大噪声类型,如果为2.5和0.5之间则为中等噪声类型,如果小于0.5则为小噪声类型。
(6)确定选择集合的大小s。
子步骤(1)确定“足够好”集合的大小g。序优化理论中,要求我们将寻求最佳(g=1)的参数配置,软化为寻找“足够好”的参数配置。也就是说,从寻找“最优解”到寻找“满意解”的过程。我们试验中选择(g=20)为满意解。即寻找到真实性能排列在前20的参数配置即可。
子步骤(2)确定需要对准点的数量k。我们选择了真实性能排在前20为足够好的解,同时我们需要确定,用我们的方法找到此20个中的多少个为满意。此数量即为对准点的数量k,我们设置其为5。即找到真实排名前20中的任意5个我们就满意了。
子步骤(3)确定需要对准的概率α。子步骤(2)中问题,即找到真实情况排名前20中的任意5个,是以概率保证的。我们需要此概率不低于对准概率α。设置其值为98%。
子步骤(4)然后通过查找回归函数表(此表见附件2,亦可见Ho Yo-chi等编著的《Ordinal Optimization》第20页)来获得我们需要取样的空间s大小。首先,我们根据步骤(4)和(5)中确定的OPC类型和噪声等级来确定回归函数的参数Z1,Z2,Z3,Z4。其中e为2.71828,g为子步骤(1)中设置的20,k为子步骤(2)中设置的5,然后我们可以直接计算出取样空间s的大小。
(7)测试粗糙响应中排在前s的参数配置以获得最优解。找到步骤(4)中粗糙响应时间的前s的参数配置{v′1,[1],v′2,[1],…,v′n,[1]},{v′1[2],v′2[2],…,v′n[2]},…,{v′1,[s],v′2,[s],…,v′n,[s]},测试每一组参数获得最好的结果即解决了本问题。
我们考虑了系统的7个参数来做测试。分别是[MaxKeepAliveRequests,KeepAliveTimeOut,ThreadCacheSize,MaxInactiveInterval,MaxConnections,KeyBufferSize,SortBufferSize]。其实际物理意义分别是[最大保持请求的连接数量,保持连接的时间,线程缓冲池的大小,最大无活动请求的时间间隔,最大连接数量,关键缓冲区大小,排序缓冲区大小]。这些参数在系统被压力测试后能通过调整其取值来改善系统整体性能。它们的默认值是[100,5s,8,2s,400,10M,256K]。这些参数的取值范围是[10,500]×[10s,200s]×[5,100]×[5s,50s]×[100,500]×[8M,64M]×[128K,1024K]。取值范围是根据我们实验的具体类型来决定的,所以默认值并不一定在我们选取的范围之内。某些参数的取值空间依赖于应用类型,诸如ThreadCacheSize和MaxInactiveInterval。某些参数取值范围依赖于服务器的特性,诸如SortBufferSize,当MySQL需要重建索引的时候会分配空间,大的取值有时候在应用中会导致系统性能的下降。所以在某种程度上说,系统的取值依赖于应用本身,也依赖于我们选取测试服务器的类型。
我们产生了410个虚拟用户来测试这个三层系统。为了使得系统测试能够更加符合真实场景,我们没有同时产生所有的虚拟用户。相反,我们采用60秒的间隔时间来不断的增加用户的数量。完成了所有任务的用户会退出系统。然后我们利用LoadRunner 8测试获得系统在默认参数下的性能值如下 平均吞吐率(请求/秒)149.21 平均事件的响应时间(微秒)501.8 很多因素都会影响到系统的系能,比如网络环境,服务端资源利用率,客户任务的执行时间和顺序等等。在我们的实验中,就算是相同的执行参数配置情况下,也有可能导致不一样的性能测试结果。所以我们在每组参数在特定取值下,会多做几次压力测试取平均值来表达系统的真实性能。
根据现有的若干组输入/输出对的数据,我们就能够来训练我们的神经网络模型来获得本系统的粗糙模型。在这个特定问题中,我们利用图1中介绍的三层网络模型同时获取系统的噪声类型。测试中发现本问题是高噪声类型问题,其原因是系统中的不确定和随机因素太多造成的。然后我们结合问题类型(Bell类型),给定的足够好的解集,我们预设其为g=100(事实上,由于比较庞大的搜索空间,此值可以根据需要取得更大),需要对准的足够好的解的数量为k=15(同样可以根据问题规模来进行调整),对准概率设置为α=98%,通过查找关系对照表,我们获得选择数据集合大小为s(k,g)=20。
实验在上述三种性能评价指标下展开,即平均吞吐率、单位时间HTTP响应个数、平均事件的响应时间。测试结果可以参见下一节效果图。
在试验21中,CMA取得最优解XCMA=[126,28.19,16,29,89,136,323.51]T,其吞吐率和响应时间分别是t(XCMA)=185.73(请求/秒),r(XCMA)=361(微秒),分别比默认参数下的结果优化了24.5%和28.1%。序优化在第四次试验取得最优解,其参数是X00=[194,46.28,46,35,101,188,445.95]T,其吞吐率和响应时间分别是t(X00)=156.6(请求/秒)和r(X00)=392(微秒),分别比默认参数下的结果优化了5.0%和21.9%。
将序优化方法和现在已有的协方差矩阵算法进行比较,我们可以从实验图中看出,协方差矩阵算法作为一种进化算法,其本身对于特定问题来说是特别稳定的。其采用了深度探索(Exploitation)和广度探索(Exploration)相结合的方法使得系统更容易找到满意解。事实上,和大多数启发式算法一样,此方法的弊端就是很容易陷入局部最优解从而使得算法结束。而序优化则更多的是利用全局信息(即利用神经网络和噪声信息估计系统的问题类型和满意解的分布),从而能够更好的把握住全局信息。但是序优化的缺点就是缺少局部追逐的功能。但是对于此类三层系统优化来说,学者提出将其用一个黑盒模型来概括,就是描述其复杂的局部特性,在这种情况下,序优化的优势就能体现出来。实验中,我们采用了(4,9)的CMA算法,通过了5次迭代以后,系统收敛到了最优解。我们在同样的环境下用序优化做测试,可以看出,在实际性能上面,序优化损失了一定的稳定性(图中的波动幅度比CMA算法大得多),但是综合性能却和CMA算法相差无几。
同时,试验时间也是我们考量的一个方面。序优化的测试时间包括建立神经网络粗糙模型的时间,定义OPC类型和噪声等级的时间,查表和获取选择集合大小的时间。因为这些时间的获取只需一次实验即可获得,其相对系统测试的时间来看可以忽略。然后我们考量实际系统的测试时间。我们每次试验重复了50次迭代,总共做了400次实验。
在图6时间对照表中,能看得出序优化能够降低某些实验时间达75%,平均下来,序优化能比CMA算法降低40%的实验时间,这能够证实在快速优化多层分布式系统中序优化的益处。
表1回归函数值of Z1,Z2,Z3,Z4 in Z(k,g)


权利要求
1、提高分布式系统性能调优速度的方法,其特征在于所述方法是一种包括网页服务器,应用程序服务器和数据库服务器在内的由三层服务器组成的分布式系统的调优方法,在所述服务器群中依照如下步骤实现
步骤(1)初始化
设定N个参数p1,p2,…,pN,N=7,所述七个参数为最大保持请求的连接数量MaxKeepAliveRequest,保持连接的时间KeepAliveTimeOut,线程缓冲池的大小ThreadCacheSize,最大无活动请求的时间间隔MaxInactiveInternal,最大连接数量MaxConnections,关键缓冲区的大小KeyBufferSize以及排序缓冲区的大小SortBufferSize,以上所述各个参数的取值范围假设为[pn,pn]n=1,2,...,N;
步骤(2)把所述N个参数的取值空间线性量化到
中;
步骤(3)随机均匀地在所述空间
中取200组参数{v1,1,v2,1,…,vN,1},{v1,2,v2,2,…,vN,2},…,{v1,200,v2,200,…,vN,200}中,下标中第一个字母代表所述参数的序号,第二个字母代表所述参数组的序号,然后将以上所有取得的参数值线性量化回原来的参数取值空间[pn,pn],n=1,2,...,N中;
步骤(4)在真实环境下,测试以上200组N个参数的响应时间和吞吐率,其分别表示为(t1,1,r2,1),(t1,2,r2,2),…,(t1,200,r2,200),将步骤(3)(4)中测试的200组输入/输出结果用来训练具有两个隐藏层的三层神经网络模型,神经网络的每一个节点采用的logistic函数,此神经网络模型只需要训练一次;
步骤(5)重复步骤(3),再选择200组,每组N个的参数{v′1,1,v′2,1,…,v′n,1},{v′12,v′22,…,v′n2},…,{v′1,200,v′2,200,…,v′n,200},线性量化后作为输入到步骤(4)中确定的神经网络模型中,得到一个新的200组,每组N个参数的粗糙响应时间t’和粗糙吞吐率r’,表示为(t′1,1,r′2,1),(t′1,2,r′2,2),…,(t′1,200,r′2,200);
步骤(6)使用粗糙模型构造的响应时间代表系统性能进行分析时按照以下步骤估计代表系统性能特性后的理想化曲线OPC,Ordinal Performance Curve排序性能曲线类型
步骤(6.1)对步骤(5)取得的200组参数的响应时间t′1,1,t′1,2,...,t′1,200进行升序排列t′1,[1],t′1,[2],...t′1,[200],得到相应升序排列后的200组参数表示为{v′1,[1],v′2,[1],…,v′N,[1]},{v′1,[2],v′2,[2],…,v′N,[2]},…,{v′1,[200],v′2,[200],…,v′N,[200]},
步骤(6.2)对于第i个响应时间t′1,[i],计算yi=(t′1,[i]-t′1,[1])/(t′1,[200]-t′1,[i]),yi表示第i个响应时间和最小响应时间之差相对于最大响应时间和最小响应时间之差的比值,
步骤(6.3)对于第i个响应时间t′1,[i],计算xi=(i-1)/(200-1)=(i-1)/199,xi表示第i个响应时间的序号和最小响应时间的序号之差相对于最大响应时间的序号和最小响应时间的序号之差的比值,
步骤(6.4)将步骤6.2和6.3中得到的200组参数对(xi,yi)记为y=A(x),并作为直角坐标系下的纵轴,横轴坐标将区间1到200归一化为区间0到1之间,记问题的排序性能曲线为Bell类型的OPC,其意义是参数中比较“好”的解和比较“劣”的解在位置上是均匀分布的;
步骤(7)确定噪声等级
步骤(7.1)把步骤(4)中得到的200组响应时间和吞吐率结果进行平均以后得到
步骤(7.2)按下式分别计算响应时间t和吞吐率r的噪声等级
响应时间的噪声等级Nt为Nt=|max(t1,i-t)|/[max(t1,i)-min(t1,i)],
吞吐率的噪声等级Nr为Nr=|max(r2,i-r)|/[max(r2,i)-min(r2,i)],
比较Nt和Nr的大小,取较大者为系统的噪声大小;当所选的噪声大于2.5时,为大噪声类型;大于l小于2.5时为中等噪声类型;小于0.5为小噪声类型;
步骤(8)从步骤(6.1)得到的200组参数表示中{v′1,[1],v′2,[1],…,v′N,[1]},{v′1,[2],v′2,[2],…,v′N,[2]},…,{v′1,[200],v′2,[200],…,v′N,[200]}得到足够好的前s个集合{v′1,[1],v′2,[1],…,v′N,[1]},{v′1,[2],v′2,[2],…,v′N,[2]},…,{v′1,[s],v′2,[s],…,v′N,[s]}
步骤(8.1)设定满意解的数量为g=20,对准概率为α=98%,满意解中需要对准的解的数量k=5,所述对准的解是指在所述20个满意解中,能够找到的解的数量,
步骤(8.2)确定回归函数中的参数Z1,Z2,Z3,Z4的大小,以上参数的确定取决于2个回归因素组成的回归因素集合步骤(6)所述排序性能曲线,步骤(7)所述的噪声等级,就可通过查找回归因素集合和参数对照表唯一确定Z1,Z2,Z3,Z4的大小,结合步骤(8.1)所述的满意解的数量和对准解的数量,带入到回归函数中就得到s的大小,常数e=2.71828。
全文摘要
提高分布式系统性能调优速度的方法属于分布式计算机系统性能优化技术范畴,其特征在于,在一个包括网页服务器、应用程序服务器和数据库服务器在内的由三层服务器组成的分布式系统内,把具有各自取值范围的参数量化为统一的参数集合,通过均匀采样获得参数集合,再用一个具有两个隐藏层、每个结点都是logistic函数的三层神经网络模型进行训练,然后重复采样将新的参数在神经网络中进行测试获得粗糙响应时间和粗糙吞吐率,再基于系统性能优化的要求,确定该神经网络的排序性能曲线和噪声等级,最后根据设定的相关性能要求获得回归函数的参数从而得出我们需要的最优参数解。本发明的优点在于提升了系统性能的同时,也降低了测试时间。
文档编号G06F9/46GK101609416SQ20091008822
公开日2009年12月23日 申请日期2009年7月13日 优先权日2009年7月13日
发明者曹军威, 帆 张 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1