CN115017033A - 中间层应用的性能检测方法、装置、可读介质及电子设备 - Google Patents

中间层应用的性能检测方法、装置、可读介质及电子设备 Download PDF

Info

Publication number
CN115017033A
CN115017033A CN202210488472.0A CN202210488472A CN115017033A CN 115017033 A CN115017033 A CN 115017033A CN 202210488472 A CN202210488472 A CN 202210488472A CN 115017033 A CN115017033 A CN 115017033A
Authority
CN
China
Prior art keywords
layer application
request
middle layer
performance
time
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
Application number
CN202210488472.0A
Other languages
English (en)
Inventor
贺鹏
张丁杰
苗根
赵员康
武庆华
李振宇
谢高岗
王剑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Youzhuju Network Technology Co Ltd
Original Assignee
Beijing Youzhuju Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Youzhuju Network Technology Co Ltd filed Critical Beijing Youzhuju Network Technology Co Ltd
Priority to CN202210488472.0A priority Critical patent/CN115017033A/zh
Publication of CN115017033A publication Critical patent/CN115017033A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及一种中间层应用的性能检测方法、装置、可读介质及电子设备,方法包括:接收用于指示对中间层应用的性能进行检测的性能检测指令;在中间层应用处于运行状态时,获取中间层应用的性能指标参数,其中,中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收下游服务器返回的结果;根据性能指标参数和预设的每一类异常对应的异常条件,对中间层应用的性能进行检测。如此,直接通过将获取的性能指标参数与预设的每一类异常对应的异常条件进行匹配,即可准确得到中间层应用的性能检测结果,提高了对中间层应用性能检测的自动化程度,进而提升了对中间层应用的性能检测效率。

Description

