一种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的方法和系统:以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件的一个或多个层;收集多层计算机软件系统的软件组件的所有的所述一个或多个层之间的业务轨迹;收集在多层计算机软件系统的软件组件处的CPU时间;从收集的业务轨迹推断多层计算机软件系统的性能数据;以及从推断的性能数据确定盘输入/输出等待时间。
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及分布式计算。更具体地讲,本专利技术涉及用于预测在分布式计算机系统上运行的多层计算机软件系统的性能的方法和设备。
技术介绍
多层系统或架构是ー种计算机软件系统,其功能通过在分布式计算机硬件上运行 的几个软件组件的协作来实现。使用多层软件架构建立许多基于互联网的软件服务,诸如商业、旅行、卫生保健和金融场所。在这种架构中,前端web服务器(例如,Apache服务器或Microsoft的IIS服务器)接受用户请求并把它们转发给处理请求的应用层(例如,Tomcat或JBoss服务器),并且必要的信息存储在存储层(例如,MySQL、DB2或Oracle数据库)中。建立多层软件服务的关键挑战在于能够满足服务的性能要求。设计过程通常包括回答问题,诸如“在每ー层中需要多少个服务器以便对于90%的请求提供50 ms的平均响应时间”。一旦建立,设计者随后经常担心当前架构是否能够满足未来的性能要求,例如,当由于服务的流行或极端事件(诸如,Slashdot效应或大規模DoS攻击)而导致请求工作量增加吋。提高复杂多层应用的性能是重要的任务,但常见的第一尝试解决方案是投入更多的硬件资源并分割工作量。云计算基础设施(诸如,Amazon的EC2和Google的AppEngine)已使扩展应用可用的硬件资源变得既便宜又快速。例如,Animoto在三天内把它的EC2实例从300扩展至3000。这种弹性基础设施允许应用高度可扩展,然而,设计者必须小心地决定在哪里放置这些可用资源以在应用性能方面实现最大利益。为了回答这种问题,关键的是知道当扩展分配给服务的资源时的性能提高(或性能缺乏,暗示瓶颈)。准确地预测性能但并不实际按比例建立服务的能力能够显著地帮助这种服务的设计者提供高性能。然而,因为多层系统的复杂性质,预测多层系统的性能是有挑战性的。例如,典型的请求的处理需要不同层之间的复杂的相互作用。此外,这些应用具有重要的内部逻辑,例如,它们使用高速缓存并对最大线程的数量施加硬限制。最后,在扩展部署中,可能出现新的相互作用或瓶颈,或者已有瓶颈可能在不同层之间移位。已提出许多统计方案(黑盒方案),这些统计方案试图通过推断随后用于预测性能的请求的端到端处理路径(诸如,远程过程调用(RPC)、系统调用或网络日志文件)建立整个系统的概率模型。这些技术是通用的,但缺乏高准确性。白盒方案或技术使用系统特定知识以通用性为代价提高准确性。Magpie需要中间件、应用和监测工具的修改,以便产生能够由Magpie理解并分析的事件日志。Pinpoint通过修改中间件利用ID标记每个请求,且然后通过聚类和统计技术使失败的请求与引起失败的组件相关联。Standust也通过修改中间件对于姆个请求使用ID,把所有日志放在数据库中,并使用数据库技术分析应用行为。灰盒方案提供中间情况它们与白盒方案相比具有较小侵入性,但比黑盒方案更准确。例如,vPath提出用于在多层系统中捕捉请求的端到端处理路径的新方案。vpath的关键观测在于分配単独的线程用于处理多层应用中的各请求。这允许vPath把线程关联到与给定网络活动相关的系统调用,并因此准确地链接与单个客户端请求对应的各种消ο已有方法分别地建模或模拟多层系统的每ー层。由于在不同层的处理高度相关,所以这些方案在准确性方面受到限制。因此,需要用于建模或确定多层系统的性能的改进的方法和设备。
技术实现思路
公开了ー种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的方法。在一个实施例中,该方法包括以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件的层;收集多层计算机软件系统的软件组件的所有层之间的业务轨迹(trace);收集在多层计算机软件系统的软件组件处的CPU时间;以及从收集的业务轨迹推断多层计算机软件系统的性能数据。还公开了一种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的系统。在一个实施例中,该系统包括请求产生器,用于以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件;业务监测器,用于收集多层计算机软件系统的软件组件的所有层之间的业务轨迹;CPU监测器,用于收集在多层计算机软件系统的软件组件处的中央处理单元(CPU)时间;和处理器,执行用于从收集的业务轨迹推断多层计算机软件系统的性能数据的指令。附图说明图I是用于确定多层计算机软件系统或架构(系统)的关键性能特征的小规模受控环境的示例性实施例的方框图。图2是表示用于使用图I的环境预测多层计算机软件系统的性能的本专利技术的方法的流程图。图3是用于根据图2的方法从收集的业务轨迹推断多层计算机软件系统的性能数据的设备的方框图。图4是用于使用图3的设备推断在多层计算机软件系统的不同层处捕捉的消息轨迹的方法的流程图。图5是将根据图2的方法确定层软件组件的状态的状态机的示图。图6是能够用于实现本专利技术的方法的计算机之一的示例性实施例的方框图。具体实施例方式本专利技术的方法试图识别确定多层计算机软件系统或架构的性能特性的主要參数。、如早前所述,计算机软件系统的各种功能通过在分布式计算机系统(例如,经计算机网络彼此通信的两个或更多的服务器或计算机)上运行的几个软件组件(层)的协作来实现。这些性能參数包括软件组件之间的相互作用、这些相互作用的时间相关性、用于完成请求的处理的这些部件的中央处理单元(CPU)时间和输入/输出(IO)等待时间。这些性能參数能够用于通过已有方法(诸如,排队理论或模拟)在新环境中预测多层计算机软件系统的性能。本专利技术的方法通过利用小規模受控环境(即,包含比典型多层计算机软件系统少很多的数量的软件组件层的环境)经黑盒方案确定多层计算机软件系统的关键性能特征(包括软件组件之间的计算机网络业务相互作用及其时间相关性、在每个部件的CPU时间和在每个部件的IO等待时间)。在这种小規模受控环境中,能够控制系统的输入(请求),从而每个请求在时间上与其它请求分开。由本专利技术产生的參数能够由已有技术(诸如,排队理论和模拟)使用以在未实际部署系统的情况下在新的可能很大的计算基础设施中准确地预测多层系统的性能。结果能够用于资源供应、容量规划和问题解決。该方法通常包括数据收集过程和推断过程。数据收集过程收集每对软件组件之间 的计算机网络业务轨迹和在每个软件组件的请求所需的CPU时间。推断过程推断软件组件之间的相互作用业务的相关性和在部件处的每个请求的逗留时间。这种逗留时间包括CPU时间和盘IO等待时间。然后,通过提取CPU时间,获得盘IO等待时间。图I是用于预测多层计算机软件系统或架构(系统)的性能特征的小規模受控环境100的示例性实施例的方框图。环境100包括多个层软件组件(例如,多个Apache web服务器、Tomcat服务器和诸如MySQL的数据库服务器)10も、1022、102n,它们形成多层计算机软件系统。每个层软件组件10A、1022、102n在単独的物理机器(服务器计算机)上和/或在単独的虚拟机(即,在主机计算机的软件层上面工作的计算机的软件实现方式)上运行。层软件组件的数量显著小于典型多层计算机软件系统中的软件组件的数量。图I的环境100还包括用于以受控的速率向系统产生客户端请求的请求产生器110。非限制性地,请求产生器110能够是本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】2010.01.13 US 61/294,593;2011.01.11 US 13/004,0691.一种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的方法,该方法包括 以时间选择性方式,把客户端请求发送给在中央处理单元(CPU)上执行的多层计算机软件系统的软件组件的ー个或多个层; 利用业务监测器收集多层计算机软件系统的软件组件的所有的所述ー个或多个层之间的业务轨迹; 利用CPU监测器收集在多层计算机软件系统的软件组件处的CPU时间;以及 在计算机过程中,从收集的业务轨迹推断多层计算机软件系统的性能数据。2.根据权利要求I所述的方法,还包括在发送客户端请求之前,利用请求产生器产生客户端请求。3.根据权利要求I所述的方法,其中所述业务轨迹和CPU时间被同时收集。4.根据权利要求I所述的方法,其中当客户端请求被发送给多层计算机软件系统的软件组件的所述ー个或多个层时,所述业务轨迹和CPU时间被同时收集。5.根据权利要求I所述的方法,其中所述时间选择性方式使客户端请求在时间上彼此分开,从而由多层计算机软件系统的软件组件的所述ー个或多个层对客户端请求的执行彼此不干扰。6.根据权利要求I所述的方法,其中推断的性能数据包括多层计算机软件系统的软件组件的所述ー个或多个层之间的相互作用。7.根据权利要求6所述的方法,其中推断的性能数据包括多层计算机软件系统的软件组件的所述ー个或多个层之间的相互作用的时间相关性。8.根据权利要求I所述的方法,其中推断的性能数据包括在多层计算机软件系统的软件组件的所述ー个或多个层中的每个层的逗留时间。9.根据权利要求8所述的方法,还包括从逗留时...
【专利技术属性】
技术研发人员:Y古,K潘,A辛赫,G蒋,
申请(专利权)人:美国日本电气实验室公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。