《用于预测多层计算机软件系统的性能的方法和设备的制作方法》由会员分享,可在线阅读,更多相关《用于预测多层计算机软件系统的性能的方法和设备的制作方法(4页珍藏版)》请在金锄头文库上搜索。
1、用于预测多层计算机软件系统的性能的方法和设备的制作方法专利名称:用于预测多层计算机软件系统的性能的方法和设备的制作方法技术领域:本发明涉及分布式计算。更具体地讲,本发明涉及用于预测在分布式计算机系统上运行的多层计算机软件系统的性能的方法和设备。背景技术:多层系统或架构是种计算机软件系统,其功能通过在分布式计算机硬件上运行 的几个软件组件的协作来实现。使用多层软件架构建立许多基于互联网的软件服务,诸如商业、旅行、卫生保健和金融场所。在这种架构中,前端web服务器(例如,Apache服务器或Microsoft的IIS服务器)接受用户请求并把它们转发给处理请求的应用层(例如,Tomcat或JBoss
2、服务器),并且必要的信息存储在存储层(例如,MySQL、DB2或Oracle数据库)中。建立多层软件服务的关键挑战在于能够满足服务的性能要求。设计过程通常包括回答问题,诸如“在每层中需要多少个服务器以便对于90%的请求提供50 ms的平均响应时间”。一旦建立,设计者随后经常担心当前架构是否能够满足未来的性能要求,例如,当由于服务的流行或极端事件(诸如,Slashdot效应或大規模DoS攻击)而导致请求工作量增加吋。提高复杂多层应用的性能是重要的任务,但常见的第一尝试解决方案是投入更多的硬件资源并分割工作量。云计算基础设施(诸如,Amazon的EC2和Google的AppEngine)已使扩展应
3、用可用的硬件资源变得既便宜又快速。例如,Animoto在三天内把它的EC2实例从300扩展至3000。这种弹性基础设施允许应用高度可扩展,然而,设计者必须小心地决定在哪里放置这些可用资源以在应用性能方面实现最大利益。为了回答这种问题,关键的是知道当扩展分配给服务的资源时的性能提高(或性能缺乏,暗示瓶颈)。准确地预测性能但并不实际按比例建立服务的能力能够显著地帮助这种服务的设计者提供高性能。然而,因为多层系统的复杂性质,预测多层系统的性能是有挑战性的。例如,典型的请求的处理需要不同层之间的复杂的相互作用。此外,这些应用具有重要的内部逻辑,例如,它们使用高速缓存并对最大线程的数量施加硬限制。最后,
4、在扩展部署中,可能出现新的相互作用或瓶颈,或者已有瓶颈可能在不同层之间移位。已提出许多统计方案(黑盒方案),这些统计方案试图通过推断随后用于预测性能的请求的端到端处理路径(诸如,远程过程调用(RPC)、系统调用或网络日志文件)建立整个系统的概率模型。这些技术是通用的,但缺乏高准确性。白盒方案或技术使用系统特定知识以通用性为代价提高准确性。Magpie需要中间件、应用和监测工具的修改,以便产生能够由Magpie理解并分析的事件日志。Pinpoint通过修改中间件利用ID标记每个请求,且然后通过聚类和统计技术使失败的请求与引起失败的组件相关联。Standust也通过修改中间件对于姆个请求使用ID,
5、把所有日志放在数据库中,并使用数据库技术分析应用行为。灰盒方案提供中间情况它们与白盒方案相比具有较小侵入性,但比黑盒方案更准确。例如,vPath提出用于在多层系统中捕捉请求的端到端处理路径的新方案。vpath的关键观测在于分配単独的线程用于处理多层应用中的各请求。这允许vPath把线程关联到与给定网络活动相关的系统调用,并因此准确地链接与单个客户端请求对应的各种消已有方法分别地建模或模拟多层系统的每层。由于在不同层的处理高度相关,所以这些方案在准确性方面受到限制。因此,需要用于建模或确定多层系统的性能的改进的方法和设备。发明内容公开了种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能
6、的方法。在一个实施例中,该方法包括以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件的层;收集多层计算机软件系统的软件组件的所有层之间的业务轨迹(trace);收集在多层计算机软件系统的软件组件处的CPU时间;以及从收集的业务轨迹推断多层计算机软件系统的性能数据。还公开了一种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的系统。在一个实施例中,该系统包括请求产生器,用于以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件;业务监测器,用于收集多层计算机软件系统的软件组件的所有层之间的业务轨迹;CPU监测器,用于收集在多层计算机软件系统的软件组件处的中央处理单元
7、(CPU)时间;和处理器,执行用于从收集的业务轨迹推断多层计算机软件系统的性能数据的指令。图I是用于确定多层计算机软件系统或架构(系统)的关键性能特征的小规模受控环境的示例性实施例的方框图。图2是表示用于使用图I的环境预测多层计算机软件系统的性能的本发明的方法的流程图。图3是用于根据图2的方法从收集的业务轨迹推断多层计算机软件系统的性能数据的设备的方框图。图4是用于使用图3的设备推断在多层计算机软件系统的不同层处捕捉的消息轨迹的方法的流程图。图5是将根据图2的方法确定层软件组件的状态的状态机的示图。图6是能够用于实现本发明的方法的计算机之一的示例性实施例的方框图。具体实施例方式本发明的方法试图
8、识别确定多层计算机软件系统或架构的性能特性的主要參数。、如早前所述,计算机软件系统的各种功能通过在分布式计算机系统(例如,经计算机网络彼此通信的两个或更多的服务器或计算机)上运行的几个软件组件(层)的协作来实现。这些性能參数包括软件组件之间的相互作用、这些相互作用的时间相关性、用于完成请求的处理的这些部件的中央处理单元(CPU)时间和输入/输出(IO)等待时间。这些性能參数能够用于通过已有方法(诸如,排队理论或模拟)在新环境中预测多层计算机软件系统的性能。本发明的方法通过利用小規模受控环境(即,包含比典型多层计算机软件系统少很多的数量的软件组件层的环境)经黑盒方案确定多层计算机软件系统的关键性
9、能特征(包括软件组件之间的计算机网络业务相互作用及其时间相关性、在每个部件的CPU时间和在每个部件的IO等待时间)。在这种小規模受控环境中,能够控制系统的输入(请求),从而每个请求在时间上与其它请求分开。由本发明产生的參数能够由已有技术(诸如,排队理论和模拟)使用以在未实际部署系统的情况下在新的可能很大的计算基础设施中准确地预测多层系统的性能。结果能够用于资源供应、容量规划和问题解決。该方法通常包括数据收集过程和推断过程。数据收集过程收集每对软件组件之间 的计算机网络业务轨迹和在每个软件组件的请求所需的CPU时间。推断过程推断软件组件之间的相互作用业务的相关性和在部件处的每个请求的逗留时间。这
10、种逗留时间包括CPU时间和盘IO等待时间。然后,通过提取CPU时间,获得盘IO等待时间。图I是用于预测多层计算机软件系统或架构(系统)的性能特征的小規模受控环境100的示例性实施例的方框图。环境100包括多个层软件组件(例如,多个Apache web服务器、Tomcat服务器和诸如MySQL的数据库服务器)10、1022、102n,它们形成多层计算机软件系统。每个层软件组件10A、1022、102n在単独的物理机器(服务器计算机)上和/或在単独的虚拟机(即,在主机计算机的软件层上面工作的计算机的软件实现方式)上运行。层软件组件的数量显著小于典型多层计算机软件系统中的软件组件的数量。图I的环境1
11、00还包括用于以受控的速率向系统产生客户端请求的请求产生器110。非限制性地,请求产生器110能够是在与服务器或主机计算机分开的计算机上运行的Hewlett-Packard的HP LoadRunner系统。姆个请求穿过所有层软件组件102” 1022、102n并且能够通过层软件组件10 进入和离开该系统。请求产生器110用作多层系统的客户端计算机或者模拟多层系统的客户端计算机。请求通常由请求产生器110以用户选择的速率自动发送。选择发送请求的速率,从而前请求的执行不干扰当前请求的执行,或者换句话说,从而请求在时间上彼此分开。提供多个业务监测器IU1UU2UUn(每个业务监测器用于每个层软件组件
12、)用于捕捉朝向它们各自的层软件组件的所有数据业务以及来自它们各自的层软件组件的所有数据业务。每个业务监测器记录数据的发送时间和接收时间。提供多个CPU监测器每个CPU监测器用于每个层软件组件)用于记录在它们各自的层软件组件使用的CPU周期。业务和CPU监测器可实现于硬件、软件或者它们的任何组合中。例如,但非限制性地,业务监测器能够是常规的包分析器(诸如,tcpdump),并且CPU监测器能够是常规的资源监测器应用。提供多个时钟Iie1Uie2.Ii6n(每个时钟用于每个层软件组件)用于通过从数据包推断获得发送和接收定吋。每个层的时钟彼此同歩。发送和接收定时随后用于在它们各自的层软件组件处的数据
13、包的时间相关性。图2是表示用于确定多层计算机软件系统的性能參数的使用图I的环境执行的方法的流程图。在块202中,请求产生器以能够由用户控制的速率产生发送给系统的客户端请求。当请求被系统处理时,业务监测器在块204中收集所有层软件组件之间的网络业务轨迹,而CPU监测器在块206中收集在所有软件组件处的CPU时间。在图2的块208中,从在块204和206中收集的业务轨迹205和CPU时间207推断多层计算机软件系统的性能參数。这些性能參数能够包括层软件组件之间的相互作用(例如,不同层之间的一系列消息交換)209、相互作用的时间相关性210和在每个层软件组件的逗留时间211。逗留时间211是CPU时
14、间207和盘IO完成时间213之和。在图2的块212中,从在块208中获得的逗留时间211减去CPU时间207,以获得在每个层软件组件的盘IO完成时间213。 图3是用于执行图2的方法的块208和212的过程的“推断”计算机300的方框图。计算机300包括CPU 304和存储器306。CPU 304接收由图I的业务监测器11、1122、112n收集的数据作为输入,该数据包括发送给对应的层软件组件以及来自对应的层软件组件的数据包。CPU 304还接收来自时钟Iie1Uie2Uien的时钟数据作为输入,该时钟数据记录包何时被发送并由它们的对应业务监测器捕捉。CPU 304提取每个捕捉的包的源、目的
15、地和大小信息,且执行层软件组件状态推断并输出在层软件组件的请求的逗留时间。存储器306存储由CPU 304产生的中间和最后推断数据。图4是用于使用图3的推断计算机推断多层计算机软件系统的性能特征的方法的流程图。在块402中,CPU 304使用由业务监测器1121、1122、11211收集的业务数据和由时钟1161162、116提供的时钟数据提取捕捉的包的源、目的地和大小信息。在块404中,CPU304使用层软件组件的地址把包分为下面的种类之一来自客户端的请求;对客户端的响应;对服务器(即,运行层软件组件的物理机器或虚拟机)的请求;和对服务器的响应。客户端代表多层系统的最終用户或下游层中的节点(
16、例如,对于层I软件组件102i,层2软件组件1022将会是下游层并且请求产生器110将会是上游层。类似地,对于层2软件组件1022,层软件组件102将会是下游层,而层I软件组件10 将会是上游层)。服务器代表上游层中的节点。种类将会根据推断线程活动的在图3的CPU 304上运行的状态机确定层软件组件的状态。更具体地讲,为每个层软件组件创建在CPU 304上运行的状态机以推断在CPU和盘I/O等待中花费的时间,如图2中的块211和212所示。CPU监测器提供关于由每个请求消耗的CPU资源的数据。在“繁忙”状态下花费的总时间由状态机使用业务监测数据推断。通过从在“繁忙”状态下花费的总时间减去CPU时间获得I/O等待时间。图5是层的状态机500的示图。该状态机包括空闲状态502、繁忙状态504和繁忙/空闲状态506。空闲状态502指示在对应的层软件组件中没有请求或者当前未在这个组件处服务请求。繁忙状态504指示当前在对应的层软件组件服务请求。繁忙/空闲状态506指示正在对应的层软件组件处被服务的请求将会由下一包确定。感兴趣的层软