CN112749013B - 线程负载的检测方法、装置、电子设备及存储介质 - Google Patents

线程负载的检测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112749013B
CN112749013B CN202110070925.3A CN202110070925A CN112749013B CN 112749013 B CN112749013 B CN 112749013B CN 202110070925 A CN202110070925 A CN 202110070925A CN 112749013 B CN112749013 B CN 112749013B
Authority
CN
China
Prior art keywords
thread
threads
request
processing
determining
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.)
Active
Application number
CN202110070925.3A
Other languages
English (en)
Other versions
CN112749013A (zh
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.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya 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 Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202110070925.3A priority Critical patent/CN112749013B/zh
Publication of CN112749013A publication Critical patent/CN112749013A/zh
Application granted granted Critical
Publication of CN112749013B publication Critical patent/CN112749013B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了线程负载的检测方法、装置、电子设备及存储介质,属于应用监控技术领域。其中,线程负载的检测方法包括:通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息;根据执行信息确定线程池中所有线程对应的总执行时间与处理目标请求的时延;根据总执行时间与所有线程处理目标请求的时延确定目标请求在总线程负载资源中所占的线程负载率。本申请的实施能够自动化获取线程池中各个线程与处理请求相关的执行信息,且可以确定线程池所处理的每一请求对应所需的线程资源,有利于提高应用服务监控的效率。

Description

线程负载的检测方法、装置、电子设备及存储介质
技术领域
本申请涉及应用监控技术领域,具体而言,本申请涉及一种线程负载的检测方法和装置,一种电子设备,以及一种计算机可读存储介质。
背景技术
在软件技术中,工作线程请求处理能力是应用服务质量的重要数据指标,在进行应用的线程监控中,现有技术一般是采用jstack等命令向服务器获取与线程执行的相关信息,根据获取的信息确定当前线程运行的状态。然而,现有技术中,每次采用jstack等命令向服务器获取数据均需要工作人员手动操作,该业务操作繁琐,处理效率低;且所获取的信息仅可知悉当前线程运行的状态,无法确定线程处理每一请求所需的线程资源。
发明内容
本申请的目的旨在提供一种线程负载的检测方法、装置、电子设备及存储介质,以解决上述的至少一个技术问题。本申请实施例所提供的方案具体如下:
第一方面,本申请提供了一种线程负载的检测方法,包括:
通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息;
根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延;
根据所述总执行时间与所有线程处理目标请求的时延确定所述目标请求在总线程负载资源中所占的线程负载率。
可选地,所述通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息之前,还包括:根据应用框架的接口参数设定所述线程池的预设接口。
可选地通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息的步骤,包括:
根据所述预设接口周期性获取线程池中当前执行任务的线程数量、当前已创建的线程数量、线程池预设最大的线程数量、线程池预设最小的线程数量、线程处理各个请求的起始时间与结束时间中的至少一项信息。
可选地,所述根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延,包括:
根据所述执行信息中包括的当前执行任务的线程数量与线程池预设最大的线程数量确定当前的并发能力;
若所述当前的并发能力大于第一预设阈值,根据所述执行信息确定所述线程池中所有线程执行的总执行时间与处理目标请求的时延。
可选地,所述根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延,包括:
根据所述执行信息中包括的线程处理目标请求的起始时间与结束时间,确定各个线程处理所述目标请求的时延;
根据当前统计周期的时间与所述执行信息中包括的当前已创建的线程数量,确定所述线程池中所有线程对应的总执行时间。
可选地,所述根据所述总执行时间与处理目标请求的时延确定所述目标请求在总线程负载资源中所占的线程负载率,包括:
根据所有线程处理目标请求的时延在所述总执行时间中的占比,确定目标请求在总线程负载资源中所占的线程负载率。
可选地,还包括以下任意一项:
根据所述执行信息确定线程处理每一请求的时延;若所有请求的时延之和在所述总执行时间中的占比大于第二预设阈值,确定当前所述线程池中的线程处于高负载状态并确定每一请求在总线程负载资源中所占的线程负载率;
根据线程处理每一请求的时延与所述总执行时间确定每一请求在总线程负载资源中所占的线程负载率;若所有请求的线程负载率之和大于第三预设阈值,确定当前所述线程池中的线程处于高负载状态。
可选地,在当前所述线程池中的线程处于高负载状态时,发出告警信息和/或显示所述每一请求对应的线程负载率。
第二方面,本申请提供了一种线程负载的检测装置,包括:
获取模块,用于通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息;
第一确定模块,用于根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延;
第二确定模块,用于根据所述总执行时间与所有线程处理目标请求的时延确定所述目标请求在总线程负载资源中所占的线程负载率。
可选地,装置还包括用于根据应用框架的接口参数设定所述线程池的预设接口的模块。
可选地,获取模块还用于根据所述接口周期性获取线程池中当前执行任务的线程数量、当前已创建的线程数量、线程池预设最大的线程数量、线程池预设最小的线程数量、线程处理各个请求的起始时间与结束时间中的至少一项信息。
可选地,第一确定模块在用于执行根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延的步骤时,包括执行下述步骤:
根据所述执行信息中包括的当前执行任务的线程数量与线程池预设最大的线程数量确定当前的并发能力;
若所述当前的并发能力大于第一预设阈值,根据所述执行信息确定所述线程池中所有线程执行的总执行时间与处理目标请求的时延。
可选地,第一确定模块在用于执行根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延的步骤时,包括执行下述步骤:
根据所述执行信息中包括的线程处理目标请求的起始时间与结束时间,确定各个线程处理所述目标请求的时延;
根据当前统计周期的时间与所述执行信息中包括的当前已创建的线程数量,确定所述线程池中所有线程对应的总执行时间。
可选地,第二确定模块在用于执行根据所述总执行时间与处理目标请求的时延确定所述目标请求在总线程负载资源中所占的线程负载率的步骤时,包括执行下述步骤:
根据所有线程处理目标请求的时延在所述总执行时间中的占比,确定目标请求在总线程负载资源中所占的线程负载率。
可选地,所述装置还包括以下任意一个模块:
第三确定模块,用于根据所述执行信息确定线程处理每一请求的时延;若所有请求的时延之和在所述总执行时间中的占比大于第二预设阈值,确定当前所述线程池中的线程处于高负载状态并确定每一请求在总线程负载资源中所占的线程负载率;
第四确定模块,用于根据线程处理每一请求的时延与所述总执行时间确定每一请求在总线程负载资源中所占的线程负载率;若所有请求的线程负载率之和大于第三预设阈值,确定当前所述线程池中的线程处于高负载状态。
可选地,装置还包括告警模块,用于在当前所述线程池中的线程处于高负载状态时,发出告警信息和/或显示所述每一请求对应的线程负载率。
第三方面,本申请提供了一种电子设备,该电子设备包括存储器和处理器;存储器中存储有计算机程序;处理器,用于在运行计算机程序时,执行第一方面及其任一项所提供的方法。
第四方面,本申请提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,计算机程序在被处理器运行时,执行第一方面及其任一项所提供的方法。
与现有技术相比,本申请提供的技术方案的有益效果如下:
本申请实施例提供的线程负载的检测方法、装置、电子设备及存储介质中,通过线程池的预设接口可以周期性获取线程池中各个线程与处理请求相关的执行信息,即可以根据工作人员对应用服务监控的需求自动化地获取到对应线程池中线程的信息;本申请根据执行信息可以分析确定出线程池中所有线程对应的总执行时间与处理目标请求的时延,进而根据总执行时间与处理目标请求的时延可以确定出线程处理的目标请求在总线程负载资源中所占的线程负载率;该方案的实施可以准确分析出线程处理每一请求所需的线程资源,提高了应用服务监控的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请一种实施例提供的线程负载的检测方法的流程示意图;
图2为本申请一种实施例提供的线程负载的检测方法中根据应用框架设定线程池接口的方法流程图;
图3为本申请一种实施例提供的线程负载的检测方法中告警时的界面示意图;
图4为本申请一种实施例提供的线程负载的检测方法的流程示意图;
图5为本申请的一种实施例提供的线程负载的检测装置的结构示意图;
图6为本申请提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为了更好的理解及说明本申请实施例所提供的方案,下面首先对本申请所涉及的相关技术进行说明。
本申请技术领域属于应用监控,在应用服务的过程中,由于业务繁忙可能导致业务处理不及时,应用服务质量下降的问题,因此,需要工作人员定期或在特定事件发生的时间上对应用上各线程处理业务请求的情况进行查看分析,以提高应用服务的质量。
现有技术一般是采用jstack等命令向服务器获取与线程执行的相关信息,根据获取的信息确定当前线程运行的状态。然而,现有技术中,每次采用jstack等命令向服务器获取数据均需要工作人员手动操作,该业务操作繁琐,处理效率低;且所获取的信息仅可知悉当前线程运行的状态,无法确定线程处理每一请求所需的线程资源。
为了解决上述问题中的至少一个,本申请提供了一种线程负载的检测方法,该方法可以自动化分析当前处理请求所需的线程资源,有利于提高线程负载状态检测的效率和准确性,进而提高应用服务监控的效率。
为使本申请的目的、技术方案和优点更加清楚,下面将结合具体地实施例和附图对本申请的各可选的实施方式及本申请实施例的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。图1中示出了本申请实施例提供的一种线程负载的检测方法,该方法具体可以由本申请实施例提供的电子设备执行,具体地电子设备可以是终端,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。具体地,该方法包括以下步骤S101-103:
步骤S101:通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息。
具体地,用于获取线程信息的预设接口可以基于不同的应用框架中不同的接口参数进行设置,如本申请实施例可以基于TAF(Total Application Framework)框架定义适配的用于获取线程信息的接口。可选地,应用框架还可以是多线程框架(executors线程池框架)等其他框架。其中,TAF框架的工作线程请求处理能力是监控应用服务质量的重要数据指标,如线程池的总容量、当前线程的使用量、线程的闲置数量等能直接反应出应用服务是否处于繁忙状态,线程资源是否足够,并发量有多少等信息。
可选地,步骤S101通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息之前,还包括步骤S100:
步骤S100:根据应用框架的接口参数设定线程池的预设接口。
具体地,不同的应用框架对应不同的接口参数,如对应于TAF框架时,如图2所示,通过TAF线程池接口适配器(TafThreadPoolContext)定义预设接口。
下述结合图2所示内容,以应用框架为TAF框架为例对设定接口的具体过程进行说明。
如图2中的步骤一所示,在应用启动(运行)时,TAF框架进行初始化,则基于TAF框架的线程池定义上下文接口,获取数据的一端与TAF框架的线程池的接口适配(context),以实现自动采集线程池的数据。进一步地,在设定适配的接口后,可以叠加设置定时器,通过定时器设定周期,以实现定时(如每隔10秒)调用context接口适配器获取线程池的数据,所获取的数据可以作为后续步骤的基础数据,也可以输出到日志或上报服务器存储。
可选地,步骤S101除了可以设置定时器周期性地获取线程的数据外,还可以设置事件性触发数据的获取,如在某一时间发生时,则触发执行步骤S101以获取线程池中各个线程与处理请求相关的执行信息。
在一实施例中,在应用执行的过程中,线程池通过至少一个线程处理应用服务过程中的请求。可选地,线程池中各个线程与处理请求相关的执行信息可以包括当前执行任务的线程数量、当前已创建的线程数量、线程池预设最大的线程数量、线程池预设最小的线程数量、线程处理各个请求的起始时间与结束时间中的至少一项。其中,当前执行任务的线程数量是指线程池中正在应用处理请求的线程数量(如activeCount=90);当前已创建的线程数量是指线程池中已经存在的线程数量(如currentThreads=100),可以包括当前执行任务的线程数量和当前未执行任务的线程数量;根据应用框架的配置,线程池具有预设的最大线程数量,即线程池最大可创建多少共存的线程(如maxThreads=100);根据应用框架的配置,线程池还可以设置最小线程数量,即配置可保留的最小线程数(如minThreads=10);其中,线程处理各个请求的起始时间与结束时间是指当请求转至线程池进行处理时,一个请求可以由一个线程处理,也可以由多个线程处理,而每一个线程处理一个请求时具有对应的处理起始时间和结束时间。
步骤S102:根据执行信息确定线程池中所有线程对应的总执行时间与处理目标请求的时延。
具体地,线程池中每一个线程都具有对应的可执行时间,即每个线程处理请求的线程资源容量(又称为线程负载资源)。步骤S102中所有线程对应的总执行时间可以理解为每一个线程对应可执行时间之和,即线程池的总资源容量(又称总线程负载资源)。
其中,目标请求可以是线程池所处理的任意一个或多个请求,也可以是特定的一个或多个请求,本申请在此不作限定。
具体地,所有线程处理目标请求的时延可以理解为线程池中每一个线程处理目标请求的时延之和,即所有线程处理每个请求所需的线程资源(又称为线程负载)。其中,时延可以理解为线程处理请求所需的时间。
步骤S103:根据总执行时间与所有线程处理目标请求的时延确定目标请求在总线程负载资源中所占的线程负载率。
具体地,在本申请实施例中,可以通过总执行时间表征总线程负载资源,通过所有线程处理每个请求的时延表征线程池中处理该请求所需的线程资源;因此,通过所有线程处理目标请求的时延在总执行时间中的占比即可确定目标请求在总线程负载资源中所占的线程负载率,具体地,可以表现如下述公式(1):
下面针对上述公式(1)进行举例说明:
假设当前线程1处理目标请求A的时延是20s,线程2处理目标请求A的时延是30s,线程3未用于处理目标请求A,当前所有线程对应的总执行时间为180s(总执行时间的计算方式将在后续实施例中进行说明),所有线程处理目标请求A的时延=20s+30s=50s;则目标请求A在总线程负载资源中所占的线程负载率=50s/180s=27.77%。
结合上述对本申请实施的阐述,本申请实施例通过预设接口叠加定时器的配置,可以定时自动化获取线程池中各个线程与处理请求相关的执行信息(相应的接口和定时器的配置还可以应用在其他应用环境中,以获取与线程相关的其他信息);进一步地,通过对执行信息的分析处理可以确定出当前线程池的总执行时间(可以用于表征总线程负载资源)以及所有线程处理目标请求的时延(可以用于表征线程池处理目标请求所需的线程负载资源),进而根据时延在总执行时间中的占比可以确定出目标请求在总线程负载资源中所占的线程负载率。因此,本申请提供的线程负载的检测方法的实施可以准确有效地计算出线程池处理每个请求所需的线程负载资源,进而为后续工作人员检测线程执行状态和应用服务监控(或应用服务质量评估)提供了基础数据,可以有效提高进行应用服务监控的效率。
下面在上述实施例的基础上,提供一些可行的实施例。
在一实施例中,步骤S102根据执行信息确定线程池中所有线程对应的总执行时间与处理目标请求的时延,包括下述步骤S201-S202:
步骤S201:根据执行信息中包括的当前执行任务的线程数量与线程池预设最大的线程数量确定当前的并发能力。
步骤S202:若当前的并发能力大于第一预设阈值,根据执行信息确定线程池中所有线程执行的总执行时间与处理目标请求的时延。
考虑到进行线程信息的分析也需要占据额外的资源,因此,本申请实施例在计算与目标请求相关的信息之前,设置一个前置步骤,仅在系统并发超过门限时,执行根据执行信息确定线程池中所有线程对应的总执行时间与处理目标请求的时延的步骤,以有效减少资源的浪费。
具体地,系统的并发情况可以基于线程池中当前执行任务的线程数量(也可以理解为当前线程并发量activeCount)与线程池中预设最大的线程数量(也可以理解为线程池的总容量maxThreads)进行确定。举例说明,假设第一预设阈值为70%,当前执行任务的线程数量为90,线程池预设最大的线程数量为100,则应用当前的并发能力=90/100=90%(当前的并发能力也可以理解为以线程池为整体看待时对应的当前的线程负载率),即当前的并发能力大于第一预设阈值,在此情况下,可以理解的是,应用在接收后续的请求时可能没有足够的线程以对该后续的请求进行及时的处理,因此,需要对当前的线程负载情况进行分析,查看是否存在线程池在处理某一请求时耗费过多的负载,导致当前的线程负载率过高(一般设定不大于70%为线程负载率正常,当高于70%时,表征当前线程池中的线程处于高负载状态);在此基础上,执行后续根据执行信息确定线程池中所有线程执行的总执行时间与处理目标请求的时延的步骤。
在一实施例中,步骤S102根据执行信息确定线程池中所有线程对应的总执行时间与处理目标请求的时延,包括下述步骤S301-S302:
步骤S301:根据执行信息中包括的线程处理目标请求的起始时间与结束时间,确定各个线程处理目标请求的时延。
具体地,线程处理目标请求的起始时间可以是线程池获取请求的时间,也可以是线程池针对目标请求获取到某一线程对该目标请求进行处理的起始时间。线程处理目标请求的结束时间可以是某一线程处理该目标请求结束所对应的时间。举例说明:当前线程池中包括线程1、2和3,在12:03:04(时间的表示方式:时:分:秒)接收到目标请求B时,线程池在12:03:05获取线程1对该目标请求B进行处理,线程1在12:03:21处理目标请求B结束:则线程1处理目标请求的时延=12:03:21-12:03:05=16s。
可选地,由于针对同一目标请求,线程池可能获取多个线程进行处理,所以本申请实施例中需要分别确定每个线程处理目标请求的时延,而后对该每个线程处理目标请求的时延进行聚合运算(求和),得到线程池中所有线程处理目标请求的时延,该实施例的处理有利于提高时延计算的准确度。
步骤S302:根据当前统计周期的时间与执行信息中包括的当前已创建的线程数量,确定线程池中所有线程对应的总执行时间。
具体地,总执行时间可以采用下述公式(2)进行计算:
总执行时间=当前已创建的线程数量*当前统计周期的时间
......(2)
基于上述公式(2),举例说明:假设线程池中已创建有3个线程,当前的统计周期为60s(每隔60s统计一次),则线程池中所有线程对应的总执行时间为3*60s=180s。
在一实施例中,步骤S103:根据总执行时间与处理目标请求的时延确定目标请求在总线程负载资源中所占的线程负载率,包括步骤S1031:
步骤S1031:根据所有线程处理目标请求的时延在总执行时间中的占比,确定目标请求在总线程负载资源中所占的线程负载率。
具体地,通过上述步骤S301计算得到各个线程处理目标请求的时延,在此基础上,所有线程处理目标请求的时延为每个线程处理目标请求的时延之和;通过上述步骤S302计算得到线程池中所有线程对应的总执行时间。结合上述公式(1)即可计算得到目标请求在总线程负载资源中所占的线程负载率。
在一实施例中,线程负载的检测方法还包括以下步骤S104-S105中的任意一项:
步骤S104:根据执行信息确定线程处理每一请求的时延;若所有请求的时延之和在总执行时间中的占比大于第二预设阈值,确定当前线程池中的线程处于高负载状态并确定每一请求在总线程负载资源中所占的线程负载率。
步骤S105:根据线程处理每一请求的时延与总执行时间确定每一请求在总线程负载资源中所占的线程负载率;若所有请求的线程负载率之和大于第三预设阈值,确定当前线程池中的线程处于高负载状态。
具体地,本实施例可以在上述方法步骤S101-S103的基础上实施,也可以在上述方法步骤S101-S103叠加步骤S201-S202的基础上实施。
下面针对步骤S104的情况举例说明:
假设当前统计周期的时间为60s,第二预设阈值为75%,线程池中当前已创建有3个线程(线程1、线程2和线程3),正在处理的请求包括2个(请求A和请求B),各个线程处理各个请求的具体情况如下表1:
表1
线程1 线程2 线程3
请求A 30s时延 30s时延 40s时延
请求B 20s时延 30s时延 -
结合表1可见,所有线程处理请求A的时延为100s(30s时延+30s时延+40s时延);所有线程处理请求B的时延之和为50s(20s时延+30s时延);请求A和请求B的时延之和为150s(100s+50s);总执行时间为180s(3*60s)。因此,所有请求的时延之和在总执行时间中的占比为83.33%(150s/180s),由此可以确定当前线程池所处理的每一请求的时延之和在总执行时间中的占比大于第二预设阈值,则确定当前线程池中线程负载率高(线程池中的线程处于高负载状态),进而根据线程处理每一请求的时延确定每一请求在总线程负载资源中所占的线程负载率,如请求A对应的线程负载率为55.55%(100s/180s),请求B对应的线程负载率为27.77%(50s/180s)。
下面针对步骤S105的情况进行说明:
假设当前统计周期的时间为60s,第三预设阈值为75%,线程池中当前已创建有3个线程(线程1、线程2和线程3),正在处理的请求包括2个(请求A和请求B),各个线程处理各个请求的具体情况如上表1。
则在步骤S105中首先计算得到每一请求在总线程负载资源中所占的线程负载率,结合表1可见,所有线程处理请求A的时延为100s(30s时延+30s时延+40s时延);所有线程处理请求B的时延之和为50s(20s时延+30s时延);请求A和请求B的时延之和为150s(100s+50s);总执行时间为180s(3*60s)。因此,请求A对应的线程负载率为55.55%(100s/180s),请求B对应的线程负载率为27.77%(50s/180s);请求A和请求B对应的线程负载率之和为83.33%,因此可以确定所有请求的线程负载率之和大于第三预设阈值,进而确定当前线程池中线程负载率高(线程池中的线程处于高负载状态)。
本实施例可以确定出线程池中线程的负载状态,其中,第二预设阈值可以与第三预设阈值相同。可选地,第二预设阈值、第三预设阈值还可以和上述的第一预设阈值相同。具体地,以步骤S104为例,当所有请求的时延之和在总执行时间中的占比大于第二预设阈值时,即线程池当前的线程负载率高(异常状态,线程处于高负载状态),难以有效地继续处理后续接收的请求;当所有请求的时延之和在总执行时间中的占比不大于第二预设阈值时,即线程池当前的线程处于正常负载状态,可以继续有效地处理后续接收的请求。步骤S202和步骤S105适应的场景可以基于步骤S104的说明类推,在此不再详述。
可选地,本申请实施例将线程池中的线程负载状态区分为两类,一类是高负载状态,另一类是正常负载状态。其中,高负载状态表征线程池中的线程已无足够的资源(能力)继续处理用户请求,可能导致应用服务反馈延迟等应用服务质量下降的问题;正常负载状态表征线程池中的线程具有足够的资源(能力)继续处理用户情况,当前应用服务质量良好。具体地,确定线程处于高负载状态的情况可以是步骤201-202中当前的并发能力大于第一预设阈值、步骤S104中所有请求的时延之和在总执行时间中的占比大于第二预设阈值、步骤S105中所有请求的线程负载率之和大于第三预设阈值中的一种;其余情况可以理解为线程处于正常负载状态。
在一实施例中,在上述步骤S104和/或步骤S105的基础上,还包括步骤S106:
步骤S106:在当前线程池中的线程处于高负载状态时,发送告警信息和/或显示每一请求对应的线程负载率。
可选地,告警信息可以是在用户界面通过弹窗、悬浮页面或者小气泡的形式提示工作人员注意当前应用的服务状态,也还可以是发出特定的告警声。
具体地,显示每一请求对应的线程负载率的方式可以如图3所示,在用户界面通过弹窗或者悬浮页面的形式显示与每一请求对应的线程负载率。其中,在显示每一请求对应的线程负载率的同时,可以显示每一请求对应的请求数量,以及该请求处理的总时延(或平均时延/耗时),以便工作人员可以清晰了解应用中每一请求的处理情况。
为进一步说明本申请实施例提供的线程负载的检测方法在实际场景中的应用,结合图4与表2对给出一种可行的应用例。
如图4所示,本申请实施例中假设当前监控的是直播平台,需要处理的请求包括请求1(发送弹幕/礼物请求sendGift)和请求2(接收弹幕/礼物请求getGiftList),线程池中当前已创建3个线程(线程1、线程2和线程3),配置有定时器(可以设置获取数据的周期为60s)和线程负载率分析器(该分析器执行上述实施例所示的线程负载的检测方法中的各个步骤),本申请实施例在该应用场景下,执行的步骤包括如下:
步骤1:在线程池中获取线程分别处理请求1和请求2,并同步记录处理请求的开始时间。
步骤2:在线程处理请求结束时记录处理请求的结束时间,并计算时延数据;具体地,处理请求1的时延为100ms,处理请求2的时延为200ms。处理请求的时延为结束时间与开始时间的差值。
步骤3:将基于预设接口采集的数据发送至线程负载率分析器进行聚合运算;具体地,如步骤2所示,可以直接采集到处理请求的时延,也可以如上述实施例所示采集到处理请求的开始时间和结束时间发送至线程负载率分析器进行时延计算。
其中,线程负载率分析器在获取到执行信息后,执行下述步骤4-7,具体包括如下:
步骤4:在统计周期内计算线程池所有线程所能执行的总时间(总执行时间),即:180s(容量总时间)=60s(时间周期)*3(当前已创建的线程数);上述容量总时间可以用于表征线程池的总线程负载资源。
步骤5:在统计周期内计算线程池处理各个请求实际的时延及时延之和(时延总时间);具体地,针对请求1,(20s时延+30s时延)=50s;针对请求2,(30s时延+30s时延+40s时延)=100s;在统计周期内,处理所有请求的时延之和为150s。其中,步骤5中计算的时延是针对当前的统计周期而言,步骤2中计算的时延是针对线程池处理线程的整体过程而言,因此,两者存在区别。
步骤6:计算在统计周期内线程池处理所有请求所需的线程资源容量,即83.33%(线程使用率)=150s(实际总时间)/180s(容量总时间)。进一步地,基于步骤6确定的线程使用率(门限可以为70%)可以确定当前线程池的线程负载率高(处于异常状态,线程处于高负载状态)。
步骤7:确定出各请求负载率的占比,具体的表现形式如下表2:
表2
请求 线程负载率 请求次数 总时延(秒)
/sendGift 55.55% 3 100s
/getGiftList 27.77% 2 50s
上述表2可以参考图3所示的方式进行显示,即线程负载率分析器执行步骤7后可以将相关数据传送到显示器进行显示。
由于本申请实施例的方法可以是在后台持续运行的,在线程负载正常的情况下,用户一般无法感知本申请提供方法的具体操作过程,而仅在线程负载异常的情况下,发出告警信息后,用户(工作人员)可以通过上述表2可以确定出是请求2导致当前线程负载率高,以尽快对直播平台的服务情况作出调整,保证直播平台的运行顺畅。
对应于本申请所提供的线程负载的检测方法,本申请实施例还提供了一种线程负载的检测装置500,其结构示意图如图5中所示,该线程负载的检测装置500包括:获取模块501、第一确定模块502和第二确定模块503。
其中,获取模块,用于通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息;第一确定模块,用于根据执行信息确定线程池中所有线程对应的总执行时间与处理目标请求的时延;第二确定模块,用于根据总执行时间与所有线程处理目标请求的时延确定目标请求在总线程负载资源中所占的线程负载率。
可选地,装置500还包括用于根据应用框架的接口参数设定线程池的预设接口的模块。
可选地,获取模块501还用于根据预设接口周期性获取线程池中当前执行任务的线程数量、当前已创建的线程数量、线程池预设最大的线程数量、线程池预设最小的线程数量、线程处理各个请求的起始时间与结束时间中的至少一项信息。
可选地,第一确定模块502在用于执行根据执行信息确定线程池中所有线程对应的总执行时间与处理目标请求的时延的步骤时,包括执行下述步骤:
根据执行信息中包括的当前执行任务的线程数量与线程池预设最大的线程数量确定当前的并发能力;
若当前的并发能力大于第一预设阈值,根据执行信息确定线程池中所有线程执行的总执行时间与处理目标请求的时延。
可选地,第一确定模块502在用于执行根据执行信息确定线程池中所有线程对应的总执行时间与处理目标请求的时延的步骤时,包括执行下述步骤:
根据执行信息中包括的线程处理目标请求的起始时间与结束时间,确定各个线程处理目标请求的时延;
根据当前统计周期的时间与执行信息中包括的当前已创建的线程数量,确定线程池中所有线程对应的总执行时间。
可选地,第二确定模块503在用于执行根据总执行时间与处理目标请求的时延确定目标请求在总线程负载资源中所占的线程负载率的步骤时,包括执行下述步骤:
根据所有线程处理目标请求的时延在总执行时间中的占比,确定目标请求在总线程负载资源中所占的线程负载率。
可选地,装置500还包括以下任意一个模块:
第三确定模块,用于根据执行信息确定线程处理每一请求的时延;若所有请求的时延之和在总执行时间中的占比大于第二预设阈值,确定当前线程池中的线程处于高负载状态并确定每一请求在总线程负载资源中所占的线程负载率;
第四确定模块,用于根据线程处理每一请求的时延与总执行时间确定每一请求在总线程负载资源中所占的线程负载率;若所有请求的线程负载率之和大于第三预设阈值,确定当前线程池中的线程处于高负载状态。
可选地,装置500还包括告警模块,用于在当前线程池中的线程处于高负载状态时,发出告警信息和/或显示每一请求对应的线程负载率。
本申请实施例的装置可执行本申请的实施例所提供的方法,其实现原理相类似,本申请各实施例中的装置中的各模块所执行的动作是与本申请各实施例中的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应的方法中的描述,此处不再赘述。
本申请还提供了一种电子设备,该电子设备包括存储器和处理器;其中,存储器中存储有计算机程序;处理器用于在运行计算机程序时,执行本申请任一可选实施例中所提供的方法。
本申请还提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,计算机程序在被处理器运行时,执行本申请任一可选实施例中所提供的方法。
作为一可选方案,图6示出了本申请实施例适用的一种电子设备的结构示意图,如图6所示,该电子设备600可以包括处理器601和存储器603。其中,处理器601和存储器603相连,如通过总线602相连。可选地,电子设备600还可以包括收发器604。需要说明的是,实际应用中收发器604不限于一个,该电子设备600的结构并不构成对本申请实施例的限定。
处理器601可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器601也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线602可包括一通路,在上述组件之间传送信息。总线602可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线602可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器603可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器603用于存储执行本申请方案的应用程序代码,并由处理器601来控制执行。处理器601用于执行存储器603中存储的应用程序代码(计算机程序),以实现前述任一方法实施例所示的内容。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (8)

1.一种线程负载的检测方法,其特征在于,包括:
通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息;
根据所述执行信息中包括的当前执行任务的线程数量与线程池预设最大的线程数量确定当前的并发能力;所述当前的并发能力为线程池对应的当前的线程负载率;若所述当前的并发能力大于第一预设阈值,则根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延;
根据所述总执行时间与所有线程处理目标请求的时延确定所述目标请求在总线程负载资源中所占的线程负载率;
所述方法还包括以下任意一项:
根据所述执行信息确定线程处理每一请求的时延;若所有请求的时延之和在所述总执行时间中的占比大于第二预设阈值,确定当前所述线程池中的线程处于高负载状态并确定每一请求在总线程负载资源中所占的线程负载率;
根据线程处理每一请求的时延与所述总执行时间确定每一请求在总线程负载资源中所占的线程负载率;若所有请求的线程负载率之和大于第三预设阈值,确定当前所述线程池中的线程处于高负载状态;
所述方法还包括:
在当前所述线程池中的线程处于高负载状态时,发出告警信息和/或显示所述每一请求对应的线程负载率。
2.根据权利要求1所述的方法,其特征在于,所述通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息之前,还包括:
根据应用框架的接口参数设定所述线程池的预设接口。
3.根据权利要求1所述的方法,其特征在于,所述通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息的步骤,包括:
根据所述预设接口周期性获取线程池中当前执行任务的线程数量、当前已创建的线程数量、线程池预设最大的线程数量、线程池预设最小的线程数量、线程处理各个请求的起始时间与结束时间中的至少一项信息。
4.根据权利要求1所述的方法,其特征在于,所述根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延,包括:
根据所述执行信息中包括的线程处理目标请求的起始时间与结束时间,确定各个线程处理所述目标请求的时延;
根据当前统计周期的时间与所述执行信息中包括的当前已创建的线程数量,确定所述线程池中所有线程对应的总执行时间。
5.根据权利要求4所述的方法,其特征在于,所述根据所述总执行时间与处理目标请求的时延确定所述目标请求在总线程负载资源中所占的线程负载率,包括:
根据所有线程处理目标请求的时延在所述总执行时间中的占比,确定目标请求在总线程负载资源中所占的线程负载率。
6.一种线程负载的检测装置,其特征在于,包括:
获取模块,用于通过线程池的预设接口周期性获取线程池中各个线程与处理请求相关的执行信息;
第一确定模块,用于根据所述执行信息中包括的当前执行任务的线程数量与线程池预设最大的线程数量确定当前的并发能力;所述当前的并发能力为线程池对应的当前的线程负载率;若所述当前的并发能力大于第一预设阈值,则根据所述执行信息确定所述线程池中所有线程对应的总执行时间与处理目标请求的时延;
第二确定模块,用于根据所述总执行时间与所有线程处理目标请求的时延确定所述目标请求在总线程负载资源中所占的线程负载率;
所述装置还包括以下任意一个模块:
第三确定模块,用于根据所述执行信息确定线程处理每一请求的时延;若所有请求的时延之和在所述总执行时间中的占比大于第二预设阈值,确定当前所述线程池中的线程处于高负载状态并确定每一请求在总线程负载资源中所占的线程负载率;
第四确定模块,用于根据线程处理每一请求的时延与所述总执行时间确定每一请求在总线程负载资源中所占的线程负载率;若所有请求的线程负载率之和大于第三预设阈值,确定当前所述线程池中的线程处于高负载状态;
所述装置还包括告警模块,用于在当前所述线程池中的线程处于高负载状态时,发出告警信息和/或显示所述每一请求对应的线程负载率。
7.一种电子设备,其特征在于,包括存储器和处理器;
所述存储器中存储有计算机程序;
所述处理器,用于在运行所述计算机程序时,执行权利要求1至5任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序在被处理器运行时,执行权利要求1至5任一项所述的方法。
CN202110070925.3A 2021-01-19 2021-01-19 线程负载的检测方法、装置、电子设备及存储介质 Active CN112749013B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110070925.3A CN112749013B (zh) 2021-01-19 2021-01-19 线程负载的检测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110070925.3A CN112749013B (zh) 2021-01-19 2021-01-19 线程负载的检测方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112749013A CN112749013A (zh) 2021-05-04
CN112749013B true CN112749013B (zh) 2024-04-19

Family

ID=75652571

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110070925.3A Active CN112749013B (zh) 2021-01-19 2021-01-19 线程负载的检测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112749013B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778690B (zh) * 2021-09-27 2024-03-22 杭州安恒信息技术股份有限公司 一种任务分配方法、装置、设备及存储介质
CN116860436A (zh) * 2023-06-15 2023-10-10 重庆智铸达讯通信有限公司 线程数据处理方法、装置、设备及存储介质
CN116795877B (zh) * 2023-08-23 2023-12-19 本原数据(北京)信息技术有限公司 数据库的预读方法和装置、计算机设备、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017028696A1 (zh) * 2015-08-17 2017-02-23 阿里巴巴集团控股有限公司 分布式存储系统的负载监控方法及设备
CN109271290A (zh) * 2018-07-27 2019-01-25 广州华多网络科技有限公司 一种监测线程使用率的方法、装置及存储装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017028696A1 (zh) * 2015-08-17 2017-02-23 阿里巴巴集团控股有限公司 分布式存储系统的负载监控方法及设备
CN109271290A (zh) * 2018-07-27 2019-01-25 广州华多网络科技有限公司 一种监测线程使用率的方法、装置及存储装置

Also Published As

Publication number Publication date
CN112749013A (zh) 2021-05-04

Similar Documents

Publication Publication Date Title
CN112749013B (zh) 线程负载的检测方法、装置、电子设备及存储介质
CN111563014B (zh) 接口服务性能测试方法、装置、设备和存储介质
WO2017012392A1 (zh) 一种磁盘检测的方法和装置
EP2894564A1 (en) Job scheduling based on historical job data
US20160034328A1 (en) Systems and methods for spatially displaced correlation for detecting value ranges of transient correlation in machine data of enterprise systems
US10255114B2 (en) Abnormality detection apparatus, control method, and program
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
CN109271290B (zh) 一种监测线程使用率的方法、装置及存储装置
CN108415765B (zh) 任务调度方法、装置及智能终端
WO2021068113A1 (zh) 时长统计方法、装置、电子设备和计算机可读介质
CN112052078A (zh) 一种耗时的确定方法和装置
CN110033242B (zh) 工作时间确定方法、装置、设备和介质
CN109656789A (zh) Io性能检测方法及系统
CN113032207A (zh) 应用进程的监控方法、装置、电子设备及存储介质
CN107748711B (zh) 自动优化Storm并行度的方法、终端设备及存储介质
KR102456150B1 (ko) 실제 환경에서 대용량 시스템에 대한 포괄적 성능평가를 수행하는 방법 및 이를 지원하는 장치
CN115525392A (zh) 容器监控方法、装置、电子设备及存储介质
CN114428712A (zh) 耗时统计方法及装置
CN109885442B (zh) 性能分析方法、装置、设备及存储介质
US8881156B2 (en) Apportioning summarized metrics based on unsummarized metrics in a computing system
CN113760989A (zh) 一种无界流数据处理方法、装置、设备及存储介质
CN112948214B (zh) 一种软件过载告警方法及装置
CN112559297B (zh) 功耗计算方法、装置、存储介质、终端及服务器
CN114048116B (zh) 一种业务系统的体验度评估方法及装置
CN118210681B (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
GR01 Patent grant
GR01 Patent grant