CN108763046B - 线程运行监控方法、装置、计算机设备和存储介质 - Google Patents
线程运行监控方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN108763046B CN108763046B CN201810554502.7A CN201810554502A CN108763046B CN 108763046 B CN108763046 B CN 108763046B CN 201810554502 A CN201810554502 A CN 201810554502A CN 108763046 B CN108763046 B CN 108763046B
- Authority
- CN
- China
- Prior art keywords
- thread
- response
- progress
- monitoring
- mark
- 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
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 257
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000004044 response Effects 0.000 claims abstract description 355
- 238000012806 monitoring device Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 16
- 230000001960 triggered effect Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 6
- 238000012550 audit Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
Abstract
本申请涉及一种线程运行监控方法、装置、计算机设备和存储介质。所述方法包括:接收客户端请求;根据所述客户端请求确定用于响应所述客户端请求的响应线程;通过所述响应线程,获取所述响应线程运行到指定进度处时的时间戳和进度标识,并将所述时间戳和所述进度标识发送至监控线程;通过所述监控线程,根据所述时间戳和所述进度标识计算所述响应线程的运行进度耗时。采用本方法能够提高线程运行的监控效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种线程运行监控方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,系统性能不断优化升级。系统运行过程中会生成相应的日志文件,通过分析日志文件可以实现系统的性能监控,可根据性能监控情况进行系统优化。目前的架构体系可以实现线程级别的性能监控,但是不能实现线程运行过程中进度级别的性能监控,即目前的架构体系不能实现细粒度的线程运行监控。目前的线程运行监控方法,是在线程运行完成时,通过人工查询线程运行的起始时间和终止时间,进而根据所查询到的起始时间和终止时间对应计算该线程的运行耗时。
然而,上述线程运行监控方法中线程运行的起始时间和终止时间不便于查看和分析,降低了分析效率,且该种监控方式不能实现对线程运行过程的监控,从而降低了线程运行的监控效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高线程运行监控效率的线程运行监控方法、装置、计算机设备和存储介质。
一种线程运行监控方法,所述方法包括:
接收客户端请求;
根据所述客户端请求确定用于响应所述客户端请求的响应线程;
通过所述响应线程,获取所述响应线程运行到指定进度处时的时间戳和进度标识,并将所述时间戳和所述进度标识发送至监控线程;
通过所述监控线程,根据所述时间戳和所述进度标识计算所述响应线程的运行进度耗时。
一种线程运行监控装置,所述装置包括:
接收模块,用于接收客户端请求;
确定模块,用于根据所述客户端请求确定用于响应所述客户端请求的响应线程;
响应模块,用于通过所述响应线程,获取所述响应线程运行到指定进度处时的时间戳和进度标识,并将所述时间戳和所述进度标识发送至监控线程;
监控模块,用于通过所述监控线程,根据所述时间戳和所述进度标识计算所述响应线程的运行进度耗时。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收客户端请求;
根据所述客户端请求确定用于响应所述客户端请求的响应线程;
通过所述响应线程,获取所述响应线程运行到指定进度处时的时间戳和进度标识,并将所述时间戳和所述进度标识发送至监控线程;
通过所述监控线程,根据所述时间戳和所述进度标识计算所述响应线程的运行进度耗时。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收客户端请求;
根据所述客户端请求确定用于响应所述客户端请求的响应线程;
通过所述响应线程,获取所述响应线程运行到指定进度处时的时间戳和进度标识,并将所述时间戳和所述进度标识发送至监控线程;
通过所述监控线程,根据所述时间戳和所述进度标识计算所述响应线程的运行进度耗时。
上述线程运行监控方法、装置、计算机设备和存储介质,接收到客户端请求时,根据所接收到的客户端请求分配用于响应该客户端请求的响应线程,在响应线程运行过程中,通过该响应线程获取其运行到指定进度处时的时间戳和进度标识并发送至监控线程,通过监控线程根据接收到的时间戳和进度标识计算响应线程的运行进度耗时,以实现线程运行监控。该种方式实现的线程运行监控,可实现进度级别的运行监控,通过预定义指定进度即可实现更细粒度的线程运行监控,提高了线程运行的监控效率。通过监控线程根据响应线程发送的时间戳和进度标识计算响应的运行进度耗时,方便了线程运行进度耗时的查看和分析,进一步提高了线程运行的监控效率。
附图说明
图1为一个实施例中线程运行监控方法的应用场景图;
图2为一个实施例中线程运行监控方法的流程示意图;
图3为另一个实施例中线程运行监控方法的流程示意图;
图4为一个实施例中线程运行监控装置的结构框图;
图5为另一个实施例中线程运行监控装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的线程运行监控方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。服务器104接收终端102生成并发送的客户端请求,并确定用于响应所接收到的客户端请求的响应线程,通过响应线程获取该响应线程运行到指定进度处时的时间戳和进度标识并发送至监控线程,并通过监控线程根据接收到的时间戳和进度标识计算相应响应线程的运行进度耗时,从而实现一种线程运行监控方法。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种线程运行监控方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
S202,接收客户端请求。
其中,客户端请求是客户端发送的用于执行指定请求操作的请求。客户端是运行于终端并为用户提供服务的程序。客户端可以是网页浏览器,如万维网的网页浏览器,也可以是安装于终端的应用软件,如用于管理和查询保单信息的应用软件。客户端请求可以携带有客户端标识、用户标识和数据参数等中的至少一种,数据参数是服务器响应该客户端请求时涉及的目标参数,如账号。
具体地,服务器接收终端通过有线网络或无线网络发送的客户端请求。终端检测客户端请求对应的触发事件,当检测到触发事件时生成对应的客户端请求,并将生成的客户端请求通过相应客户端发送至服务器。终端可以通过指定网页将客户端请求发送至服务器,也可以通过指定应用软件将客户端请求发送至服务器。触发事件可以是用户的指定触发操作,比如用户对预设触控按钮的触发操作、指定界面的滑动或长按操作,或者其他预定义的触发操作。
举例说明,客户端请求可以是核保请求或保单查询请求。核保请求可携带有客户端标识和用户标识,核保请求用于指示服务器获取对应的核保信息并执行相应的核保操作。保单查询请求可携带有保单号,保单查询请求用于指示服务器查询指定的保单信息并反馈。
S204,根据客户端请求确定用于响应客户端请求的响应线程。
其中,线程是能独立运行和独立调度的基本单位。线程是计算机程序中一个单一的顺序控制流程。线程是一个动态执行的过程,存在从创建到死亡的过程,即线程具有对应的生命周期。响应线程是用于响应客户端请求的线程。响应线程可以是已有的空闲线程,也可以是实时创建的线程。
具体地,在接收到客户端请求后,服务器为所接收到的客户端请求分配用于响应该客户端请求的响应线程。服务器分配给客户端请求的响应线程可以是从线程池中调取的已有空闲线程,也可以是根据客户端请求实时创建的线程。
在一个实施例中,当接收到客户端请求时,服务器对所接收到的客户端请求进行审核,当审核通过时确定用于响应该客户端请求的响应线程,当审核未通过时向终端反馈请求失败的指示信息。具体地,服务器可以对客户端请求的来源、类型、形式和响应时机等进行审核。
S206,通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识发送至监控线程。
其中,进度是指在线程的生命周期中所处的运行阶段。换而言之,进度是指在线程的生命周期中的运行进展情况,比如线程启动、线程终止和线程运行至指定运行阶段。线程启动是指线程开始运行并响应客户端请求。线程终止是指线程完成客户端请求响应时结束运行。指定运行阶段可以是指线程运行过程中调用指定函数的起始阶段或结束阶段,也可以是指线程运行过程中调用指定函数进行相应处理,并在处理完成时结束调用的整个调用阶段。指定进度是预先设定的运行阶段。指定进度可以是线程启动、线程终止和线程运行至指定运行阶段中的至少一种。
时间戳是指能表征指定时间点的标识。时间戳可以是在线程的生命周期中线程运行到指定进度处时对应的时间点。时间戳可以是线程运行到指定进度处时当前的系统时间,也可以是在线程的生命周期中以生命周期的起始点为时间起点对应计算的时间点。如时间戳可以是2018年4月12日17点17分25秒,也可以是3分25秒。
进度标识用于唯一标识线程的运行进度。进度标识与线程运行的指定进度对应,用于标识该指定进度。进度标识可以是由数字、字母和符号等字符中的至少一种组成的字符串。进度标识包括线程启动标识、线程终止标识和线程运行至指定运行阶段的运行阶段标识。线程启动标识用于标识线程的开始运行。线程终止标识用于标识线程的结束运行。运行阶段标识用于标识线程运行的指定运行阶段,比如说线程运行时对指定函数的调用。
具体地,服务器根据客户端请求确定对应的响应线程后,启动所确定的响应线程,以通过该响应线程响应所接收到的客户端请求。在响应线程运行过程中,当响应线程运行到指定进度处时,服务器通过该响应线程获取该指定进度处的时间戳和进度标识。服务器获取到响应线程运行到指定进度处时的时间戳和进度标识时,通过该响应线程将所获取到的时间戳和进度标识发送至监控线程。
在一个实施例中,服务器通过响应线程获取到指定进度处的时间戳和进度标识时,可以通过该响应线程按照预设发送条件将所获取到的时间戳和进度标识发送至监控线程。预设发送条件可以是获取到时间戳和进度标识则实时发送,也可以是在响应线程终止时发送。
在一个实施例中,服务器通过响应线程获取到指定进度处的时间戳和进度标识时,可以通过该响应线程将所获取到的时间戳和进度标识发送至按照预设映射条件确定的监控线程。预设映射条件可以是响应线程与监控线程之间的一一映射关系或多对一的映射关系。比如,服务器可以创建与响应线程相匹配的监控线程,也可以从已有的监控线程中选择一个监控线程。
在一个实施例中,服务器通过响应线程将所获取到的时间戳和进度标识,以及该响应线程对应的线程标识发送至监控线程。在一个实施例中,服务器通过响应线程将所获取到的时间戳和进度标识发送至监控线程,通过监控线程接收该时间戳和进度标识,并获取该响应线程的线程标识。
S208,通过监控线程,根据时间戳和进度标识计算响应线程的运行进度耗时。
其中,运行进度耗时是线程运行至指定进度时耗费的时间。运行进度耗时可以用于表示线程从开始运行到运行至指定进度过程中耗费的时间,也可以用于表示线程从一个指定进度运行至另一个指定进度过程中耗费的时间。运行进度耗时可以是从线程启动到线程终止过程中耗费的时间。换而言之,运行进度耗时可以是线程的生命周期。运行进度耗时也可以是线程从开始运行到运行至调用指定函数的过程中耗费的时间。运行进度耗时还可以是线程从调用指定函数的起始阶段运行至结束阶段过程中耗费的时间,即线程调用指定函数的整个调用阶段的耗时。
具体地,服务器通过监控线程接收到通过响应线程发送的时间戳和进度标识时,并根据所接收到时间戳和进度标识计算该响应线程的运行进度耗时。服务器通过监控线程根据时间戳计算响应线程运行至进度标识对应的指定进度时耗费的时间。
在一个实施例中,服务器通过监控线程接收多个时间戳和相应的多个进度标识,并计算任意两个进度标识各自对应的时间戳之间的时间差,计算所得的时间差即为相应响应线程从一个指定进度运行至另一个指定进度过程中耗费的时间。其中,该两个指定进度分别与该任意两个进度标识对应。
在一个实施例中,服务器通过监控线程接收到的时间戳包括线程启动时间戳、线程终止时间戳和响应线程运行至指定运行阶段时的时间戳。相应的,服务器通过监控线程接收到的进度标识包括线程启动标识、线程终止标识和响应线程运行至指定运行阶段时的进度标识。其中,该指定运行阶段包括响应线程运行过程中调用指定函数时的起始阶段和结束阶段。服务器通过监控线程计算两个进度标识各自对应的时间戳获得相应的运行进度耗时。
具体地,服务器通过监控线程根据线程启动时间戳和线程结束时间戳,以及各自对应的进度标识即可确定响应线程的运行总耗时,即响应线程的生命周期。服务器通过监控线程根据线程启动时间戳和响应线程运行至指定运行阶段时的时间戳,以及各自对应的进度标识即可确定响应线程从开始运行到运行至该指定运行阶段时耗费的时间。服务器通过监控线程,根据响应线程运行过程中调用指定函数时的起始阶段和结束阶段分别对应的时间戳和进度标识,计算获得响应线程调用该指定函数耗费的时间。
在一个实施例中,服务器通过监控线程计算获得响应线程的运行进度耗时后,将所获得的运行进度耗时和该响应线程的线程标识对应存入数据库,以便于对该响应线程进行分析和优化时,直接从数据库中读取该运行进度耗时和线程标识,提高了分析和优化效率。
上述线程运行监控方法,接收到客户端请求时,分配用于响应该客户端请求的响应线程,在响应线程运行过程中,通过该响应线程获取其运行到指定进度处时的时间戳和进度标识并发送至监控线程,通过监控线程根据接收到的时间戳和进度标识计算响应线程的运行进度耗时,以实现线程运行监控。该种方式实现的线程运行监控,可实现进度级别的运行监控,通过预定义指定进度即可实现更细粒度的线程运行监控,提高了线程运行的监控效率。通过监控线程根据响应线程发送的时间戳和进度标识计算响应的运行进度耗时,方便了线程运行进度耗时的查看和分析,进一步提高了线程运行的监控效率。
在一个实施例中,步骤S206包括:通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳、进度标识和响应线程的线程标识对应缓存;当进度标识为线程终止标识时,通过响应线程,查询与线程标识对应缓存的时间戳和进度标识,并将查询到的时间戳和进度标识发送至监控线程。
其中,缓存是将时间戳、进度标识和线程标识等缓存数据临时存储在内存中。用于临时存储缓存数据的内存可以是与响应线程对应分配的内存。服务器通过响应线程将缓存的时间戳、进度标识和线程标识发送至监控线程时,可以将该缓存数据从内存中实时清除,也可以在预设时长后再清除,预设时长比如1分钟。缓存时可以根据每次缓存的时间戳、进度标识和线程标识生成对应的单条缓存记录,也可以在已有的缓存记录中查询该响应线程的线程标识,并将当前缓存的时间戳和进度标识与所查询到的线程标识对应缓存记录,从而形成树状的缓存记录。
在一个实施例中,服务器通过响应线程获取到该响应线程运行到指定进度处时的时间戳和进度标识,并将所获取到的进度标识与线程终止标识进行匹配,以判断所获取到的进度标识是否为线程终止标识。当匹配失败时,表明所获取到的进度标识不是线程终止标识,该响应线程尚未运行结束,则将所获取到的时间戳和进度标识,以及该响应线程对应的线程标识对应缓存。当匹配成功时,表明所获取到的进度标识为线程终止标识,该响应线程运行结束,则查询与该响应线程的线程标识对应缓存的时间戳和进度标识并发送至监控线程。
上述实施例中,通过响应线程将对应获取到的多个时间戳和相应的进度标识,以及该响应线程对应的线程标识对应缓存,当该响应运行结束时,通过该响应线程将该多个时间戳和相应的进度标识同时发送至监控线程,减少了在响应线程和监控线程间建立长连接的次数,缩短了长连接的维持时间,从而提高了线程运行的监控效率。
在一个实施例中,步骤S206包括:通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识实时发送至监控线程;步骤S208包括:通过监控线程,将时间戳、进度标识和响应线程对应的线程标识对应缓存;当进度标识为线程终止标识时,通过监控线程查询与线程标识对应缓存的时间戳和进度标识,并根据查询到的时间戳和进度标识计算响应线程的运行进度耗时。
具体地,服务器通过监控线程,接收通过响应线程获取并实时发送的时间戳和进度标识,获取该响应线程对应的线程标识,并将所接收到的时间戳和进度标识,以及所获取到的线程标识对应缓存。当所获取到的进度标识为线程终止标识时,服务器通过监控线程,查询与响应线程的线程标识对应缓存的时间戳和进度标识,并根据所查询到的时间戳和进度标识计算该响应线程对应的运行进度耗时。
在一个实施例中,服务器通过响应线程获取到时间戳和进度标识时,将所获取到的时间戳和进度标识,以及该响应线程对应的线程标识发送至监控线程。服务器通过监控线程接收到时间戳、进度标识和相应响应线程的线程标识时,将所接收到的时间戳、进度标识和线程标识对应缓存。
在一个实施例中,服务器通过监控线程接收到通过响应线程发送的时间戳和进度标识时,将所接收到的进度标识与该响应线程对应的线程终止标识进行匹配,以确定该响应线程是否已运行结束。当匹配成功时,表明服务器通过监控线程接收到的进度标识为线程终止标识,表明相应响应线程运行结束,服务器则通过监控线程查询与该响应线程的线程标识对应缓存的时间戳和进度标识。当匹配失败时,表明相应响应线程尚未运行结束,处于运行过程中,服务器则通过监控线程将所接收到的时间戳和进度标识,与该响应线程对应的线程标识对应缓存。
上述实施例中,通过响应线程将获取到的时间戳和进度标识实时发送至监控线程,提高了时间戳和进度标识的发送效率,以便于监控线程及时监控响应线程的运行进度,从而提高了线程运行的监控效率。当响应线程运行结束时,通过监控线程根据该响应线程对应的时间戳和进度标识计算相应的运行进度耗时,实现了对响应线程运行进度的有效监控。
在一个实施例中,步骤S204包括:根据客户端请求遍历线程池;当线程池中存在空闲线程时,从线程池中选择空闲线程;选择的空闲线程作为用于响应客户端请求的响应线程;更新响应线程对应的线程标识。
其中,线程池是回收和管理空闲线程的处理单元。线程池用于回收空闲线程以减少创建和销毁线程耗费的时间和消耗的资源。线程池还可用于限制运行线程的数量,当运行线程的数量达到预设阈值时,将接收到的客户端请求缓存至队列中,直至存在空闲线程时再从队列的队首获取缓存的客户端请求并由该空闲线程响应,以避免过多运行线程导致内存资源不足而降低响应效率。
具体地,服务器接收到客户端请求时,根据接收到的客户端请求遍历线程池,以查询线程池中的空闲线程。当从线程池中查询到空闲线程时,服务器从线程池中选择用于响应所接收到的客户端请求的空闲线程,将选中的空闲线程作为所确定的响应线程,并更新该选中的空闲线程对应的线程标识。
在一个实施例中,服务器在线程池中查询空闲线程,当查询到空闲线程时终止查询过程,将所查询到的空闲线程作为用于响应客户端请求的响应线程。
在一个实施例中,服务器以遍历方式查询线程池中存在的空闲线程,当只查询到一个空闲线程时则将该空闲线程作为用于响应客户端请求的响应线程。当查询到的空闲线程多于一个时,服务器从该多于一个的空闲线程中选择用作响应线程的一个空闲线程。
在一个实施例中,服务器从查询到的多个空闲线程中选择作为响应线程的空闲线程时,可以从该多个空闲线程中随机选择,也可以根据该多个空闲线程各自对应的回收时间进行选择,如选择回收时间最早的空闲线程,也可以通过计算哈希值的方式确定选择的空闲线程,如对客户端请求对应哈希值按照空闲线程的数量取余,根据余数从该多个空闲线程中选择作为响应线程的空闲线程。
在一个实施例中,服务器更新选中的空闲线程对应的线程标识时,更新的线程标识可以随机生成且唯一,也可以根据所接收到的客户端请求对应确定,如客户端请求的哈希值作为更新的线程标识,还可以根据该选中的空闲线程的当前线程标识对应确定,如增加、减少或变更当前线程标识中的单个字符。
上述实施例中,通过根据接收到的客户端请求遍历线程池查询已有的空闲线程,并将查询到的空闲线程作为用于响应客户端请求的响应线程,避免了线程的创建,减少了创建线程耗费的时间和消耗的资源,从而提高了客户端请求的响应效率。
在一个实施例中,步骤S204包括:根据客户端请求遍历线程池;当线程池中没有空闲线程时,获取当前运行的响应线程数量;当响应线程数量小于或等于响应线程数量阈值时,创建用于响应客户端请求的响应线程;生成线程标识;生成的线程标识与创建的响应线程对应。
其中,响应线程数量是当前处于运行状态的响应线程的数量。换而言之,响应线程数量是当前处于响应客户端请求的响应状态的线程数量。响应线程数量阈值是预先设定的用于与响应线程数量比较的数量阈值。响应线程数量阈值是服务器判定是否创建响应线程的判定依据。响应线程数量阈值可以是由线程池确定,也可以根据实际情况自定义。
具体地,服务器接收到客户端请求时,根据所接收到的客户端请求遍历线程池。当在线程池中没有查询到空闲线程时,表明线程池中当前没有可直接调用的空闲线程,服务器获取当前运行的响应线程数量。服务器将所获取到的响应线程数量与响应线程数量阈值进行比较,当响应线程数量小于或等于响应线程数量阈值时,表明当前运行的响应线程数量尚未达到预设最大值,服务器创建用于响应客户端请求的响应线程,并生成相应的线程标识。
在一个实施例中,当响应线程数量大于响应线程数量阈值时,表明当前运行的响应线程数量达到预设最大值,服务器将接收到的客户端请求缓存至缓存队列中,当线程池中存在回收的空闲线程时,从该缓存队列的队首读取缓存的客户端请求,并通过回收的空闲线程响应该客户端请求。
在一个实施例中,线程池中包括可以监测正在运行的响应线程数量的监控机制,当线程池中没有空闲线程时,服务器可以通过线程池的监控机制确定当前运行的响应线程数量。服务器也可以实时统计当前运行的响应线程数量。服务器还可以设置响应线程的监控机制,用于实时监测当前运行的响应线程数量。
在一个实施例中,当线程池中没有空闲线程时,服务器不会执行判断当前运行的响应线程数量是否达到预设最大值的相关步骤,直接创建用于响应客户端请求的响应线程。
上述实施例中,当线程池中没有可供选择的空闲线程、且当前运行的响应线程尚未达到预设最大值时,创建用于响应客户端请求的响应线程。这样既能保证客户端请求的及时有效响应,又能避免因同时运行的响应线程数量过大导致资源消耗过量而降低客户端请求响应效率,从而提高了客户端请求响应效率。
在一个实施例中,运行进度耗时包括响应线程的运行总耗时;上述线程运行监控方法还包括:查询响应线程对应的运行总耗时阈值;将运行总耗时阈值和运行总耗时进行比较;当运行总耗时达到运行总耗时阈值时,触发相应的告警信息。
其中,运行总耗时是线程从开始运行到结束运行耗费的总时间。换而言之,运行总耗时是线程的生命周期。运行总耗时阈值是预先设定的线程运行总时间。运行总耗时阈值用于表示相应线程在正常运行情况下,从开始运行到结束运行耗费的总时间。告警信息是用于触发告警的信息。告警信息具体可以是由数字、字母和符号等字符中的至少一种组成的字符串。告警信息中可以包括线程标识和该告警信息对应的进度标识。
在一个实施例中,服务器通过监控线程,根据接收到的时间戳和进度标识计算相应响应线程从一个指定进度运行到另一个指定进度过程中耗费的时间。服务器查询该响应线程从该一个指定进度运行至该另一个指定进度过程中耗费的时间阈值,并与计算所得的相应指定运行阶段的时间进行比较,当计算所得的时间达到相应的时间阈值时,触发相应的告警信息。
举例说明,服务器通过监控线程可以计算获得响应线程运行过程中调用指定函数的调用总耗时。服务器查询该响应线程调用该指定函数的调用总耗时阈值,并与计算所得的调用总耗时进行比较。当该响应线程调用指定函数的调用总耗时达到调用总耗时阈值时,触发相应的告警信息。其中,告警信息中包含该响应线程的线程标识和该指定函数对应的函数标识,该函数标识也可以是该响应线程调用该指定函数时的起始阶段和结束阶段各自对应进度标识。
在一个是实施例中,服务器触发生成告警信息后,可以通过短信、电子邮件或其他可行的推送方式将告警信息推送至终端。
上述实施例中,当通过监控线程计算获得的运行总耗时达到运行总耗时阈值,则表明相应响应线程可能运行异常,触发相应的告警信息,以便于及时了解该响应线程的运行异常情况,提高了线程运行的监控效率。
在一个实施例中,上述线程运行监控方法还包括:获取当前运行的响应线程数量;根据响应线程数量按照预设映射关系确定监控线程数量;当监控线程数量达到监控线程数量阈值时,从当前运行的监控线程中选择目标监控线程;通过目标监控线程,接收通过响应线程发送的时间戳和进度标识。
其中,预设映射关系是预定义的映射关系。预设映射关系具体可以是线性映射关系,比如y=a*x,其中x是自变量,如响应线程数量,a是自定义的变量因子,如0至1中的0除外的任意一个数值,y是与自变量对应的因变量,如监控线程数量。监控线程数量是监控线程的数量。监控线程数量阈值是预先设定的监控线程数量阈值。监控线程数量阈值用于限制监控线程的运行数量。
具体地,服务器根据当前运行的响应线程数量按照预设映射关系确定监控线程数量。当所确定的监控线程数量达到监控线程数量阈值时,表明当前运行的监控线程数量达到预设最大值,服务器从当前运行的监控线程中选择用于接收时间戳和进度标识的监控线程。其中,服务器从当前运行的监控线程中选择目标监控线程时,可以按照当前运行的监控线程的负载量选择,也可以通过轮询的方式选择,还可以根据计算哈希值的方式选择。
在一个实施例中,当服务器根据当前运行的响应线程数量对应确定的监控线程数量小于监控线程数量阈值时,创建新的监控线程,创建的监控线程用于接收通过响应线程发送的时间戳和进度标识。
举例说明,假设当前运行的响应线程数量为10,按照预设映射关系y=0.6*x确定的监控线程数量为6。若监控线程数量阈值为6,则从当前运行的监控线程中选择用于接收时间戳和进度标识的监控线程。若监控线程数量阈值为8,则创建用于接收时间戳和进度标识的监控线程。
上述实施例中,当根据预设映射关系和当前运行的响应线程数量对应确定的监控线程数量达到监控线程数量阈值时,从已有的监控线程中选择用于接收时间戳和进度标识的监控线程,既能有效避免因单个监控线程负载量过大导致监控效率低,又能有效避免因监控线程的运行数量过大占用过多的资源影响客户端请求的响应,从而在保证客户端请求响应效率的情况下提高了运行线程的监控效率。
如图3所示,在一个实施例中,提供了一种线程运行监控方法,该方法具体包括以下步骤:
S302,接收客户端请求。
S304,根据客户端请求遍历线程池。
S306,当线程池中存在空闲线程时,从线程池中选择空闲线程;选择的空闲线程作为用于响应客户端请求的响应线程。
S308,更新响应线程对应的线程标识。
S310,当线程池中没有空闲线程时,获取当前运行的响应线程数量。
S312,当响应线程数量小于或等于响应线程数量阈值时,创建用于响应客户端请求的响应线程。
S314,生成线程标识;生成的线程标识与创建的响应线程对应。
S316,通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳、进度标识和响应线程的线程标识对应缓存。
S318,当进度标识为线程终止标识时,通过响应线程,查询与线程标识对应缓存的时间戳和进度标识,并将查询到的时间戳和进度标识发送至监控线程。
S320,通过监控线程,根据时间戳和进度标识计算响应线程的运行进度耗时;运行进度耗时包括响应线程的运行总耗时。
S322,通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识实时发送至监控线程。
S324,通过监控线程,将时间戳、进度标识和响应线程对应的线程标识对应缓存;当进度标识为线程终止标识时,通过监控线程查询与线程标识对应缓存的时间戳和进度标识,并根据查询到的时间戳和进度标识计算响应线程的运行进度耗时;运行进度耗时包括响应线程的运行总耗时。
S326,查询响应线程对应的运行总耗时阈值。
S328,将运行总耗时阈值和运行总耗时进行比较。
S330,当运行总耗时达到运行总耗时阈值时,触发相应的告警信息。
上述实施例中,根据接收到的客户端请求遍历线程池,当线程池中存在空闲线程时选择已有的空闲线程作为响应线程,当线程池中没有空闲线程时创建响应线程,有效提高了客户端请求的响应效率。通过响应线程获取该响应线程运行至指定进度处的时间戳和进度标识,并将所获取到的时间戳和进度标识按照不同的发送时机发送监控线程,提高了线程运行的监控效率。通过监控线程根据接收到的时间戳和进度标识计算相应的运行进度耗时,并在符合预设告警条件时触发告警信息,实现了线程运行的有效监控。
应该理解的是,虽然图2和图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种线程运行监控装置400,包括:接收模块401、确定模块402、响应模块403和监控模块404,其中:
接收模块401,用于接收客户端请求。
确定模块402,用于根据客户端请求确定用于响应客户端请求的响应线程。
响应模块403,用于通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识发送至监控线程。
监控模块404,用于通过监控线程,根据时间戳和进度标识计算响应线程的运行进度耗时。
上述线程运行监控装置,接收到客户端请求时,分配用于响应该客户端请求的响应线程,在响应线程运行过程中,通过该响应线程获取其运行到指定进度处时的时间戳和进度标识并发送至监控线程,通过监控线程根据接收到的时间戳和进度标识计算响应线程的运行进度耗时,以实现线程运行监控。该种方式实现的线程运行监控,可实现进度级别的运行监控,通过预定义指定进度即可实现更细粒度的线程运行监控,提高了线程运行的监控效率。通过监控线程根据响应线程发送的时间戳和进度标识计算响应的运行进度耗时,方便了线程运行进度耗时的查看和分析,进一步提高了线程运行的监控效率。
在一个实施例中,响应模块403,还用于通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳、进度标识和响应线程的线程标识对应缓存;当进度标识为线程终止标识时,通过响应线程,查询与线程标识对应缓存的时间戳和进度标识,并将查询到的时间戳和进度标识发送至监控线程。
在一个实施例中,响应模块403,还用于通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识实时发送至监控线程;监控模块404,还用于通过监控线程,将时间戳、进度标识和响应线程对应的线程标识对应缓存;当进度标识为线程终止标识时,通过监控线程查询与线程标识对应缓存的时间戳和进度标识,并根据查询到的时间戳和进度标识计算响应线程的运行进度耗时。
在一个实施例中,确定模块402,用于根据客户端请求遍历线程池;当线程池中存在空闲线程时,从线程池中选择空闲线程;选择的空闲线程作为用于响应客户端请求的响应线程;更新响应线程对应的线程标识。
在一个实施例中,确定模块402,还用于根据客户端请求遍历线程池;当线程池中没有空闲线程时,获取当前运行的响应线程数量;当响应线程数量小于或等于响应线程数量阈值时,创建用于响应客户端请求的响应线程;生成线程标识;生成的线程标识与创建的响应线程对应。
如图5所示,在一个实施例中,运行进度耗时包括响应线程的运行总耗时;线程运行监控装置400还包括告警模块405;告警模块405,用于查询响应线程对应的运行总耗时阈值;将运行总耗时阈值和运行总耗时进行比较;当运行总耗时达到运行总耗时阈值时,触发相应的告警信息。
在一个实施例中,线程运行监控装置400还包括选择模型406;选择模型407,用于获取当前运行的响应线程数量;根据响应线程数量按照预设映射关系确定监控线程数量;当监控线程数量达到监控线程数量阈值时,从当前运行的监控线程中选择目标监控线程;通过目标监控线程,接收通过响应线程发送的时间戳和进度标识。
关于线程运行监控装置的具体限定可以参见上文中对于线程运行监控方法的限定,在此不再赘述。上述线程运行监控装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储通过监控线程计算获得的运行进度耗时。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种线程运行监控方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收客户端请求;根据客户端请求确定用于响应客户端请求的响应线程;通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识发送至监控线程;通过监控线程,根据时间戳和进度标识计算响应线程的运行进度耗时。
在一个实施例中,通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识发送至监控线程,包括:通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳、进度标识和响应线程的线程标识对应缓存;当进度标识为线程终止标识时,通过响应线程,查询与线程标识对应缓存的时间戳和进度标识,并将查询到的时间戳和进度标识发送至监控线程。
在一个实施例中,通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识发送至监控线程,包括:通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识实时发送至监控线程;通过监控线程,根据时间戳和进度标识计算响应线程的运行进度耗时,包括:通过监控线程,将时间戳、进度标识和响应线程对应的线程标识对应缓存;当进度标识为线程终止标识时,通过监控线程查询与线程标识对应缓存的时间戳和进度标识,并根据查询到的时间戳和进度标识计算响应线程的运行进度耗时。
在一个实施例中,根据客户端请求确定用于响应客户端请求的响应线程,包括:根据客户端请求遍历线程池;当线程池中存在空闲线程时,从线程池中选择空闲线程;选择的空闲线程作为用于响应客户端请求的响应线程;更新响应线程对应的线程标识。
在一个实施例中,根据客户端请求确定用于响应客户端请求的响应线程,包括:根据客户端请求遍历线程池;当线程池中没有空闲线程时,获取当前运行的响应线程数量;当响应线程数量小于或等于响应线程数量阈值时,创建用于响应客户端请求的响应线程;生成线程标识;生成的线程标识与创建的响应线程对应。
在一个实施例中,运行进度耗时包括响应线程的运行总耗时;处理器执行计算机程序时还实现以下步骤:查询响应线程对应的运行总耗时阈值;将运行总耗时阈值和运行总耗时进行比较;当运行总耗时达到运行总耗时阈值时,触发相应的告警信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取当前运行的响应线程数量;根据响应线程数量按照预设映射关系确定监控线程数量;当监控线程数量达到监控线程数量阈值时,从当前运行的监控线程中选择目标监控线程;通过目标监控线程,接收通过响应线程发送的时间戳和进度标识。
上述计算机设备,接收到客户端请求时,分配用于响应该客户端请求的响应线程,在响应线程运行过程中,通过该响应线程获取其运行到指定进度处时的时间戳和进度标识并发送至监控线程,通过监控线程根据接收到的时间戳和进度标识计算响应线程的运行进度耗时,以实现线程运行监控。该种方式实现的线程运行监控,可实现进度级别的运行监控,通过预定义指定进度即可实现更细粒度的线程运行监控,提高了线程运行的监控效率。通过监控线程根据响应线程发送的时间戳和进度标识计算响应的运行进度耗时,方便了线程运行进度耗时的查看和分析,进一步提高了线程运行的监控效率。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收客户端请求;根据客户端请求确定用于响应客户端请求的响应线程;通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识发送至监控线程;通过监控线程,根据时间戳和进度标识计算响应线程的运行进度耗时。
在一个实施例中,通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识发送至监控线程,包括:通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳、进度标识和响应线程的线程标识对应缓存;当进度标识为线程终止标识时,通过响应线程,查询与线程标识对应缓存的时间戳和进度标识,并将查询到的时间戳和进度标识发送至监控线程。
在一个实施例中,通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识发送至监控线程,包括:通过响应线程,获取响应线程运行到指定进度处时的时间戳和进度标识,并将时间戳和进度标识实时发送至监控线程;通过监控线程,根据时间戳和进度标识计算响应线程的运行进度耗时,包括:通过监控线程,将时间戳、进度标识和响应线程对应的线程标识对应缓存;当进度标识为线程终止标识时,通过监控线程查询与线程标识对应缓存的时间戳和进度标识,并根据查询到的时间戳和进度标识计算响应线程的运行进度耗时。
在一个实施例中,根据客户端请求确定用于响应客户端请求的响应线程,包括:根据客户端请求遍历线程池;当线程池中存在空闲线程时,从线程池中选择空闲线程;选择的空闲线程作为用于响应客户端请求的响应线程;更新响应线程对应的线程标识。
在一个实施例中,根据客户端请求确定用于响应客户端请求的响应线程,包括:根据客户端请求遍历线程池;当线程池中没有空闲线程时,获取当前运行的响应线程数量;当响应线程数量小于或等于响应线程数量阈值时,创建用于响应客户端请求的响应线程;生成线程标识;生成的线程标识与创建的响应线程对应。
在一个实施例中,运行进度耗时包括响应线程的运行总耗时;计算机程序被处理器执行时还实现以下步骤:查询响应线程对应的运行总耗时阈值;将运行总耗时阈值和运行总耗时进行比较;当运行总耗时达到运行总耗时阈值时,触发相应的告警信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取当前运行的响应线程数量;根据响应线程数量按照预设映射关系确定监控线程数量;当监控线程数量达到监控线程数量阈值时,从当前运行的监控线程中选择目标监控线程;通过目标监控线程,接收通过响应线程发送的时间戳和进度标识。
上述存储介质,接收到客户端请求时,分配用于响应该客户端请求的响应线程,在响应线程运行过程中,通过该响应线程获取其运行到指定进度处时的时间戳和进度标识并发送至监控线程,通过监控线程根据接收到的时间戳和进度标识计算响应线程的运行进度耗时,以实现线程运行监控。该种方式实现的线程运行监控,可实现进度级别的运行监控,通过预定义指定进度即可实现更细粒度的线程运行监控,提高了线程运行的监控效率。通过监控线程根据响应线程发送的时间戳和进度标识计算响应的运行进度耗时,方便了线程运行进度耗时的查看和分析,进一步提高了线程运行的监控效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种线程运行监控方法,所述方法包括:
接收客户端请求;
审核所述客户端请求,当所述客户端请求通过审核时,确定用于响应所述客户端请求的响应线程,所述审核所述客户端请求包括对所述客户端请求的来源、类型、形式和响应时机进行审核;
通过所述响应线程,获取所述响应线程运行到指定处时的时间戳和进度标识,并将所述时间戳、所述进度标识和所述响应线程的线程标识对应缓存;
当所述进度标识为线程终止标识时,通过所述响应线程,查询与所述线程标识对应缓存的时间戳和进度标识,并将查询到的时间戳和进度标识发送至监控线程;
通过所述监控线程,根据所述时间戳和所述进度标识计算所述响应线程的运行进度耗时,所述运行进度耗时包括所述响应线程的生命周期、或所述响应线程从开始运行到运行至调用指定函数的过程耗费的时间、或所述响应线程从调用指定函数的起始阶段运行至结束阶段过程中耗费的时间。
2.根据权利要求1所述的方法,其特征在于,所述通过所述响应线程,获取所述响应线程运行到指定进度处时的时间戳和进度标识,并将所述时间戳和所述进度标识发送至监控线程,包括:
通过所述响应线程,获取所述响应线程运行到指定进度处时的时间戳和进度标识,并将所述时间戳和所述进度标识实时发送至监控线程;
所述通过所述监控线程,根据所述时间戳和所述进度标识计算所述响应线程的运行进度耗时,包括:
通过所述监控线程,将所述时间戳、所述进度标识和所述响应线程对应的线程标识对应缓存;
当所述进度标识为线程终止标识时,通过所述监控线程查询与所述线程标识对应缓存的时间戳和进度标识,并根据查询到的所述时间戳和所述进度标识计算所述响应线程的运行进度耗时。
3.根据权利要求1所述的方法,其特征在于,所述根据所述客户端请求确定用于响应所述客户端请求的响应线程,包括:
根据所述客户端请求遍历线程池;
当所述线程池中存在空闲线程时,从所述线程池中选择空闲线程;选择的所述空闲线程作为用于响应所述客户端请求的响应线程;
更新所述响应线程对应的线程标识。
4.根据权利要求1所述的方法,其特征在于,所述根据所述客户端请求确定用于响应所述客户端请求的响应线程,包括:
根据所述客户端请求遍历线程池;
当所述线程池中没有空闲线程时,获取当前运行的响应线程数量;
当所述响应线程数量小于或等于响应线程数量阈值时,创建用于响应所述客户端请求的响应线程;
生成线程标识;生成的所述线程标识与创建的所述响应线程对应。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述运行进度耗时包括所述响应线程的运行总耗时;所述方法还包括:
查询所述响应线程对应的运行总耗时阈值;
将所述运行总耗时阈值和所述运行总耗时进行比较;
当所述运行总耗时达到所述运行总耗时阈值时,触发相应的告警信息。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
获取当前运行的响应线程数量;
根据所述响应线程数量按照预设映射关系确定监控线程数量;
当所述监控线程数量达到监控线程数量阈值时,从当前运行的监控线程中选择目标监控线程;
通过所述目标监控线程,接收通过所述响应线程发送的所述时间戳和所述进度标识。
7.一种线程运行监控装置,其特征在于,所述装置包括:
接收模块,用于接收客户端请求;
确定模块,用于审核所述客户端请求,当所述客户端请求通过审核时,确定用于响应所述客户端请求的响应线程,所述审核所述客户端请求包括对所述客户端请求的来源、类型、形式和响应时机进行审核;
响应模块,用于通过所述响应线程,获取所述响应线程运行到指定处时的时间戳和进度标识,并将所述时间戳、所述进度标识和所述响应线程的线程标识对应缓存,当所述进度标识为线程终止标识时,通过所述响应线程,查询与所述线程标识对应缓存的时间戳和进度标识,并将查询到的时间戳和进度标识发送至监控线程;
监控模块,用于通过所述监控线程,根据所述时间戳和所述进度标识计算所述响应线程的运行进度耗时,所述运行进度耗时包括所述响应线程的生命周期、或所述响应线程从开始运行到运行至调用指定函数的过程耗费的时间、或所述响应线程从调用指定函数的起始阶段运行至结束阶段过程中耗费的时间。
8.根据权利要求7所述的装置,其特征在于,所述确定模块还用于根据所述客户端请求遍历线程池,当所述线程池中存在空闲线程时,从所述线程池中选择空闲线程;选择的所述空闲线程作为用于响应所述客户端请求的响应线程,更新所述响应线程对应的线程标识。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810554502.7A CN108763046B (zh) | 2018-06-01 | 2018-06-01 | 线程运行监控方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810554502.7A CN108763046B (zh) | 2018-06-01 | 2018-06-01 | 线程运行监控方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108763046A CN108763046A (zh) | 2018-11-06 |
CN108763046B true CN108763046B (zh) | 2024-04-05 |
Family
ID=64001765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810554502.7A Active CN108763046B (zh) | 2018-06-01 | 2018-06-01 | 线程运行监控方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108763046B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737320B (zh) * | 2019-09-25 | 2023-08-18 | 腾讯音乐娱乐科技(深圳)有限公司 | 耗电量检测方法、装置、电子设备及存储介质 |
CN111651328A (zh) * | 2020-06-08 | 2020-09-11 | 北京字节跳动网络技术有限公司 | 一种线程监控方法及装置 |
CN112764992B (zh) * | 2021-01-20 | 2024-04-12 | 网银在线(北京)科技有限公司 | 线程池的监控方法、装置及设备 |
CN117215800A (zh) * | 2023-11-07 | 2023-12-12 | 北京大数据先进技术研究院 | 一种动态线程控制系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101268447A (zh) * | 2005-05-26 | 2008-09-17 | 美国联合包裹服务公司 | 软件进程监控 |
CN102541659A (zh) * | 2011-12-30 | 2012-07-04 | 重庆新媒农信科技有限公司 | 一种服务器业务请求处理方法和装置 |
CN103577312A (zh) * | 2012-07-26 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种软件的时间性能的检测方法及装置 |
CN104750543A (zh) * | 2013-12-26 | 2015-07-01 | 杭州华为数字技术有限公司 | 线程创建方法、业务请求处理方法及相关设备 |
CN106375435A (zh) * | 2016-08-31 | 2017-02-01 | 福建天晴数码有限公司 | Web线程超时监控的方法及其系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2759365A1 (en) * | 2011-11-24 | 2013-05-24 | Ibm Canada Limited - Ibm Canada Limitee | Identification of thread progress information |
US20180004573A1 (en) * | 2016-06-29 | 2018-01-04 | Microsoft Technology Licensing, Llc | Lockless measurement of execution time of concurrently executed sequences of computer program instructions |
-
2018
- 2018-06-01 CN CN201810554502.7A patent/CN108763046B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101268447A (zh) * | 2005-05-26 | 2008-09-17 | 美国联合包裹服务公司 | 软件进程监控 |
CN102541659A (zh) * | 2011-12-30 | 2012-07-04 | 重庆新媒农信科技有限公司 | 一种服务器业务请求处理方法和装置 |
CN103577312A (zh) * | 2012-07-26 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种软件的时间性能的检测方法及装置 |
CN104750543A (zh) * | 2013-12-26 | 2015-07-01 | 杭州华为数字技术有限公司 | 线程创建方法、业务请求处理方法及相关设备 |
CN106375435A (zh) * | 2016-08-31 | 2017-02-01 | 福建天晴数码有限公司 | Web线程超时监控的方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108763046A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763046B (zh) | 线程运行监控方法、装置、计算机设备和存储介质 | |
CN109033123B (zh) | 基于大数据的查询方法、装置、计算机设备和存储介质 | |
CN110647438B (zh) | 事件监控方法、装置、计算机设备和存储介质 | |
CN109408746B (zh) | 画像信息查询方法、装置、计算机设备和存储介质 | |
CN110620812B (zh) | 交互信息的推送方法、装置、计算机设备和存储介质 | |
CN110753099B (zh) | 分布式缓存系统以及缓存数据更新方法 | |
CN111008188B (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
CN108848142B (zh) | 消息推送方法、装置、计算机设备和存储介质 | |
EP2434401A1 (en) | Method and system for managing thread pool | |
CN110309109B (zh) | 数据监控方法、装置、计算机设备及存储介质 | |
CN110781214A (zh) | 数据库读写方法、装置、计算机设备和存储介质 | |
CN110019239B (zh) | 上报数据的存储方法、装置、电子设备和存储介质 | |
CN108965383B (zh) | 文件同步方法、装置、计算机设备和存储介质 | |
CN108924258B (zh) | 后台信息推送方法、装置、计算机设备和存储介质 | |
CN108449237B (zh) | 网络性能监测方法、装置、计算机设备和存储介质 | |
CN109542719B (zh) | 线程状态监控方法、装置、计算机设备和存储介质 | |
CN112130996A (zh) | 数据监控控制系统、方法、装置、电子设备和存储介质 | |
CN112311902B (zh) | 基于微服务的文件发送方法及装置 | |
CN111159233B (zh) | 分布式缓存方法、系统、计算机设备以及存储介质 | |
CN110674149B (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN110659272A (zh) | 数据清洗方法和系统 | |
CN112070585A (zh) | 订单状态统一管理方法、装置、计算机设备和存储介质 | |
US8296262B1 (en) | Systems and methods for real-time online monitoring of computing devices | |
CN105893150B (zh) | 接口调用频度控制、接口调用请求处理方法及装置 | |
CN111382976A (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 |