中间层应用的性能检测方法、装置、可读介质及电子设备
技术领域
本公开涉及计算机应用技术领域,具体地,涉及一种中间层应用的性能检测方法、装置、可读介质及电子设备。
背景技术
中间层应用是指采用“分发-收集”通信模式的计算机软件。随着计算机技术的发展和广泛应用,中间层应用被广泛开发和部署,用于处理计算机系统中的大量数据。其中,图1是中间层应用通信模式的示意图。如图1所示,首先,中间层应用20接收来自上游服务器10发送的请求。接着,中间层应用20分发请求。由于处理此请求所依赖的数据量较大,这些数据保存在N个下游服务器30中,由下游服务器30提供访问服务,因此,中间层应用20将上游服务器10发送的请求拆分为N个子请求,对每个子请求处理之后,发送到N个下游服务器30。之后,下游服务器利用自有的数据分片处理子请求,并将结果返回中间层应用20。最后,中间层应用20收集返回的结果。示例地,中间层应用20收到N个下游服务器返回的结果,将N个结果聚合之后,返回上游服务器10,完成请求的处理。因此,请求处理的效率与中间层应用的性能的好坏密切相关,有必要对中间层应用的性能进行检测,以确保请求处理的效率。
发明内容
提供该部分内容以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该部分内容并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
第一方面,本公开提供一种中间层应用的性能检测方法,包括:
接收用于指示对中间层应用的性能进行检测的性能检测指令;
在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,其中,所述中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收所述下游服务器返回的结果;
根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测。
第二方面,本公开提供一种中间层应用的性能检测装置,包括:
接收模块,用于接收用于指示对中间层应用的性能进行检测的性能检测指令;
获取模块,用于在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,其中,所述中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收所述下游服务器返回的结果;
检测模块,用于根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测。
第三方面,本公开提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现第一方面所述方法的步骤。
第四方面,本公开提供一种电子设备,包括:
存储装置,其上存储有至少一个计算机程序;
至少一个处理装置,用于执行所述存储装置中的所述至少一个计算机程序,以实现本公开第一方面所述方法的步骤。
通过上述技术方案,在中间层应用处于运行状态时,获取中间层应用的性能指标参数,并根据该性能指标参数和预设的每一类异常对应的异常条件,对中间层应用的性能进行检测。如此,直接通过将获取的性能指标参数与预设的每一类异常对应的异常条件进行匹配,即可准确得到中间层应用的性能检测结果,提高了对中间层应用性能检测的自动化程度,进而提升了对中间层应用的性能检测效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
图1是中间层应用通信模式的示意图;
图2是根据本公开的一种实施方式提供的中间层应用的性能检测方法的流程图;
图3是根据本公开的一种实施方式提供的中间层应用的架构示意图;
图4是根据本公开的一种实施方式提供的中间层应用的性能指标参数的显示界面;
图5是根据本公开的一种实施方式提供的中间层应用的性能检测装置的框图;
图6示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
为了满足高QPS(Query-Per-Second,每秒查询率)和低延迟需求,以及降低应用开发难度,中间层应用具有如下特点:(1)中间层应用依赖多层软件框架和库构建和运行。首先,由于中间层应用使用RPC(Remote Procedure Call,远程过程调用)与上下游服务器通信,因此,中间层应用需要使用RPC框架进行构建。其次,中间层应用线程的运行依赖操作系统内核的管理和调度。这种多层软件架构增加了中间层应用执行的复杂性。(2)中间层应用大量采用异步、并发设计。其中,异步和并发操作容易掩盖应用性能异常的根本原因,为应用性能的检测带来困难。(3)中间层应用的性能依赖多个下游服务器,下游服务器的性能波动也会造成中间层应用性能异常。由于中间层应用通常被部署在数据中心中,且其自身特点导致其性能的检测存在困难,因此需要提供一种面向中间层应用的性能检测方法,来帮助开发人员了解中间层应用性能现状、定位应用执行异常、发现应用潜在的优化方向。
然而,在相关技术中,在对中间层应用的性能进行检测时,未对性能指标进一步处理,导致用户在直观了解的性能结果和所收集的性能指标之间存在一定跨度,无法从所收集数据直接评估系统性能,从而使得对中间层应用的性能检测效率较低。
有鉴于此,本公开提供一种中间层应用的性能检测方法、装置、可读介质及电子设备,能够自动化检测中间层应用的性能,提高对中间层应用的性能检测效率。
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
同时,可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。
图2是根据本公开的一种实施方式提供的中间层应用的性能检测方法的流程图。如图2所示,本公开提供的方法可以包括步骤21至步骤23。
在步骤21中,接收用于指示对中间层应用的性能进行检测的性能检测指令。
在本公开中,中间层应用的性能检测方法的执行主体可以为中间层应用的服务器。其中,中间层应用可以是微服务器应用、微服务器系统等。
在步骤22中,在中间层应用处于运行状态时,获取中间层应用的性能指标参数。
应当理解的是,服务器可以在中间层应用处于运行状态时接收性能检测指令,也可以在中间层应用未处于运行状态时接收性能检测指令,本公开对此不作具体限定。若在中间层应用未处于运行状态时接收性能检测指令,则服务器需等到中间层应用处于运行状态时再获取中间层应用的性能指标参数。
其中,中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收下游服务器返回的结果。中间层应用的性能指标参数可以包括在中间层应用对请求进行处理并发送至下游服务器过程中的性能参数,和/或,在接收下游服务器返回的结果过程中的性能指标参数。并且,考虑到从中间层应用接收到上游服务器发送的请求到返回给上游服务器最终结果的时间段(即请求延迟时间)为中间层应用的最关键的性能参数,因此,在可能的方式中,该性能指标参数可以为中间层应用在处理并发送请求过程中的时间相关参数,和/或,接收下游服务器返回的结果过程中的时间相关参数。
在步骤23中,根据性能指标参数和预设的每一类异常对应的异常条件,对中间层应用的性能进行检测。
示例地,针对每一类异常,在性能指标参数中确定是否存在满足该类异常对应的异常条件的参数,若存在满足该类异常对应的异常条件的参数,则确定中间层应用存在该类异常。
由于中间层应用依赖多层软件框架和库构建和运行,以及中间层应用的性能依赖多个下游服务器,因此,中间层应用的异常的类别通常为多个。在本公开中,为了提升对中间层应用的性能检测效率,预先设置每一类异常对应的异常条件,如此,在性能检测过程中,可以直接通过将获取的性能指标参数与预设的每一类异常对应的异常条件进行匹配,即可准确得到中间层应用的性能检测结果。
采用上述技术方案,在中间层应用处于运行状态时,获取中间层应用的性能指标参数,并根据该性能指标参数和预设的每一类异常对应的异常条件,对中间层应用的性能进行检测。如此,可以直接通过将获取的性能指标参数与预设的每一类异常对应的异常条件进行匹配,即可准确得到中间层应用的性能检测结果,提高了对中间层应用性能检测的自动化程度,进而提升了对中间层应用的性能检测效率。
为了便于本领域技术人员更好的理解本公开所提供的中间层应用的性能检测方法的具体实施方式,下面以一个完整的实施例对本公开所提供的方法进行描述。
在相关技术中,多是利用应用运行时长对应用的可能异常代码进行检测,或者,仅利用从内核空间中获取的性能指标参数对应用性能进行检测,如此,由于所采集的数据不够全面,导致对中间层应用检测的异常范围有限、对中间层应用性能展示粒度不够细化,从而不能全面地对中间层应用的性能进行检测。因此,为了提高所获取的性能指标参数的全面性,在本公开中,可以同时收集多个软件层数据。示例地,在中间层应用处于运行状态时,可以从用户空间和内核空间中获取中间层应用的性能指标参数。
应当理解的是,所获取的性能指标参数的类型通常需要结合中间层应用的架构进行确定。图3是根据本公开的一种实施方式提供的中间层应用的架构示意图。如图3所示,右侧为中间层应用处理请求的关键代码流程,左侧为中间层应用主要组件及其关联关系。右侧第一个代码块computing函数+sending函数表示中间层应用层接收到请求后对请求进行一定的计算处理,并进行发送。第二个代码块(for循环)表示中间应用层向下游服务器发送N个子请求的具体过程。中间层应用先对每个子请求预处理(例如,调用pre_process函数进行预处理),然后调用query函数向下游服务器发送子请求。每一个query函数关联到RPC框架层的do_rpc函数。在操作系统内核中,do_rpc函数关联到tcp_sendmsg函数调用。此外,操作系统调用tcp_recvmsg函数接收下游服务器的返回数据。其中,tcp_sendmsg函数用于通过tcp(Transmission Control Protocol,传输控制协议)技术向下游服务器发送子请求,tcp_recvmsg函数用于通过tcp技术接收下游服务器返回的数据。
中间层应用包括三个线程池(upstream-io、worker和downstream-io)和三个队列(请求队列、子请求队列和结果队列)。其中,upstream-io线程池负责接收上游请求和回复请求对应的结果。worker线程池负责请求的预处理、for循环代码以及do_rpc函数执行。downstream-io线程池负责子请求的收发,即用于执行tcp_sendmsg函数和tcp_recvmsg函数。
基于图3所示的中间层应用的架构确定所获取的性能指标参数的类型。示例地,在确定出性能指标参数的类型之后,可以通过编写eBPF程序,使用Linux用户态以及内核跟踪技术uprobe和kprobe,跟踪中间层应用关键函数的执行信息,以收集函数的执行时间信息、线程的调度时间信息等。
应当理解的是,可以在待检测的中间层应用的服务器上部署eBPF程序以实现按照上述方式获取性能指标参数的目的。此外,还可以设定数据获取的持续时长(例如,30秒),并将在该持续时长内获取到的性能指标参数保存在服务器硬盘中。下面对获取中间层应用的性能指标参数的具体实施方式进行描述。
首先,在中间层应用处于运行状态时,采用第一跟踪技术获取在用户空间中运行的第一类函数的执行时间信息,以及每一第一类函数每次执行时对应的请求标识,以得到每一请求对应的第一类函数的执行时间信息。
其中,第一跟踪技术为uprobe技术,第一类函数为在用户空间中运行的函数,例如,computing函数、sending函数和do_rpc函数。其中,computing函数和sending函数运行时间较长do_rpc函数的运行时间较短,因此,在第一类函数为computing函数和sending函数时,执行时间信息可以包括函数开始运行时间、结束时间和运行时间等。在第一类函数为do_rpc函数时,执行时间信息为do_rpc函数开始运行时间。
例如,利用uprobe技术追踪computing函数和sending函数的执行时间信息,以得到computing函数和sending函数的执行开始时间和结束时间,并且获取computing函数和sending函数每次执行时对应的请求标识reqid,以得到每一请求对应的computing函数和sending函数的执行开始时间和结束时间。以及,用uprobe技术追踪do_rpc函数的执行时间信息,以得到do_rpc函数的执行开始时间。
应当理解的是,在中间层应用处于运行状态时可能会处理多个请求,所获取的中间层应用的性能指标参数可能是中间层应用在处理多个请求时的性能指标参数,因此,为了进一步区分每一请求对应的性能指标参数,在本公开中,还需要获取每一第一类函数每次执行时对应的请求标识,以得到每一请求对应的第一类函数的执行时间信息。
接着,采用第二跟踪技术获取在内核空间中运行的第二类函数的执行时间信息,以及每一第二类函数每次执行时对应的请求标识,以得到每一请求对应的第二类函数的执行时间信息,第二类函数包括用于调度线程的调度函数和用于收发请求的收发函数。
其中,第二跟踪技术kprobe技术,第二类函数为在内核空间中运行的函数包括调度函数和收发函数。例如,收发函数可以包括tcp_sendmsg函数和tcp_recvmsg函数,调度函数可以包括ttwu_do_wakeup函数、wake_up_new_task函数和finish_task_switch函数等。其中,ttwu_do_wakeup函数、wake_up_new_task函数用于唤醒线程,finish_task_switch函数用于结束线程。
例如,利用kprobe技术追踪tcp_sendmsg函数和tcp_recvmsg函数,以得到tcp_sendmsg函数和tcp_recvmsg函数的执行开始时间。以及,利用kprobe技术追踪ttwu_do_wakeup函数、wake_up_new_task函数和finish_task_switch函数的执行开始时间,以得到每一请求对应的第二类函数的执行时间信息。
之后,根据每一请求对应的用于调度线程的函数的执行时间信息,确定执行第一类函数和执行用于接收和发送请求的函数的线程的调度信息,以得到每一请求对应的线程的调度时间信息。
例如,线程的调度时间信息可以包括线程的调度延迟时间和运行时间。首先,根据第二类函数中ttwu_do_wakeup函数、wake_up_new_task函数和finish_task_switch函数的执行开始时间,确定出执行computing函数、sending函数和do_rpc函数的worker线程的开始调度时间sched、开始运行时间run和运行结束时间end,进而计算出worker线程的调度延迟时间sched_delay=run-sched,运行时间run_time=end-run。类似地,计算出执行tcp_sendmsg和tcp_recvmsg函数的downstream-io线程的调度延迟时间sched_delay和运行时间run_time。
应当理解的是,无论是worker线程还是downstream-io线程均可以包括多条线程,例如,worker线程和downstream-io线程分别包括16条线程,且每一条线程均可以被调度一次或多次。在本公开中,通过上述kprobe技术,可以获取到每一请求对应的执行函数的worker线程集合tid_set_1。类似地,也可以获取到每一请求对应的执行函数的downstream-io线程集合tid_set_2。其中,在每一线程集合中可以包括每一线程的调度延迟时间和运行时间。
最后,获取每一请求的开始时刻和结束时刻,并根据开始时刻、结束时刻以及线程的调度时间信息,确定每一请求对应的线程的离线时间信息。
应当理解的是,每一请求的开始时刻是指每一请求对应的computing函数的执行开始时间,每一请求的结束时刻是指每一请求对应的sending函数的结束时间。因此,按照上述所确定的每一请求的对应的computing函数和sending函数的执行开始时间和结束时间,可以确定出每一请求的开始时刻和结束时刻。之后,在该开始时刻和结束时刻之间的时间段内除线程的调度延迟时间和运行时间之外的时间,记为线程的离线时间信息off_time。
此外,在通过kprobe技术追踪tcp_sendmsg函数和tcp_recvmsg函数的执行时间信息时,还可以提取利用tcp_sendmsg函数传输的部分数据包内容,以及利用tcp_recvmsg函数传输的部分数据包内容,以从该部分数据包内容中获取到请求标识reqid。例如,预先获知请求标识在数据包中的位置,之后,提取该位置处的数据以得到请求标识reqid。
应当理解的是,按照上述获取方式,可以得到每一请求对应的性能指标参数。在存储时可以利用键值对(Key-Value对)表示每一请求对应的性能指标参数。例如,在一个Key-Value对中,Key表征该请求的请求标识,Value表征该请求对应的性能指标参数。
采用上述技术方案,相较于相关技术中仅从内核空间中获取性能指标参数,提高了所获取的性能指标参数的全面性,拓展了数据获取来源,增加了可检测的应用异常的范围,进一步提升对中间层应用的性能检测效率。
在按照上述方式获取到每一请求对应的性能指标参数之后,还可以将该性能指标参数显示出来。示例地,针对每一请求,将该请求对应的中间层应用的性能指标参数显示在同一显示界面,例如,可以使用开源可视化库plotly实现显示中间层应用的性能指标参数的目的。
示例地,图4是根据本公开的一种实施方式提供的中间层应用的性能指标参数的显示界面。如图4所示,中间层应用在处理一个请求时会分成两批次(batch1和batch2)进行处理,并调用两个worker线程执行分别对两个batch执行“computing函数+sending函数”调用的操作。如图4所示,两个batch的处理时长存在严重不平衡。例如,第一个worker线程执行的“computing函数+sending函数”调用的操作的总时长小于第二个worker线程执行的“computing函数”调用的操作,如此,将会导致worker线程资源浪费,增加中间层应用的延迟。如此,中间层应用的开发人员基于图4所示的中间层应用的性能指标参数,可以确定该中间层应用存在应用逻辑设计异常,且该异常是由于两个batch中的任务量分配不均导致的。如此,可以修改相应的代码逻辑即可修复该异常。
应当理解的是,根据实际需求,在性能指标参数的显示界面中还可以显示出其他线程(例如,downstream-io线程)的运行时间、调度延迟时间、各函数(例如do_rpc函数、tcp_sendmsg函数和tcp_recvmsg函数)的执行时间等。本公开对此不作具体限定。
采用上述技术方案,便于用户直接观察到中间层应用处理该请求的过程。并且,方便用户快速确认中间层应用在处理请求的过程中是否存在线程调度延迟异常增大、下游回复过慢等异常。
下面对根据所述性能指标参数和预设的每一类异常的异常条件,对所述中间层应用的性能进行检测的具体实施方式进行描述。
应当理解的是,每个请求对应的性能指标参数的数据量非常大,在根据大量的性能指标参数对中间层应用的性能检测时会导致较大的工作量,为了减少对中间层应用的性能检测的工作量,在一种可能的实施例中,根据性能指标参数确定目标性能指标参数,目标性能指标参数的数量小于性能指标参数的数量,之后,根据目标性能指标参数和预设的每一类异常的异常条件,对中间层应用的性能进行检测。其中,目标性能指标参数是指与中间层应用的性能密切相关的性能指标参数。
在该实施例中的一种可能方式中,性能指标参数为从用户空间和内核空间中获取的中间层应用的性能指标参数,且性能指标参数包括:各函数的执行时间信息、各线程的调度时间信息和各线程的离线时间信息。其中,可以采用上述方式获取中间层应用的性能指标参数。
相应地,目标性能指标参数包括以下中的至少一者:目标函数的执行时间信息、用户空间和内核空间之间的时间间隔、用于表征中间层应用从向下游服务器发送请求到接收到下游服务器返回的反馈数据所耗时间的RPC耗时、线程的调度延迟时间、线程的离线时间、用于表征中间层应用与下游服务器交互所耗时间的请求耗时、用于表征中间层应用向下游服务器发送请求所耗时间的发送耗时。
示例地,目标性能指标参数可以包括:
(1)目标函数的执行时间信息。其中,目标函数为上述所描述的在用户空间中运行的第一类函数和在内核空间中运行的第二类函数的执行时间信息中的任意一个或多个函数。例如,目标函数可以为computing函数和sending函数,执行时间信息可以为computing函数和sending函数的运行开始时间和运行时间,如此,目标函数的执行时间信息可以表示为<FuncName:start_time,duration>,FuncName=computing/sending。
(2)用户空间和内核空间之间的时间间隔。其中,用户空间和内核空间之间的时间间隔为do_rpc函数和对应tcp_sendmsg函数执行的时间差,即,针对每一子请求,该子请求对应的do_rpc函数和tcp_sendmsg函数之间执行开始时间之差。该时间间隔用于表征不同软件层的交互(用户空间与内核空间之间的交互)对请求发送造成的时间延迟。用户空间和内核空间之间的时间间隔可以表示为<Gap:avg,max>。avg和max表示一个请求的N个子请求对应的N个时间间隔gap的平均值和最大值,其中,每一子请求对应一个时间间隔gap。
(3)RPC耗时。RPC耗时用于表征中间层应用从向下游服务器发送请求到接收到下游服务器返回的反馈数据所耗时间,可以表示为<RPCLatency:avg,max>。其中,RPCLatency表征中间层应用从向下游服务器发送请求到接收到下游服务器返回的反馈数据所耗时间,即,tcp_sendmsg函数与对应tcp_recvmsg函数的执行时间之差。类似地,avg和max表示一个请求的N个子请求对应的N个RPC耗时RPCLatency的平均值和最大值。
(4)线程的调度延迟时间。线程的调度延迟时间可以表示为<schedDelay:avg,max>。其中,schedDelay表征线程的调度延迟时间,即开始运行时间run与开始调度时间sched的差值。计算线程中每一线程每次调度时的调度延迟时间schedDelay,之后,计算调度延迟时间的平均值avg和最大值max。
应当理解的是,由于worker线程的调度延迟时间对中间层应用的性能的影响较弱,因此,可以仅获取downstream-io线程的调度延迟时间,如此,在确保可检测的异常的范围较大的基础上尽可能减少工作量,进一步提升对中间层应用的性能的检测效率。
(5)线程的离线时间。线程的离线时间可以表示为<offCPU:avg,max>.类似地,计算线程中每一线程每次调度时的离线时间offCPU,之后,计算离线时间的平均值avg和最大值max。同样地,也可以仅获取downstream-io线程的离线时间。
(6)用于表征中间层应用与下游服务器交互所耗时间的请求耗时。请求耗时可以表示为<request:duration>。其中,请求耗时为发送请求中第一子请求的tcp_sendmsg的执行开始时间与该请求中最后一个子请求对应的tcp_recvmsg函数的执行开始时间的时间差。请求耗时用于检测中间层应用与下游服务器交互的总耗时是否异常。
(7)用于表征中间层应用向下游服务器发送请求所耗时间的发送耗时。发送耗时可以表示为<send:duration>。其中,发送耗时为发送请求中第一子请求的tcp_sendmsg的执行开始时间与发送该请求中最后一子请求的tcp_sendmsg的执行开始时间之差。发送耗时用于检测中间层应用向下游服务器发送N个子请求是否存在耗时异常。
应当理解的是,可以根据实际需求设置不同的目标性能指标参数,本公开对此不做具体限定。
此外,在本公开中,异常类别可以包括发送超时异常、层间隔超时异常、线程调度超时异常、线程离线时间异常和下游服务器反馈超时异常中的至少一者。其中,发送超时异常对应的异常条件为发送耗时与请求耗时的比值大于或等于第一预设值,例如,send.duration/request.duration大于或等于T1。层间隔超时异常对应的异常条件为用户空间和内核空间之间的时间间隔大于或等于第二预设值,例如,Gap.max大于或等于T2。线程调度超时异常对应的异常条件为线程调度延迟时间大于或等于第三预设值,例如,schedDelay.max大于或等于T3。线程离线时间异常对应的异常条件为线程的离线时间大于或等于第四预设值,例如,offCPU.max大于或等于T4。下游服务器反馈超时异常对应的异常条件为RPC最大耗时与RPC平均耗时的比值大于或等于第五预设数值,例如,RPCLatency.max/RPClatency.avg大于或等于T5。表1示出了一种异常类别以及每一类别异常对应的异常条件。在表1中第一预设值T1、第二预设值T2、第三预设值T3、第四预设值T4和第五预设值T5由用户根据待检测的中间层应用的特点以及运行环境自行设定,本公开对此不作具体限定。
表1
异常类别 异常条件
发送超时异常 send.duration/request.duration≥T1
层间隔超时异常 Gap.max≥T2
线程调度超时异常 schedDelay.max≥T3
线程离线时间异常 offCPU.max≥T4
下游服务器反馈超时异常 RPCLatency.max/RPClatency.avg≥T5
应当理解的是,在实际应用中,用户也可以针对待检测中间层应用的特点,添加特定于待检测中间层应用的异常类别以及该类别异常对应的异常条件,增加对待检测的中间层应用性能的了解,并且,每一类别异常对应的异常条件也可以根据实际需求进行设置,本公开对此不作具体限定。
此外,在获取的性能指标参数为中间层应用在预设时长内处理的每一请求对应的性能指标参数的情况下,上述根据性能指标参数和预设的每一类异常对应的异常条件,对中间层应用的性能进行检测的具体实施方式还可以为:
针对每一请求,根据请求对应的性能指标参数和预设的每一类异常对应的异常条件,确定中间层应用在处理所述请求过程中存在的异常类型;
根据中间层应用在处理每一请求过程中存在的异常类型,确定每一类别异常在中间层应用处理请求过程中出现的概率。
示例地,假设预设的异常类别以及每一类别异常对应的异常条件如表1所示,则按照上述方式确定类别异常在所述中间层应用处理请求过程中出现的概率如表2所示,且在表2中还使出了每类异常所导致的中间层应用性能损失。
表2
异常类别 出现概率 性能损失
发送超时异常 87.6% 41.8%
层间隔超时异常 1.6% 15.2%
线程调度超时异常 1.3% 13.6%
线程离线时间异常 0.3% 22.0%
下游服务器反馈超时异常 17.0% 13.6%
从表2所示的性能检测结果来看,发送超时异常和下游服务器反馈超时异常这两类异常在待检测的中间层应用中最为严重,即,中间层应用在处理请求时87.6%的请求会遭遇发送超时异常,且中间层应用性能损失达到41.8%。中间层应用在处理请求时17%的请求会遭遇下游服务器反馈超时异常,且中间层应用性能损失达到13.6%。因此,用户可以针对这两种异常对待检测的中间层应用进行优化。例如,针对发送超时异常进行“并行化发送”优化,将中间层应用平均延迟降低了40.8%。针对下游服务器反馈超时异常进行了“重排序”优化,有37.5%以上的请求的延迟降低5%以上。
基于同一构思,本公开提供一种中间层应用的性能检测装置。图5是根据本公开的一种实施方式提供的中间层应用的性能检测装置的框图。如图5所示,中间层应用的性能检测装置500可以包括:
接收模块501,用于接收用于指示对中间层应用的性能进行检测的性能检测指令;
获取模块502,用于在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,其中,所述中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收所述下游服务器返回的结果;
检测模块503,用于根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测。
可选地,所述检测模块503包括:
第一确定子模块,用于针对每一类异常,在所述性能指标参数中确定是否存在满足该类异常对应的异常条件的参数,若存在满足该类异常对应的异常条件的参数,则确定所述中间层应用存在该类异常。
可选地,所述获取模块502包括:
第一获取子模块,用于在所述中间层应用处于运行状态时,获取中间层应用在预设时长内处理的每一请求对应的性能指标参数;
相应地,所述检测模块503包括:
第二确定子模块,用于针对每一请求,根据所述请求对应的性能指标参数和预设的每一类异常对应的异常条件,确定所述中间层应用在处理所述请求过程中存在的异常类型;
第三确定子模块,用于根据所述中间层应用在处理所述每一请求过程中存在的异常类型,确定每一类别异常在所述中间层应用处理请求过程中出现的概率。
可选地,所述获取模块502包括:
第二获取子模块,用于在所述中间层应用处于运行状态时,从用户空间和内核空间中获取所述中间层应用的性能指标参数。
可选地,所述获取模块502包括:
第三获取子模块,用于在所述中间层应用处于运行状态时,采用第一跟踪技术获取在用户空间中运行的第一类函数的执行时间信息,以及每一所述第一类函数每次执行时对应的请求标识,以得到每一请求对应的第一类函数的执行时间信息;
第四获取子模块,用于采用第二跟踪技术获取在内核空间中运行的第二类函数的执行时间信息,以及每一所述第二类函数每次执行时对应的请求标识,以得到每一请求对应的第二类函数的执行时间信息,所述第二类函数包括用于调度线程的调度函数和用于收发请求的收发函数;
第四确定子模块,用于根据每一请求对应的所述调度函数的执行时间信息,确定执行所述第一类函数和执行所述收发函数的线程的调度信息,以得到每一请求对应的线程的调度时间信息;
第五获取子模块,用于获取每一请求的开始时刻和结束时刻,并根据所述开始时刻、所述结束时刻以及线程的调度时间信息,确定每一请求对应的线程的离线时间信息。
可选地,所述检测模块503包括:
第五确定子模块,用于根据所述性能指标参数确定目标性能指标参数,所述目标性能指标参数的数量小于所述性能指标参数的数量;
检测子模块,用于根据所述目标性能指标参数和预设的每一类异常的异常条件,对所述中间层应用的性能进行检测。
可选地,所述性能指标参数为从用户空间和内核空间中获取的中间层应用的性能指标参数,且所述性能指标参数包括:各函数的执行时间信息、各线程的调度时间信息和各线程的离线时间信息;
所述目标性能指标参数包括以下中的至少一者:目标函数的执行时间信息、用户空间和内核空间之间的时间间隔、用于表征中间层应用从向下游服务器发送请求到接收到下游服务器返回的数据所耗时间的RPC耗时、线程的调度延迟时间、线程的离线时间、用于表征中间层应用与下游服务器交互所耗时间的请求耗时、用于表征中间层应用向下游服务器发送请求所耗时间的发送耗时。
可选地,异常类别包括发送超时异常、层间隔超时异常、线程调度超时异常、线程离线时间异常和下游服务器反馈超时异常中的至少一者;
其中,所述发送超时异常对应的异常条件为所述发送耗时与所述请求耗时的比值大于或等于第一预设值;
所述层间隔超时异常对应的异常条件为用户空间和内核空间之间的时间间隔大于或等于第二预设值;
所述线程调度超时异常对应的异常条件为线程调度延迟时间大于或等于第三预设值;
所述线程离线时间异常对应的异常条件为线程的离线时间大于或等于第四预设值;
所述下游服务器反馈超时异常对应的异常条件为RPC最大耗时与RPC平均耗时的比值大于或等于第五预设数值。
可选地,所述装置还包括:
显示模块,用于显示所述中间层应用的性能指标参数。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
基于同一构思,本公开实施例还提供一种电子设备,包括:
存储装置,其上存储有至少一个计算机程序;
至少一个处理装置,用于执行所述存储装置中的所述至少一个计算机程序,以实现上述任一中间层应用的性能检测方法的步骤。
下面参考图6,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,服务器可以利用诸如HTTP(HyperText Transfer Protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收用于指示对中间层应用的性能进行检测的性能检测指令;在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,其中,所述中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收所述下游服务器返回的结果;根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,示例1提供了一种中间层应用的性能检测方法,包括:接收用于指示对中间层应用的性能进行检测的性能检测指令;在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,其中,所述中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收所述下游服务器返回的结果;根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测。
根据本公开的一个或多个实施例,示例2提供了示例1的方法,所述根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测,包括:针对每一类异常,在所述性能指标参数中确定是否存在满足该类异常对应的异常条件的参数,若存在满足该类异常对应的异常条件的参数,则确定所述中间层应用存在该类异常。
根据本公开的一个或多个实施例,示例3提供了示例1的方法,所述在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,包括:在所述中间层应用处于运行状态时,获取中间层应用在预设时长内处理的每一请求对应的性能指标参数;相应地,所述根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测,包括:针对每一请求,根据所述请求对应的性能指标参数和预设的每一类异常对应的异常条件,确定所述中间层应用在处理所述请求过程中存在的异常类型;根据所述中间层应用在处理所述每一请求过程中存在的异常类型,确定每一类别异常在所述中间层应用处理请求过程中出现的概率。
根据本公开的一个或多个实施例,示例4提供了示例1的方法,所述在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,包括:在所述中间层应用处于运行状态时,从用户空间和内核空间中获取所述中间层应用的性能指标参数。
根据本公开的一个或多个实施例,示例5提供了示例1的方法,所述在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,包括:在所述中间层应用处于运行状态时,采用第一跟踪技术获取在用户空间中运行的第一类函数的执行时间信息,以及每一所述第一类函数每次执行时对应的请求标识,以得到每一请求对应的第一类函数的执行时间信息;采用第二跟踪技术获取在内核空间中运行的第二类函数的执行时间信息,以及每一所述第二类函数每次执行时对应的请求标识,以得到每一请求对应的第二类函数的执行时间信息,所述第二类函数包括用于调度线程的调度函数和用于收发请求的收发函数;根据每一请求对应的所述调度函数的执行时间信息,确定执行所述第一类函数和执行所述收发函数的线程的调度信息,以得到每一请求对应的线程的调度时间信息;获取每一请求的开始时刻和结束时刻,并根据所述开始时刻、所述结束时刻以及线程的调度时间信息,确定每一请求对应的线程的离线时间信息。
根据本公开的一个或多个实施例,示例6提供了示例1-5中任一项的方法,所述根据所述性能指标参数和预设的每一类异常的异常条件,对所述中间层应用的性能进行检测,包括:根据所述性能指标参数确定目标性能指标参数,所述目标性能指标参数的数量小于所述性能指标参数的数量;根据所述目标性能指标参数和预设的每一类异常的异常条件,对所述中间层应用的性能进行检测。
根据本公开的一个或多个实施例,示例7提供了示例6的方法,所述性能指标参数为从用户空间和内核空间中获取的中间层应用的性能指标参数,且所述性能指标参数包括:各函数的执行时间信息、各线程的调度时间信息和各线程的离线时间信息;所述目标性能指标参数包括以下中的至少一者:目标函数的执行时间信息、用户空间和内核空间之间的时间间隔、用于表征中间层应用从向下游服务器发送请求到接收到下游服务器返回的数据所耗时间的RPC耗时、线程的调度延迟时间、线程的离线时间、用于表征中间层应用与下游服务器交互所耗时间的请求耗时、用于表征中间层应用向下游服务器发送请求所耗时间的发送耗时。
根据本公开的一个或多个实施例,示例8提供了示例7的方法,异常类别包括发送超时异常、层间隔超时异常、线程调度超时异常、线程离线时间异常和下游服务器反馈超时异常中的至少一者;其中,所述发送超时异常对应的异常条件为所述发送耗时与所述请求耗时的比值大于或等于第一预设值;所述层间隔超时异常对应的异常条件为用户空间和内核空间之间的时间间隔大于或等于第二预设值;所述线程调度超时异常对应的异常条件为线程调度延迟时间大于或等于第三预设值;所述线程离线时间异常对应的异常条件为线程的离线时间大于或等于第四预设值;所述下游服务器反馈超时异常对应的异常条件为RPC最大耗时与RPC平均耗时的比值大于或等于第五预设数值。
根据本公开的一个或多个实施例,示例9提供了示例1-5中任一项的方法,所述方法还包括:显示所述中间层应用的性能指标参数。
根据本公开的一个或多个实施例,示例10提供了一种中间层应用的性能检测装置,包括:接收模块,用于接收用于指示对中间层应用的性能进行检测的性能检测指令;获取模块,用于在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,其中,所述中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收所述下游服务器返回的结果;检测模块,用于根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测。
根据本公开的一个或多个实施例,示例11提供了示例10的装置,所述检测模块包括:第一确定子模块,用于针对每一类异常,在所述性能指标参数中确定是否存在满足该类异常对应的异常条件的参数,若存在满足该类异常对应的异常条件的参数,则确定所述中间层应用存在该类异常。
根据本公开的一个或多个实施例,示例12提供了示例10的装置,所述获取模块包括:第一获取子模块,用于在所述中间层应用处于运行状态时,获取中间层应用在预设时长内处理的每一请求对应的性能指标参数;相应地,所述检测模块包括:第二确定子模块,用于针对每一请求,根据所述请求对应的性能指标参数和预设的每一类异常对应的异常条件,确定所述中间层应用在处理所述请求过程中存在的异常类型;第三确定子模块,用于根据所述中间层应用在处理所述每一请求过程中存在的异常类型,确定每一类别异常在所述中间层应用处理请求过程中出现的概率。
根据本公开的一个或多个实施例,示例13提供了示例10的装置,所述获取模块包括:第二获取子模块,用于在所述中间层应用处于运行状态时,从用户空间和内核空间中获取所述中间层应用的性能指标参数。
根据本公开的一个或多个实施例,示例14提供了示例10的装置,所述获取模块包括:第三获取子模块,用于在所述中间层应用处于运行状态时,采用第一跟踪技术获取在用户空间中运行的第一类函数的执行时间信息,以及每一所述第一类函数每次执行时对应的请求标识,以得到每一请求对应的第一类函数的执行时间信息;第四获取子模块,用于采用第二跟踪技术获取在内核空间中运行的第二类函数的执行时间信息,以及每一所述第二类函数每次执行时对应的请求标识,以得到每一请求对应的第二类函数的执行时间信息,所述第二类函数包括用于调度线程的调度函数和用于收发请求的收发函数;第四确定子模块,用于根据每一请求对应的所述调度函数的执行时间信息,确定执行所述第一类函数和执行所述收发函数的线程的调度信息,以得到每一请求对应的线程的调度时间信息;第五获取子模块,用于获取每一请求的开始时刻和结束时刻,并根据所述开始时刻、所述结束时刻以及线程的调度时间信息,确定每一请求对应的线程的离线时间信息。
根据本公开的一个或多个实施例,示例15提供了示例10-14中任一项的装置,所述检测模块包括:第五确定子模块,用于根据所述性能指标参数确定目标性能指标参数,所述目标性能指标参数的数量小于所述性能指标参数的数量;检测子模块,用于根据所述目标性能指标参数和预设的每一类异常的异常条件,对所述中间层应用的性能进行检测。
根据本公开的一个或多个实施例,示例16提供了示例15的装置,所述性能指标参数为从用户空间和内核空间中获取的中间层应用的性能指标参数,且所述性能指标参数包括:各函数的执行时间信息、各线程的调度时间信息和各线程的离线时间信息;所述目标性能指标参数包括以下中的至少一者:目标函数的执行时间信息、用户空间和内核空间之间的时间间隔、用于表征中间层应用从向下游服务器发送请求到接收到下游服务器返回的数据所耗时间的RPC耗时、线程的调度延迟时间、线程的离线时间、用于表征中间层应用与下游服务器交互所耗时间的请求耗时、用于表征中间层应用向下游服务器发送请求所耗时间的发送耗时。
根据本公开的一个或多个实施例,示例17提供了示例16的装置,异常类别包括发送超时异常、层间隔超时异常、线程调度超时异常、线程离线时间异常和下游服务器反馈超时异常中的至少一者;其中,所述发送超时异常对应的异常条件为所述发送耗时与所述请求耗时的比值大于或等于第一预设值;所述层间隔超时异常对应的异常条件为用户空间和内核空间之间的时间间隔大于或等于第二预设值;所述线程调度超时异常对应的异常条件为线程调度延迟时间大于或等于第三预设值;所述线程离线时间异常对应的异常条件为线程的离线时间大于或等于第四预设值;所述下游服务器反馈超时异常对应的异常条件为RPC最大耗时与RPC平均耗时的比值大于或等于第五预设数值。
根据本公开的一个或多个实施例,示例18提供了示例10-14中任一项的装置,所述装置还包括:显示模块,用于显示所述中间层应用的性能指标参数。
根据本公开的一个或多个实施例,示例19提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现示例1-示例9中任一项所述方法的步骤。
根据本公开的一个或多个实施例,示例20提供了一种电子设备,包括:存储装置,其上存储有至少一个计算机程序;至少一个处理装置,用于执行所述存储装置中的所述至少一个计算机程序,以实现示例1-示例9中任一项所述方法的步骤。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

Claims (12)

1.一种中间层应用的性能检测方法,其特征在于,包括:
接收用于指示对中间层应用的性能进行检测的性能检测指令;
在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,其中,所述中间层应用处于运行状态时能够对器发送的请求进行处理并发送至下游服务器以及接收所述下游服务器返回的结果;
根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测。
2.根据权利要求1所述的方法,其特征在于,所述根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测,包括:
针对每一类异常,在所述性能指标参数中确定是否存在满足该类异常对应的异常条件的参数,若存在满足该类异常对应的异常条件的参数,则确定所述中间层应用存在该类异常。
3.根据权利要求1所述的方法,其特征在于,所述在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,包括:
在所述中间层应用处于运行状态时,获取中间层应用在预设时长内处理的每一请求对应的性能指标参数;
相应地,所述根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测,包括:
针对每一请求,根据所述请求对应的性能指标参数和预设的每一类异常对应的异常条件,确定所述中间层应用在处理所述请求过程中存在的异常类型;
根据所述中间层应用在处理所述每一请求过程中存在的异常类型,确定每一类别异常在所述中间层应用处理请求过程中出现的概率。
4.根据权利要求1所述的方法,其特征在于,所述在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,包括:
在所述中间层应用处于运行状态时,从用户空间和内核空间中获取所述中间层应用的性能指标参数。
5.根据权利要求1所述的方法,其特征在于,所述在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,包括:
在所述中间层应用处于运行状态时,采用第一跟踪技术获取在用户空间中运行的第一类函数的执行时间信息,以及每一所述第一类函数每次执行时对应的请求标识,以得到每一请求对应的第一类函数的执行时间信息;
采用第二跟踪技术获取在内核空间中运行的第二类函数的执行时间信息,以及每一所述第二类函数每次执行时对应的请求标识,以得到每一请求对应的第二类函数的执行时间信息,所述第二类函数包括用于调度线程的调度函数和用于收发请求的收发函数;
根据每一请求对应的所述调度函数的执行时间信息,确定执行所述第一类函数和执行所述收发函数的线程的调度信息,以得到每一请求对应的线程的调度时间信息;
获取每一请求的开始时刻和结束时刻,并根据所述开始时刻、所述结束时刻以及线程的调度时间信息,确定每一请求对应的线程的离线时间信息。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述根据所述性能指标参数和预设的每一类异常的异常条件,对所述中间层应用的性能进行检测,包括:
根据所述性能指标参数确定目标性能指标参数,所述目标性能指标参数的数量小于所述性能指标参数的数量;
根据所述目标性能指标参数和预设的每一类异常的异常条件,对所述中间层应用的性能进行检测。
7.根据权利要求6所述的方法,其特征在于,所述性能指标参数为从用户空间和内核空间中获取的中间层应用的性能指标参数,且所述性能指标参数包括:各函数的执行时间信息、各线程的调度时间信息和各线程的离线时间信息;
所述目标性能指标参数包括以下中的至少一者:目标函数的执行时间信息、用户空间和内核空间之间的时间间隔、用于表征中间层应用从向下游服务器发送请求到接收到下游服务器返回的数据所耗时间的RPC耗时、线程的调度延迟时间、线程的离线时间、用于表征中间层应用与下游服务器交互所耗时间的请求耗时、用于表征中间层应用向下游服务器发送请求所耗时间的发送耗时。
8.根据权利要求7所述的方法,其特征在于,异常类别包括发送超时异常、层间隔超时异常、线程调度超时异常、线程离线时间异常和下游服务器反馈超时异常中的至少一者;
其中,所述发送超时异常对应的异常条件为所述发送耗时与所述请求耗时的比值大于或等于第一预设值;
所述层间隔超时异常对应的异常条件为用户空间和内核空间之间的时间间隔大于或等于第二预设值;
所述线程调度超时异常对应的异常条件为线程调度延迟时间大于或等于第三预设值;
所述线程离线时间异常对应的异常条件为线程的离线时间大于或等于第四预设值;
所述下游服务器反馈超时异常对应的异常条件为RPC最大耗时与RPC平均耗时的比值大于或等于第五预设数值。
9.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
显示所述中间层应用的性能指标参数。
10.一种中间层应用的性能检测装置,其特征在于,包括:
接收模块,用于接收用于指示对中间层应用的性能进行检测的性能检测指令;
获取模块,用于在所述中间层应用处于运行状态时,获取所述中间层应用的性能指标参数,其中,所述中间层应用处于运行状态时能够对上游服务器发送的请求进行处理并发送至下游服务器以及接收所述下游服务器返回的结果;
检测模块,用于根据所述性能指标参数和预设的每一类异常对应的异常条件,对所述中间层应用的性能进行检测。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现权利要求1-9中任一项所述方法的步骤。
12.一种电子设备,其特征在于,包括:
存储装置,其上存储有至少一个计算机程序;
至少一个处理装置,用于执行所述存储装置中的所述至少一个计算机程序,以实现权利要求1-9中任一项所述方法的步骤。
CN202210488472.0A 2022-05-06 2022-05-06 中间层应用的性能检测方法、装置、可读介质及电子设备 Pending CN115017033A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210488472.0A CN115017033A (zh) 2022-05-06 2022-05-06 中间层应用的性能检测方法、装置、可读介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210488472.0A CN115017033A (zh) 2022-05-06 2022-05-06 中间层应用的性能检测方法、装置、可读介质及电子设备

Publications (1)

Publication Number Publication Date
CN115017033A true CN115017033A (zh) 2022-09-06

Family

ID=83068790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210488472.0A Pending CN115017033A (zh) 2022-05-06 2022-05-06 中间层应用的性能检测方法、装置、可读介质及电子设备

Country Status (1)

Country Link
CN (1) CN115017033A (zh)

Similar Documents

Publication Publication Date Title
CN111950988B (zh) 分布式工作流调度方法、装置、存储介质及电子设备
CN114625597A (zh) 监控运维系统、方法、装置、电子设备及存储介质
CN113722056A (zh) 任务调度方法、装置、电子设备和计算机可读介质
CN115328741A (zh) 一种异常处理方法、装置、设备和存储介质
CN111240834A (zh) 任务执行方法、装置、电子设备和存储介质
CN115629933A (zh) 业务系统监控方法、装置、设备及存储介质
CN116821187A (zh) 基于数据库的数据处理方法、装置、介质和电子设备
CN111324387A (zh) 应用任务的控制方法、装置、终端及系统
CN110960857A (zh) 一种游戏数据监控方法、装置、电子设备及存储介质
CN115017033A (zh) 中间层应用的性能检测方法、装置、可读介质及电子设备
CN114579401B (zh) 一种任务检测方法、装置、电子设备及存储介质
CN110727558A (zh) 信息提示方法、装置、存储介质及电子设备
CN113391896B (zh) 任务处理方法及装置、存储介质及电子设备
CN115202973A (zh) 应用运行状态的确定方法、装置、电子设备和介质
CN115729824A (zh) 脚本测试方法、装置、设备及存储介质
CN116560918A (zh) 一种压力测试方法、装置、设备及介质
CN113176937A (zh) 任务处理方法、装置和电子设备
CN112131832A (zh) 在线文档任务状态的提醒方法、装置及电子设备
CN111538577A (zh) 程序执行控制的装置及方法、终端和存储介质
CN111026571B (zh) 处理器降频处理方法、装置及电子设备
CN110334955B (zh) 指标评估的处理方法、装置、设备及存储介质
CN116661956A (zh) 一种异常数据检测方法、装置、终端设备及介质
CN116149822A (zh) 任务执行方法、装置、电子设备及存储介质
CN116662023A (zh) 一种异常数据检测方法、装置、电子设备及介质
CN117155732A (zh) 一种车辆can报文管理方法、装置、设备及存储介质

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