CN115269216A - 用于分布式系统的性能分析系统和方法 - Google Patents
用于分布式系统的性能分析系统和方法 Download PDFInfo
- Publication number
- CN115269216A CN115269216A CN202210675259.0A CN202210675259A CN115269216A CN 115269216 A CN115269216 A CN 115269216A CN 202210675259 A CN202210675259 A CN 202210675259A CN 115269216 A CN115269216 A CN 115269216A
- Authority
- CN
- China
- Prior art keywords
- performance
- analysis
- node
- client
- performance analysis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了一种用于分布式系统的性能分析系统和方法。所述分布式系统包括多个异构节点,并且所述性能分析系统包括:控制节点,用于向客户端发送性能数据采集和分析指令;以及多个客户端,各自位于一个目标节点上并且用于:接收来自控制节点的性能数据采集和分析指令;基于所述指令,调用目标节点上相应的性能分析器来获取目标节点上程序的运行时数据并生成分析结果;及将运行时数据的分析结果上传给控制节点。本发明通过使得客户端直接调用目标节点本地的性能分析器来实现普适性,上述客户端可直接通过包装脚本启动并且采用二进制消息格式经由远程过程调用完成指令接收和获取数据的上传,由此实现性能分析系统的轻量化和信息高效传输。
Description
技术领域
本公开涉及信息处理领域,尤其涉及一种用于分布式系统的性能分析系统和方法。
背景技术
性能分析(profiling)是以收集应用程序运行时数据为手段研究程序行为的分析方法。性能分析的目的在于决定程序的哪个部分应该被优化,从而提高程序的速度或者内存使用效率。现有的性能分析工具仅能实现单机的性能分析,并且不同硬件环境、操作系统、不同语言下使用的性能分析工具无法通用。由此,在针对分布式、异构系统进行真实运行环境下的持续性性能数据采集和分析优化时,如何高效获取系统各个节点上的运行状态,成为本领域所要解决的一个问题。
因此,需要一种适用于分布式系统的性能分析解决方案。
发明内容
本公开要解决的一个技术问题是提供一种用于分布式系统的性能分析系统和方法,在面对包括各类异构节点的分布式系统时,该性能分析系统通过使得在目标节点上的客户端直接调用目标节点本地的性能分析器来实现普适性,上述客户端可直接通过包装脚本启动并且采用二进制消息格式经由远程过程调用完成指令接收和获取数据上传,由此实现性能分析系统的轻量化和信息的高效传输。
根据本公开的第一个方面,提供了一种用于分布式系统的性能分析系统,所述分布式系统包括多个异构节点,所述性能分析系统包括:控制节点,用于向客户端发送性能数据采集和分析指令;以及多个客户端,所述客户端各自位于所述分布式系统的一个目标节点之上并且用于:收来自所述控制节点的性能分析指令;基于所述性能数据采集和分析指令,调用目标节点上相应的性能分析器来获取所述目标节点上程序的运行时数据并生成分析结果;及将所述运行时数据的分析结果上传给所述控制节点。
可选地,基于目标节点的配置,自动选取对应编程语言版本的所述客户端进行安装。
可选地,所述客户端通过性能分析包装脚本启动,并且所述性能分析包装脚本利用不同语言程序对应的原生的性能分析器对所述客户端调用性能分析器的操作进行解释。
可选地,所述性能分析器根据所述性能分析指令获取目标节点上目标应用的处理器和内存的状态并与当前执行的程序段相对应。
可选地,所述控制节点和所述客户端之间采用流式数据帧以二进制序列化格式传输下发的所述性能分析指令和上传的所述运行时数据的分析结果。
可选地,所述客户端连接所述控制节点并进行目标节点上目标应用的注册,同时在上述客户端上保留所述注册内容,用于进行基于所述性能分析指令的运行状态数据获取和上传。
可选地,所述目标节点包括多个容器,所述容器被创建为包括性能分析包装脚本,并且所述客户端通过所述性能分析包装脚本启动。
可选地,所述目标节点中包括对应于不同微服务的应用,并且所述性能分析器基于所述性能分析指令中指定的目标应用获取所述运行时数据。
可选地,所述系统还包括:操作节点,用于:向所述控制节点发送采集目标信息,其中,所述控制节点基于所述采集目标信息向对应目标节点的客户端发送的性能数据采集和分析指令;以及接收所述控制节点收集并转发的所述运行时数据的分析结果,并生成性能分析报告。
根据本公开的第二个方面,提供了一种用于分布式系统的性能分析方法,所述分布式系统包括多个异构节点,所述性能分析方法包括:接收来自控制节点的性能分析指令;基于所述性能数据采集和分析指令,调用所述分布式系统的目标节点上相应的性能分析器来获取所述目标节点上运行程序的运行时数据;及将所述运行时数据的分析结果上传给所述控制节点。
可选地,所述方法还包括:目标节点被创建为包括性能分析包装脚本;通过所述性能分析包装脚本启动客户端;以及向所述控制节点进行目标节点上目标应用的注册。
根据本公开的第三个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第二方面所述的方法。
根据本公开的第四个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第二方面所述的方法。
由此,本发明提出了一种能够跨平台、跨语言收集程序运行时的状态数据的轻量级性能分析方案,提供利用采集工具的跨平台性以及控制节点内自研的动态采样机制来实现基于包装脚本对各个目标节点上自带性能分析器的高效调用,利用gRPC的高效传播特性实现与控制节点的通信。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了根据本发明一个实施例的性能分析系统的组成示意图。
图2示出了根据本发明的性能分析系统的操作流程例。
图3示出了根据本发明一个实施例的性能分析方法的示意性流程图。
图4示出了根据本发明一实施例可用于实现上述性能分析方法的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
随着云计算平台(对应于由提供各类服务或微服务的服务器构成的服务器系统)承载的服务和场景越来越多,数据中心的范围也越来越大,云平台的系统构造也愈发复杂。为了确保大规模且日益复杂的服务器系统的高效运行,需要采集服务器上运行的应用程序的性能指标,并以这些性能指标数据为基础构造监测和控制系统。除了稳定性保障运维外,深入理解数据中心的性能尤为重要。性能数据采集和分析是优化的前提,在大规模效应下1%的性能提升也可能减少可观的能耗。随着服务器系统的运维日益精细化,合理的性能分析有助于理解并改善各核心系统的性能,可以有效推动数据中心的优化升级、节能减排和成本节约。
准确衡量服务器系统的性能十分困难。测试环境中的性能衡量通常无法准确再现生产系统的工作负载和行为。因此当服务在其工作环境中运行时,即在服务器系统实际提供各类服务时,通过性能分析获取CPU周期和内存等资源的具体使用状况能够更加准确的反映系统性能,并为系统优化指明了方向。
在此,性能分析(profiling)是以收集程序运行时数据为手段研究程序行为的分析方法,是一种动态程序分析的方法。性能分析工具使用广泛的技术手段收集数据,包括硬件中断、代码指令、作业系统hooking(钩住)、CPU内置的性能计数寄存器等。性能分析的目的在于决定程序的哪个部分应该被优化,从而提高程序的速度或者内存使用效率。性能分析可以基于程序的源代码或者可执行文件进行。
虽然进行性能分析能够收集程序运行时数据,但是性能剖析过程会给服务器系统带来额外负载,如何对用户影响最小的情况下又能真实度量核心系统的性能,是性能分析所面临的重大挑战。目前的性能数据采集工具分别用于不同的编程语言、操作系统和硬件环境,并且无法实现跨机器的性能剖析,也不能进行历史数据的高效存储和检索。因此,现有技术无法对分布式系统进行高效的性能优化。因此,需要一种更通用、性能更好的、对应用无侵入的、支持云原生、跨多环境和多语言的轻量级且安全的性能数据采集和分析工具。
为此,本发明提出了一个轻量级的持续性能数据采集并可进一步结合分析和优化能力的性能分析系统,该系统用于分布式系统的性能分析,并且能够对分布式服务器系统中执行的应用进行实时状态采集和动态分析,包括栈调用、硬件事件、内核事件等等软硬件维度信息。同时,该系统可以支持多环境、多语言的复杂场景的性能数据采集和分析,对性能分析对象的侵入性小,控制灵活且无需对现有系统的额外改造。
图1示出了根据本发明一个实施例的用于分布式系统的性能分析系统的组成示意图。该性能分析系统可以是作为分布式系统的云计算平台所搭载的性能分析组件的集合,并且用于分布式系统各个工作节点的性能分析。该性能分析系统100可以包括控制节点110以及多个客户端120(Agent,在图1中用字母“A”表示)。每个客户端120可以各自位于一个目标节点200(目标节点是分布式系统中被选中进行性能分析的工作节点)之上并用于所在目标节点上性能分析数据的获取。为了图示的清楚简明,图1中仅详细画出了一个客户端在目标节点内的操作,但应该理解的是,客户端在其他目标节点200内进行相同的操作。
如上所述,性能分析系统100可以是云计算平台(也是为各类用户提供各种服务的服务器系统)的一部分。云计算平台是一个分布式系统,其上包括多个工作节点(也可称为计算节点),不同的计算节点上可以运行用于提供不同服务的应用。这些计算节点是异构的,即,具有各自不同的操作系统,可以在不同的编程语言下操作,可以具有不同的硬件配置,并且可以具有不同的容器/主机结构。在这些计算节点中,可以选择特定类别或是范围的节点,作为目标节点200,并且通过启动在目标节点200上的客户端120完成对目标节点上运行应用的性能分析。
控制节点110是用于对各个客户端120的操作进行控制,并且汇总客户端120上传信息的“大脑(brain)”节点,并且在C-S架构中可以看作是客户端120的服务端。具体地,控制节点110用于向客户端发送性能分析指令,即性能数据采集和分析指令。所述性能分析指令例如可以包括指定哪些节点作为目标节点,节点中的哪些应用需要被分析,以及具体进行性能分析的内容。上述性能数据采集和分析指令的发送是动态的,其包含的内容和针对的对象可以根据预设条件或是现场操作而变化。
目标节点的客户端120接收来自所述控制节点的性能数据采集和分析指令,并且可以基于接收到的性能数据采集和分析指令,直接调用目标节点上相应的性能分析器来获取所述目标节点上程序的运行时数据,并将所述运行时数据的分析结果上传给所述控制节点。在此,可以利用目标节点上原生的性能分析器来进行目标程序的运行时数据的采集并进行性能分析,由此得到运行时数据的分析结果,该分析结果可以作为目标节点的性能分析数据进行上传。
换句话说,在本发明中,客户端120本身并不包括性能分析器,而是直接利用目标节点上自带的性能分析器(Profiler,图示的“P”210)来针对目标程序进行分析,从而避免了不同操作系统或是不同编程语言(即,目标程序的编写语言)所带来的复杂的兼容性的问题。具体地,目标节点自带的性能分析器210可以根据客户端120传递的性能数据采集和分析指令,对应用220进行各种运行时数据的获取。在此,运行时数据指代应用在实际运行的时候产生的数据。在一个实施例中,性能分析器210可以直接将收集的运行时数据作为性能分析结果传递给客户端120,用于向控制节点110的上传。在另一个实施例中,性能分析器210可以将从应用220收集的运行时数据进行一定的处理,并将由此得到的性能分析结果,例如生成图示的火焰图(FlameGraph)或是用于生成火焰图所需的原始信息,并将火焰图或是上述原始信息提供给客户端120,用于向控制节点110的上传。
由此,通过采集应用程序运行态的性能数据,可以分析出应用程序中的执行路径,以及每个执行路径的时间占比,然后主动识别出对计算时间占比较大的应用程序中的性能热点,用于后续的性能优化。在大型的云计算平台中,各个计算节点往往会在不同的操作系统(例如,Unix或是Linux)中运行,并且其内运行的程序,往往会采用不同的语言编写而成,例如,C++或是Python。在一个实施例中,可以针对不同的操作系统和/或不同语言甚至不同硬件配置编写不同的客户端,并且根据目标节点的具体情况进行发放。在本发明中,不同的编程语言对应不同的客户端,但客户端会采用相同的包装脚本方法启动性能分析(如下将详述),对用户是透明的,客户端会自动适配,不需要用户根据自己的应用端去做客户端选择或者适配。为此,在本发明的性能分析系统中,可以基于目标节点的配置,自动选取对应编程语言版本的客户端。
在一个实施例中,客户端可以由脚本程序启动,从而利用解释器原理实现跨平台(操作平台,即,操作系统)的设置。在一个优选实施例中,客户端可以由包装脚本(wrapperscript)启动。包装脚本(或称为“包装程序脚本”)是在其内“包装”了其他脚本和命令的一种脚本。由此,客户端安装后可以直接通过本发明中用于性能分析的包装脚本(在此称为“性能分析包装脚本”)启动,并经由所述包装脚本发送所述解释器的路径和标准运行时启动的原始参数(例如,所有原始参数)。由此,包装脚本可以利用不同语言程序对应的原生的性能分析器对所述客户端调用性能分析器的操作进行解释。上述包装脚本还可以扩展或者转换程序的启动行为,比如,脚本可以注入或者修改参数、设置环境变量或者捕获指标、错误和其他诊断信息。通过包装脚本的使用,可以避免对不同的应用程序,并且适用于容器和各种PaaS。在利用包装脚本形式的客户端调用本地性能分析器以实现例如上述火焰图的应用运行时数据采集和分析结果生成时,应用本身无需修改代码,只需用包装脚本的方式启动应用,同时由于对各种语言的拉起方式一致,因此具有普适性。
性能分析器210可以根据所述性能数据采集和分析指令获取目标节点200上目标应用220的处理器和内存的状态并与当前执行的程序段相对应。上述获取是在应用实际运行时(即,为云计算平台用户正常提供服务时)动态获取的。性能分析器210从生产应用中持续收集有关CPU使用率和内存分配情况的信息,它会将获得的信息归因于生成这些信息的源代码,从而帮助识别应用中资源耗用量最大的部分,还可以阐明应用的性能特征。
在应用程序运行时,可以采用动态附着(attach)的方式获取数据,这种灵活的实现方式,不需要停止目标程序进程,对应用完全无侵入。
如前所述,性能分析器210可以将获取的处理器和内存的运行时状态信息处理成图1所示的火焰图(FlameGraph),并将火焰图提供给客户端120,用于向控制节点110的上传。火焰图用图形化的方式来展现性能分析器采集的性能数据,对数据进行统计和分析,方便找出性能热点。在其他实施例中,性能分析器210可以仅提供生成火焰图所需的信息(例如,调用栈信息),上述信息可被直接上传给控制节点110(甚至如下所述的web端130),并在控制节点或者web端上完成火焰图的生成。
火焰图整个图形看起来就像一个跳动的火焰,这是其名字的由来,具体地,火焰图中每一列代表一个调用栈,每一个格子代表一个函数。纵轴展示了栈的深度,按照调用关系从下到上排列,最顶上格子代表采样时正在占用CPU的函数。火焰图将采集的多个调用栈信息,通过按横向排序的方式将众多信息聚合在一起(这是横轴的意义,且横轴不代表时间)。横轴格子的宽度代表其在采样中出现频率,一个格子的宽度越大,说明对应函数的执行导致性能瓶颈原因的可能性就越大。通过将火焰图作为性能分析结果数据(对应于目标应用的运行时数据的分析结果)进行上传,能够降低控制节点110汇总来自各个客户端的性能分析数据的工作量,并且提升数据的可读性。
除了利用尤其可以实现为包装脚本的客户端调用目标节点本地的性能分析器来执行针对目标应用的性能分析之外,本发明还可以通过优化客户端120和控制节点110之间的通信来提升整个性能分析系统的效率。
在一个实施例中,控制节点110和客户端120之间可以采用流式数据帧(例如,选择基于HTTP/2通信协议)以二进制序列化格式(例如,基于Protobuf)进行通信,例如传输控制节点向客户端下发的性能分析指令,以及客户端向控制节点上传的运行时数据。具体地,本发明的性能分析系统可以采用gRPC进行通信。gRPC一个开源的远程过程调用(RPC)框架,使用HTTP/2作为传输方式,协议缓冲器作为接口描述语言,提供了认证、双向流和流控制、阻塞或非阻塞绑定、取消和超时等功能。它可以为许多编程语言生成跨平台的客户端和服务器绑定。gRPC消息使用Protobuf进行序列化,Protobuf作为一种高效的二进制消息格式,其在服务器和客户端上的序列化速度非常快,这对于移动应用等有限带宽的场景来说非常重要。
在一个实施例中,客户端120可以在接收控制节点110的性能分析指令之前,先连接控制节点110并进行目标节点上目标应用的注册,同时在上述客户端上保留所述注册内容,用于进行基于所述性能分析指令的运行状态数据获取和上传。具体地,在控制节点110和客户端120之间使用gRPC通信时,对控制节点110和客户端120各自使用的编程语言不做限制,即,支持多语言跨平台的客户端和服务端绑定,并且安全性高。在gRPC中,客户端应用程序可以直接调用不同服务器应用程序上的方法,类似本地调用,这极大便利了分布式应用和服务的创建。通过gRPC服务的思想,指定可以远程调用的方法,参数和返回类型。为此,可以在控制节点110的服务程序实现用于快速启动不同客户端应用程序的性能分析指令的接口,并运行gRPC服务来处理客户端的调用。每个客户端在被安装好后,可以在控制节点进行注册,并在本地保留所述注册内容作为一个“存根”,由此可以根据这个存根使用与控制节点110相同的方法进行交互。
如前所述,云计算平台上包括多个计算节点,不同的计算节点上可以运行用于提供不同服务的应用。在这些计算节点中,可以选择特定类别或是范围的节点,作为目标节点200,并且通过启动在目标节点200上的客户端120完成对目标节点上运行应用的数据采集和性能分析。在传统的服务器系统中,一个计算节点可以对应于一个服务器节点。此时,可以在每一个服务器节点上布置一个本发明如上所述的客户端,用来基于控制节点110的指令调用服务器节点中的性能分析器对运行的应用进行性能分析。
在一个优选实施例中,计算节点可以对应于或是包括一个个的容器。容器将操作系统层虚拟化,更具有便携性、可以高效地利用服务器。容器更多的用于表示软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施的差异,部署到任何一个地方。例如可以基于如Kubernetes(K8s)进行容器资源部署和管理,根据实时的需求状况来进行扩缩容。容器荚(Pod)是K8s中能够创建和部署的最小单元,是K8s集群中的一个应用实例,总是部署在同一个物理节点上。容器荚(Pod)中包含一个或多个容器,还包括了存储、网络等各容器共享的资源。容器荚(Pod)可以支持多种容器环境,例如当前流行的容器环境Docker等。在此,计算节点可以是部署有容器荚的物理节点,目标节点则是容器荚中运行的应用被控制节点选中进行性能分析的计算节点。为此,目标节点可以包多个容器。所述容器或容器荚被创建为包括如上性能分析包装脚本,并且所述客户端通过所述性能分析包装脚本启动,由此实现客户端的透明启动。
另外,如前所述,由于性能分析是针对应用程序进行,应对针对目标节点的性能分析其实是针对节点中包含的目标应用进行的。在某些实现中,每个计算节点用于提供同一种服务,因此可以仅包括一个需要进行性能分析的应用。在其他一些实现中,每个计算节点中可以包括多种需要进行性能分析的应用。在本发明中,用于性能分析的应用尤其可以对应于微服务。在此,微服务是提供细粒度服务的应用,例如,在为商务网站提供的服务中,商品展示和购物车对应于不同的微服务,这些微服务对应的模块可以在用户设备的一个页面中被同时显示,但这些微服务可以是云端不同的服务器或至少是不同的目标节点(或不同的容器)所实现的。此时,目标节点中可以包括对应于不同微服务的应用,并且所述性能分析器基于所述性能分析指令中指定的目标应用获取所述运行时数据。
进一步地,虽然图1未示出,但本发明的性能分析系统还可以包括操作节点。该操作节点可以是在运维人员操作下的节点,例如,运维人员可以基于WebUI(用户界面)与通常是远程的控制节点服务器进行交互,并指定想要进行性能分析的对象(例如,是哪些节点中的哪些应用)以及性能分析的具体内容。为此,操作节点可以用于:向所述控制节点发送采集目标信息,其中,所述控制节点基于所述采集目标信息向对应目标节点的客户端发送的性能分析指令;以及接收所述控制节点收集并转发的运行时数据,并生成性能分析报告。具体地,操作节点可以对来自多个客户端的数据进行聚合处理和存储,最终生出性能分析可视化和性能热点报告。
图2示出了根据本发明的性能分析系统的操作流程例。图中以涉及通常由运维人员进行操作的操作节点130(即,“Web”节点130)、用于实现该性能分析系统的主控制服务的控制节点110(即,“brain(大脑)”节点110)、多个客户端中的一个客户端120(即,“Agent(代理)”120)以及由该Agent 120负责获取性能分析数据的目标节点上的目标应用220(即,“App”220)。
在图2所示的具体性能分析操作流程之前,可以首先对brain 120进行提前部署,具体可以包括:
a.启动gRPC服务,等待Agent连接;
b.监听Web端口(8080/80);
c.生成对应语言的Agent地址和安装方法,并保存Agent的采集规则。
目标节点(实现为或者包括容器)可以在被创建时基于用户操作或是自动获取适用语言的Agent安装包进行安装,并且在安装后启动。
当在节点上安装agent后,例如可由用户在内部环境内,启动agent进程并在随后可执行图2所示的操作流程。具体地,由于agent通过包装脚本启动,因此可以从环境读取brain地址/端口,并且知晓利用gRPC连接brain的gRPC端口,并在brain上完成注册。
随后,agent可以以子进程启动应用程序(例如,通过forkapp)并监听与brain的长连接可达性。如果发现连接不可达,则重连brain;如果监听brain到发来的性能分析指令(即,运行时数据采集指令),便可针对App 220进行相应的运行时数据采集。
由于控制节点120在操作节点130的操作下从现有计算节点中确定要进行性能分析的目标应用所在节点,因此在brain向agent发送性能分析指令前,需要来自操作节点130的操作指示。如图所示,web 130可以向brain 120进行列表下发(例如,基于list.json)以表明想要采集信息的目标应用的类别或是范围,brain 120可以根据在前各个agent的注册信息,确定web 130下发的列表对应哪些已注册的agent,并将agent列表发送给web 130(如图2中的agent1、agent2…所示),随后web 130可以下发针对agent列表指定范围内的agent的性能分析指令(即,图2中的profile.html?Id=agentN)。
brain 120于是可以经由gRPC端口向agent列表中包括的agent下发生成性能分析报告的指令(即,Grpc Cmd.GENERATE_REPORT)。
agent于是经由gRPC连接接收到来自brain的采集指令,并且可以调用目标应用所使用编程语言相应的性能分析器(profiler)来生成性能分析数据。在一个实施例中,尤其可以使用perf来生成火焰图,用于图形化地表征性能分析结果。上述火焰图被agent封装在报告中上传给brain(经由Grpc Report())。在其他实施例中,agent可以封装栈调用信息,并由brain来进行火焰图的生成。具体地,brain 120可以汇总各个agent上传的性能数据并将其转译为可视化的火焰图形式提供给Web 130,以供运维人员进行后续的分析并提交改进意见。
由上可知,可以如图2所示由web端(网络控制端)发起针对目标应用的性能分析请求。另外,brain端可以定时进行针对目标应用的健康检查,并且基于gRPC的特性主动升级agent,例如,传入更新的参数,提供更新的指令等。
本发明还可以实现为一种性能分析方法。图3示出了根据本发明一个实施例的用于分布式系统的性能分析方法的示意性流程图。该方法尤其可由客户端实现,并且作为由结合web端、brain端和agent端整体实现的性能分析方法的一部分。
在步骤S310,接收来自控制节点的性能分析指令。在步骤S320,基于所述性能分析指令,调用目标节点上相应的性能分析器来获取所述目标节点上运行程序的运行时数据。在步骤S330,将所述运行时数据的分析结果上传给所述控制节点。
在如上进行性能分析操作之前,还可以包括在前的部署步骤。为此,在客户端,尤其是在客户端所在的目标节点上,还包括如下操作:目标节点被创建为包括性能分析包装脚本;通过所述性能分析包装脚本启动客户端;以及向所述控制节点进行目标节点上目标应用的注册。
本发明可以通过控制节点结合动态的采样策略,经由二进制消息通信,发送客户端启动命令,以包装脚本形式启动并且采用二进制消息格式经由远程过程调用完成获取的性能分析结果数据的上传。
图4示出了根据本发明一实施例可用于实现上述性能分析方法的计算设备的结构示意图。
参见图4,计算设备400包括存储器410和处理器420。
处理器420可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器420可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器420可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器410可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器420或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器410可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器410可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器410上存储有可执行代码,当可执行代码被处理器420处理时,可以使处理器420执行上文述及的性能分析方法。
上文中已经参考附图详细描述了根据本发明的性能分析系统和方法。
对应现有技术中进行性能分析要应用程序重编译或者以不同配置启动,无法在生产环境使用;以及数据无法自动收集,只能在单机使用且对不同语言运行时需要使用不同的工具/参数收集的系统,本发明提出了如上的无侵入性能分析器方案。具体地,通过客户端提供的语言抽象机制,克服了不同参数问题。客户端还支持命令通道避免使用手动发起远程命令,支持上报,避免手工收集数据。由此,本发明为云计算平台,尤其是背后的大型数据中心提供了一种透明支持多种语言且能够一键式执行的持续的系统化性能分析解决方案。
本发明提供了面向分布式系统的性能剖析的产品架构设计,可以支持面向集群的性能分析(例如,基于web下发的列表),以同时请求任意多台目标机器或者多个客户应用的性能数据。由独立的服务器端(对应于如上的控制节点)对这些数据进行汇总分析,最终生成应用在整个集群上的性能概况,进一步推动了后续性能优化推荐的深入。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种用于分布式系统的性能分析系统,所述分布式系统包括多个异构节点,所述性能分析系统包括:
控制节点,用于向客户端发送性能数据采集和分析指令;以及
多个客户端,所述客户端各自位于所述分布式系统的一个目标节点之上并且用于:
接收来自所述控制节点的性能数据采集和分析指令;
基于所述性能数据采集和分析指令,调用目标节点上相应的性能分析器来获取所述目标节点上程序的运行时数据并生成分析结果;及
将所述运行时数据的分析结果上传给所述控制节点。
2.如权利要求1所述的系统,其中,基于目标节点的配置,自动选取对应编程语言版本的所述客户端进行安装。
3.如权利要求2所述的系统,其中,所述客户端通过性能分析包装脚本启动,并且所述性能分析包装脚本利用不同语言程序对应的原生的性能分析器对所述客户端调用性能分析器的操作进行解释。
4.如权利要求1所述的系统,其中,所述性能分析器根据所述性能数据采集和分析指令获取目标节点上目标应用的处理器和内存的状态并与当前执行的程序段相对应。
5.如权利要求1所述的系统,其中,所述控制节点和所述客户端之间采用流式数据帧以二进制序列化格式传输下发的所述性能数据采集和分析指令和上传的所述运行时数据的分析结果。
6.如权利要求1所述的系统,其中,所述客户端连接所述控制节点并进行目标节点上目标应用的注册,同时在所述客户端上保留所述注册内容,用于进行基于所述性能数据采集和分析指令的运行状态数据获取和上传。
7.如权利要求1所述的系统,其中,所述目标节点包括多个容器,所述容器被创建为包括性能分析包装脚本,并且所述客户端通过所述性能分析包装脚本启动。
8.如权利要求1所述的系统,其中,所述目标节点中包括对应于不同微服务的应用,并且所述性能分析器基于所述性能数据采集和分析指令中指定的目标应用获取所述目标应用的运行时数据。
9.如权利要求1所述的系统,还包括:
操作节点,用于:
向所述控制节点发送采集目标信息,其中,所述控制节点基于所述采集目标信息向对应目标节点的客户端发送的性能分析指令;以及
接收所述控制节点收集并转发的所述运行时数据的分析结果,并生成性能分析报告。
10.一种用于分布式系统的性能分析方法,所述分布式系统包括多个异构节点,所述性能分析方法包括:
接收来自控制节点的性能分析指令;
基于所述性能分析指令,调用所述分布式系统的目标节点上相应的性能分析器来获取所述目标节点上运行程序的运行时数据并生成分析结果;及
将所述运行时数据的分析结果上传给所述控制节点。
11.如权利要求10所述的方法,还包括:
目标节点被创建为包括性能分析包装脚本;
通过所述性能分析包装脚本启动客户端;以及
向所述控制节点进行目标节点上目标应用的注册。
12.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求10至11中任何一项所述的方法。
13.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求10至11中任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210675259.0A CN115269216A (zh) | 2022-06-15 | 2022-06-15 | 用于分布式系统的性能分析系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210675259.0A CN115269216A (zh) | 2022-06-15 | 2022-06-15 | 用于分布式系统的性能分析系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115269216A true CN115269216A (zh) | 2022-11-01 |
Family
ID=83761751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210675259.0A Pending CN115269216A (zh) | 2022-06-15 | 2022-06-15 | 用于分布式系统的性能分析系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115269216A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116467151A (zh) * | 2023-06-19 | 2023-07-21 | 浙江无端科技股份有限公司 | 一种程序性能信息采集方法、装置、设备及存储介质 |
-
2022
- 2022-06-15 CN CN202210675259.0A patent/CN115269216A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116467151A (zh) * | 2023-06-19 | 2023-07-21 | 浙江无端科技股份有限公司 | 一种程序性能信息采集方法、装置、设备及存储介质 |
CN116467151B (zh) * | 2023-06-19 | 2023-08-25 | 浙江无端科技股份有限公司 | 一种程序性能信息采集方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10887405B2 (en) | Method and system for implementing dual network telemetry application programming interface (API) framework | |
JP6571161B2 (ja) | アプリケーショントポロジ関係を探索するための方法、装置、およびシステム | |
US9038094B2 (en) | Automated service interface optimization | |
CN112306586B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
Brandón et al. | Fmone: A flexible monitoring solution at the edge | |
CN111625354A (zh) | 一种边缘计算设备算力的编排方法及其相关设备 | |
CN114490268A (zh) | 全链路监控方法、装置、设备、存储介质和程序产品 | |
US11294740B2 (en) | Event to serverless function workflow instance mapping mechanism | |
CN112764875B (zh) | 一种面向智能计算的轻量级入口容器微服务系统及方法 | |
CN111447170A (zh) | 数据处理方法及其系统、计算机系统及计算机可读介质 | |
US20230353467A1 (en) | Methods and apparatus for determining low latency network connectivity in computing systems | |
CN114205342A (zh) | 服务调试的路由方法、电子设备、介质及程序产品 | |
CN115269216A (zh) | 用于分布式系统的性能分析系统和方法 | |
KR20220060429A (ko) | 원격지의 네트워크 스위치에 대한 로그 수집 시스템 및 이의 빅데이터 구축 방법 | |
CN113992644B (zh) | 一种基于无服务技术的物联网关系统及其数据处理方法 | |
US20190068478A1 (en) | System and method for collecting performance and usage data from computing devices | |
CN113114522B (zh) | 流量监控设备 | |
CN114860480A (zh) | 基于Serverless的Web服务代理方法、装置及存储介质 | |
CN112596987A (zh) | 应用程序可用性的监控方法、装置、电子设备和介质 | |
CN112433870A (zh) | 数据调用方法和装置、计算机可读存储介质、电子设备 | |
CN114844957B (zh) | 链路报文转换方法、装置、设备、存储介质和程序产品 | |
CN117389852A (zh) | 获取日志信息的方法、装置、电子设备及可读存储介质 | |
Sani | DME: Technique for computation offloading in Mobile Cloud Computing. | |
Silva et al. | Jay: A software framework for prototyping and evaluating offloading applications in hybrid edge clouds | |
CN114860594A (zh) | 跨行收报测试方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |