CN109710400A - 线程资源分组的方法及装置 - Google Patents
线程资源分组的方法及装置 Download PDFInfo
- Publication number
- CN109710400A CN109710400A CN201811541911.XA CN201811541911A CN109710400A CN 109710400 A CN109710400 A CN 109710400A CN 201811541911 A CN201811541911 A CN 201811541911A CN 109710400 A CN109710400 A CN 109710400A
- Authority
- CN
- China
- Prior art keywords
- thread
- child resource
- thread pool
- task
- pool
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000012545 processing Methods 0.000 claims abstract description 68
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 2
- 230000004048 modification Effects 0.000 claims description 2
- 230000000903 blocking effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 11
- 238000012544 monitoring process Methods 0.000 abstract description 7
- 238000004891 communication Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 12
- 230000001960 triggered effect Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种线程资源分组的方法及装置,该方法适用于业务过程优化,该方法包括:确定资源线程池的总并发线程数,将所述资源线程池分为多个子资源线程池;当接收到目标业务触发的任务处理请求时,从所述多个子资源线程池中确定出与目标任务对应的目标子资源线程池;确定所述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值;若所述目标子资源线程池中并发执行的线程的数量不小于所述并发线程阈值,则增加所述目标子资源线程池的并发线程数以从所述目标子资源线程池中获得用于执行所述目标任务的线程资源。采用本申请实施例,可监控线程资源的使用情况,实现对资源分组的灵活调整以及详细的资源管理,适用性高。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种线程资源分组的方法及装置。
背景技术
随着科学技术的发展与网络技术的全面普及,人们对各类业务的需求愈加旺盛,对于计算机的处理水平也提出了越来越高的要求。在基于客户端/服务端模式中,为了充分利用现有的硬件资源,人们提出多线程技术解决多个线程并发执行的问题。但是,如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。基于此,为了减少线程的创建时间和销毁时间,人们又提出了线程池技术,使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务。然而,这样的方式依然存在灵活性差,不利于资源管理且适用性不高的缺点。
发明内容
本申请实施例提供一种线程资源分组的方法及装置,可实现监控线程资源的使用情况,且实现对线程资源分组做灵活的调整以及实现详细的资源管理的目的,适用性高。
第一方面,本申请实施例提供了一种线程资源分组的方法,该方法包括:
确定资源线程池的总并发线程数,将上述资源线程池分为多个子资源线程池,其中各个子资源线程池的并发线程数之和等于上述总并发线程数,其中,任一子资源线程池的并发线程数用于指示上述任一子资源线程池中可用的线程资源的数量;
当接收到目标业务触发的任务处理请求时,从上述多个子资源线程池中确定出与上述目标任务对应的目标子资源线程池;
确定上述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值,上述并发线程阈值小于上述目标子资源线程池的并发线程数;
若上述目标子资源线程池中并发执行的线程的数量不小于上述并发线程阈值,则修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数以从上述目标子资源线程池中获得用于执行上述目标任务的线程资源。
结合第一方面,在一种可能的实施方式中,上述从上述多个子资源线程池中确定出与上述目标任务对应的目标子资源线程池包括:
根据上述任务处理请求获取目标任务的任务标识,其中,同一任务类型的任务由同一任务标识标记;
获取上述各个子资源线程池的线程池标识,其中,任一子资源线程池的线程池标识用于确定上述任一子资源线程池中的线程资源用于执行的任务;
根据上述任务标识与上述各个子资源线程池的线程池标识之间的对应关系,从上述各个子资源线程池的线程池标识中确定出与上述任务标识对应的目标线程池标识,将上述目标线程池标识对应的子资源线程池确定为与上述目标任务对应的目标子资源线程池。
结合第一方面,在一种可能的实施方式中,上述方法还包括:
若上述目标子资源线程池中并发执行的线程的数量等于上述目标子资源线程池的并发线程数,则记录上述目标子资源线程池的任务排队数和上述目标任务的阻塞等待时间;
当上述任务排队数大于或者等于任务排队数阈值和/或上述目标任务的阻塞等待时间大于或者等于阻塞等待时间阈值时,修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数以从上述目标子资源线程池中获得用于执行上述目标任务的线程资源,其中,上述任务排队数阈值和上述阻塞等待时间阈值由终端设备的性能配置参数确定。
结合第一方面,在一种可能的实施方式中,上述修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数包括:
增加上述目标子资源线程池的并发线程数以增加上述目标子资源线程池的并发线程数所指示的线程资源的数量;
减少除去上述目标子资源线程池之外的其他子资源线程池的并发线程数以减少上述其他子资源线程池的并发线程数所指示的线程资源的数量;
其中,上述目标子资源线程池和上述其他子资源线程池对应的并发线程数之和等于上述总并发线程数。
结合第一方面,在一种可能的实施方式中,上述确定资源线程池的总并发线程数包括:
根据终端设备的中央处理器CPU参数确定资源线程池的总并发线程数。
结合第一方面,在一种可能的实施方式中,上述将上述资源线程池分为多个子资源线程池包括:
根据预设参数或者随机数将上述资源线程池划分为多个子资源线程池,其中各个子资源线程池的并发线程数相同;或者
根据预设参数或者随机数确定各个子资源线程池的并发线程数,并根据上述各个子资源线程池的并发线程数将上述资源线程池划分为多个子资源线程池。
第二方面,本申请实施例提供了一种线程资源分组的装置,该装置包括:
确定单元,用于确定资源线程池的总并发线程数,将上述资源线程池分为多个子资源线程池,其中各个子资源线程池的并发线程数之和等于上述总并发线程数,其中,任一子资源线程池的并发线程数用于指示上述任一子资源线程池中可用的线程资源的数量;
匹配单元,用于当接收到目标业务触发的任务处理请求时,从上述确定单元划分的上述多个子资源线程池中确定出与目标任务对应的目标子资源线程池;
判断单元,用于确定上述匹配单元确定的上述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值,上述并发线程阈值小于上述目标子资源线程池的并发线程数;
分组调整单元,用于若上述目标子资源线程池中并发执行的线程的数量不小于上述并发线程阈值,则修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数以从上述目标子资源线程池中获得用于执行上述目标任务的线程资源。
结合第二方面,在一种可能的实施方式中,上述匹配单元用于:
根据上述任务处理请求获取目标任务的任务标识,其中,同一任务类型的任务由同一任务标识标记;
获取上述各个子资源线程池的线程池标识,其中,任一子资源线程池的线程池标识用于确定上述任一子资源线程池中的线程资源用于执行的任务;
根据上述任务标识与上述各个子资源线程池的线程池标识之间的对应关系,从上述各个子资源线程池的线程池标识中确定出与上述任务标识对应的目标线程池标识,将上述目标线程池标识对应的子资源线程池确定为与上述目标任务对应的目标子资源线程池。
结合第二方面,在一种可能的实施方式中,上述分组调整单元,还用于:
在上述目标子资源线程池中并发执行的线程的数量等于上述目标子资源线程池的并发线程数时,记录上述目标子资源线程池的任务排队数和上述目标任务的阻塞等待时间;
当上述任务排队数大于或者等于任务排队数阈值和/或上述目标任务的阻塞等待时间大于或者等于阻塞等待时间阈值时,修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数以从上述目标子资源线程池中获得用于执行上述目标任务的线程资源,其中,上述任务排队数阈值和上述阻塞等待时间阈值由终端设备的性能配置参数确定。
结合第二方面,在一种可能的实施方式中,上述分组调整单元,还用于:
增加上述目标子资源线程池的并发线程数以增加上述目标子资源线程池的并发线程数所指示的线程资源的数量;
减少除去上述目标子资源线程池之外的其他子资源线程池的并发线程数以减少上述其他子资源线程池的并发线程数所指示的线程资源的数量;
其中,上述目标子资源线程池和上述其他子资源线程池对应的并发线程数之和等于上述总并发线程数。
结合第二方面,在一种可能的实施方式中,上述确定单元用于:
根据终端设备的中央处理器CPU参数确定资源线程池的总并发线程数。
结合第二方面,在一种可能的实施方式中,上述确定单元用于:
根据预设参数或者随机数将上述资源线程池划分为多个子资源线程池,其中各个子资源线程池的并发线程数相同;或者
根据预设参数或者随机数确定各个子资源线程池的并发线程数,并根据上述各个子资源线程池的并发线程数将上述资源线程池划分为多个子资源线程池。
第三方面,本申请实施例提供了一种终端设备,该终端设备包括处理器和存储器,该处理器和存储器相互连接。该存储器用于存储支持该终端设备执行上述第一方面和/或第一方面任一种可能的实现方式提供的方法的计算机程序,该计算机程序包括程序指令,该处理器被配置用于调用上述程序指令,执行上述第一方面和/或第一方面任一种可能的实施方式所提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第一方面和/或第一方面任一种可能的实施方式所提供的方法。
实施本申请实施例,具有如下有益效果:
本申请实施例提供的方法可监控线程资源的使用情况,实现对资源分组的灵活调整以及详细的资源管理,适用性高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的线程资源分组的方法的一流程示意图;
图1b是本申请实施例提供的线程资源分组的方法的一个应用场景示意图;
图2a是本申请实施例提供的线程资源分组的方法的另一流程示意图;
图2b是本申请实施例提供的线程资源分组的方法的另一个应用场景示意图;
图3是本申请实施例提供的线程资源分组的装置的结构示意图;
图4是本申请实施例提供的终端设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为方便理解本申请实施例提供的线程资源分组的方法及相关装置,下面将首先对多线程进行简单介绍。
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。而线程池是一种多线程处理形式,利用已有线程资源继续服务新的任务(按照一定的执行策略),而不是频繁地创建销毁线程资源,由此提高服务的吞吐能力,减少中央处理器(Central Processing Unit,CPU)的闲置时间。
本申请实施例提供的一种线程资源分组的方法可适用于智能手机、台式电脑、笔记本电脑、平板电脑以及可穿戴设备等终端设备,具体可根据实际应用场景确定,在此不做限制。为方便描述,本申请实施例将以终端设备为例进行说明。
本申请实施例提供的线程资源分组的方法可广泛适用于各种线上业务办理系统,根据终端设备的硬件处理能力确定系统中的资源线程池的总并发线程数,再根据实际的业务需求确定子资源线程池的个数,并为各个子资源线程池划分并发线程数。用户通过终端设备的业务操作界面选择需要办理的目标业务,终端设备获取到上述用户所要办理的目标业务所触发的任务处理请求后,通过解析上述任务处理请求中的关键字段所携带的信息可确定出目标任务的任务标识。然后,通过已经建立好的任务标识与各子资源线程池的线程池标识之间的对应关系,确定出负责执行上述目标任务的目标子资源线程池。当目标子资源线程池中并发执行的线程的数量不小于设置的并发线程阈值,和/或等待调用目标子资源线程池中的线程资源的任务的任务排队数不小于设置的任务排队数阈值,和/或目标任务等待调用目标子资源线程池中的线程资源的阻塞等待时间不小于设置的阻塞等待阈值时,则调整线程资源的资源分组,将其他子资源线程池中的线程资源划分一部分至目标子资源线程池中,用于执行目标任务。本申请实施例提供的方法可监控线程资源的使用情况,实现对资源分组的灵活调整以及详细的资源管理,适用性高。
下面将结合图1至图4分别对本申请实施例提供的方法及相关装置分别进行详细说明。本申请实施例提供的方法中可包括用于确定资源线程池的总并发线程数、划分子资源线程池、接收任务并确定目标子资源线程池、以及基于线程资源使用情况执行线程资源分组等数据处理阶段。其中,上述各个数据处理阶段的实现方式可参见如下图1a至图2b所示的实现方式。
参见图1a,图1a为本申请实施例提供的线程资源分组的方法的一流程示意图。本申请实施例提供的方法可以包括如下步骤S1至S4:
S1、确定资源线程池的总并发线程数,将上述资源线程池分为多个子资源线程池。
在大多数实际场景中,处理某一次任务处理请求的时间是非常短暂的,但是任务处理请求的数量却是非常巨大的。在这种背景下,如果每当有一个任务处理请求到达就创建一个新线程,那么在创建和销毁线程上花费的时间和消耗的系统资源甚至可能要比花在处理实际的用户请求的时间和资源更多。除此之外,切换线程状态也需要消耗系统资源,因此根据终端设备的硬件处理能力,通过合理设置资源线程池中的线程资源的数量,即总并发线程数N,然后利用这些已有的线程资源来执行任务,能减少创建和销毁线程资源的次数,这种方式既能够使操作系统运行稳定又能保证将足够的资源用于请求处理本身。
在一些可行的实施方式中,可以根据预设参数或者随机数将上述资源线程池划分为多个子资源线程池。根据预设参数是由于将某一类型或者具有相似处理流程的业务所触发的任务划分在一个子资源线程池中执行能够实现资源的最大利用率以及资源的集中管理。因此可以根据业务的种类数或者随机数将上述总并发线程数为N的资源线程池划分为n个子资源线程池,其中第n个子资源线程池的并发线程数为Nn,且各个子资源线程池的并发线程数在初始状态时是相同的,即N1=N2=……=Nn=N/n。
可选的,在一些可行的实施方式中,可以根据从历史数据中归纳出的规律去预测某项业务可能会用到的线程资源的数量,然后根据预测结果或者随机数划分的结果,确定各个子资源线程池的并发线程数,然后根据上述各个子资源线程池的并发线程数将上述资源线程池划分为多个子资源线程池。这里,无论是基于哪种方式划分出的N1~Nn,都必须满足N=N1+N2+…+Nn,其中Nn为第n个子资源线程池的并发线程数。
举例来说,假设有一个总并发线程数为15的资源线程池,上述总并发线程数15用于指示上述资源线程池中有15个可用的线程资源数量用于执行包括保险类、理财类、贷款类、投资类、银行类等不同类型的业务所触发的任务处理请求。为了实现资源的最大利用率以及资源的集中管理,可将上述资源线程池分别对应上述业务类型划分成5个子资源线程池,每个子资源线程池的并发线程数分别为3,并发线程数3指示各个子资源线程池中分别有3个可用的线程资源数量用于执行某一类型的业务所触发的任务。
S2、当接收到目标业务触发的任务处理请求时,从上述多个子资源线程池中确定出与目标任务对应的目标子资源线程池。
在一些可行的实施方式中,终端设备接收用户办理业务时所触发的任务处理请求,其中,上述任务处理请求包括处理任务和关键字段。通常情况下,用户是通过利用终端设备上安装的应用类软件向终端设备所关联的服务器(为方便描述,下面将以终端设备为例进行说明)发出任务处理请求的。其中,应用类软件包括但不限于即时通信类软件、购物类软件、搜索类软件、邮箱终端设备、休闲娱乐类软件等,具体可根据实际应用场景确定,在此不做限制。在接收目标业务触发的任务处理请求后,终端设备通过解析上述任务处理请求,可得到任务处理请求中的关键字段里所携带的关于目标任务的任务标识的信息,并通过上述信息确定上述目标任务的任务标识。上述任务标识用于唯一标记任务类型,上述任务类型可以包括计算型任务、通信型任务、查询型任务、搜索型任务等,具体可根据实际应用场景确定,在此不做限制。上述任务标识可以是从任务类型的特征或者执行任务的算法中提取出的关键字符或者是无特殊意义的字符。
举例来说,假设用户通过终端设备上某一即时通讯类软件发出了一个语音通话任务处理请求,上述语音通话任务处理请求包括语音通话任务和关键字段,其中,语音通话任务即是目标任务。当终端设备获取到上述语音通话任务处理请求后,则对上述语音通话任务处理请求进行解析,可得到语音通话任务处理请求中关键字段里所携带的关于语音通话任务的任务标识的信息,根据得到的上述信息确定语音通话任务的任务标识为“通信”。
在一些可行的实施方式中,将包含N个线程资源的资源线程池根据业务需求划分成n个子资源线程池并设定每个子资源线程池的线程池标识,其中,上述n个子资源线程池中每个子资源线程池里至少包括1个线程资源,线程资源用于执行接收到的任务。可以理解的是,为了方便资源的统一管理,任务标识与线程池标识之间存在唯一确定的对应关系且这种对应关系是一一对应。即一个任务标识只能对应一个线程池标识,该对应关系可通过任务标识与线程池标识之间的标识匹配而建立。于是,在接收目标任务后,根据目标任务的任务标识,可以从n个线程池标识中找到与目标任务的任务标识符合标识匹配关系的线程池标识,并将满足匹配关系的线程池标识所对应的子资源线程池确定为与上述目标任务对应的目标子资源线程池。
S3、确定上述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值,上述并发线程阈值小于上述目标子资源线程池的并发线程数。
在一些可行的实施方式中,当到达一个新的任务处理请求时,为了保证其对应的目标子资源线程池中有可用的线程资源用于处理上述任务处理请求且使目标子资源线程池的任务承载量不至于因为过大而导致崩溃,可根据终端设备的性能参数确定一个并发线程阈值。其中,上述并发线程阈值用于指示能够保证各个子资源线程池稳定运行的线程资源的数量。可以理解的是,通过查询上述目标子资源线程池中并发执行的线程的数量是否小于上述目标子资源线程池的并发线程阈值,能够确定是否需要触发线程资源分组的操作。
S4、若上述目标子资源线程池中并发执行的线程的数量不小于上述并发线程阈值,则修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数。
在一些可行的实施方式中,若上述目标子资源线程池中并发执行的线程的数量小于上述目标子资源线程池的并发线程阈值,说明上述目标子资源线程池中有充足的线程资源用于执行目标任务,则利用这些空闲的线程资源用于执行上述目标任务。
可选的,在一些可行的实施方式中,若上述目标子资源线程池中并发执行的线程的数量不小于上述目标子资源线程池的并发线程阈值或上述目标子资源线程池中并发执行的线程的数量等于上述目标子资源线程池的并发线程数,则按一定比例减少其他子资源线程池对应的并发线程数,增加上述目标子资源线程池的并发线程数以能够从上述目标子资源线程池中获得用于执行上述目标任务的线程资源。其中,调整后的各个子资源线程池的并发线程数之和等于上述总并发线程数。
举例来说,参见图1b,图1b是本申请实施例提供的线程资源分组的方法的一个应用场景示意图,在一些应用场景中,假设任务数据库中只有两种类型的任务,分别是任务A和任务B,这里使用编号予以区别不同对象,而编号本身没有先后顺序,也不构成在数量上的限定。相应的,在资源线程池中有子资源线程池1和子资源线程池2,且子资源线程池1和子资源线程池2相互独立,线程资源相互隔离。当任务A发出任务处理请求后,利用任务标识A和线程池标识A的对应关系,确定子资源线程池1中的线程资源是用于执行任务A的,因此确定子资源线程池1为任务A的目标子资源线程池,同理,当任务B发出任务处理请求后,利用任务标识B和线程池标识B的对应关系,确定任务子资源线程池2为任务B的目标子资源线程池。其中,资源线程池的总并发线程数为N(假设这里N为偶数),子资源线程池1的并发线程数和并发线程阈值分别为N1和N1’(N1’<N1),子资源线程池2的并发线程数和并发线程阈值分别为N2和N2’(N2’<N2),且满足N=N1+N2。这里,子资源线程池1和子资源线程池2的并发线程数在初始状态时是相同的,即分别为N1=N2=N/2。当观察到上述子资源线程池1中并发执行的线程的数量大于或者等于上述子资源线程池1的并发线程阈值N1’或者上述子资源线程池1中并发执行的线程的数量等于上述子资源线程池1的并发线程数N1,且子资源线程池2中并发执行的线程的数量小于上述子资源线程池2的并发线程阈值N2’时,说明任务A的任务需求量较大,而任务B的任务需求量较小,此时重新调整线程资源的分组。将子资源线程池1的并发线程数适当增大,可重新划分为(N1+M),子资源线程池2的并发线程数适当减小,可重新划分为(N2-M),且资源线程池的总并发线程数始终为N,即N=(N1+M)+(N2-M)。
在本申请实施例中,可基于终端设备的硬件处理能力确定系统中的资源线程池的总并发线程数,再根据实际的业务需求确定子资源线程池的个数,并为各个子资源线程池划分并发线程数。用户通过终端设备的业务操作界面选择需要办理的目标业务,终端设备在接收上述用户所要办理的目标业务所触发的任务处理请求后,通过解析上述任务处理请求中的关键字段所携带的信息可确定出目标任务的任务标识。然后,通过已经建立好的任务标识与各子资源线程池的线程池标识之间的对应关系,确定出负责执行上述目标任务的目标子资源线程池。当目标子资源线程池中并发执行的线程的数量不小于设置的并发线程阈值或并发执行的线程的数量等于并发线程数时,则调整资源分组,将其他子资源线程池中的线程资源划分一部分在目标子资源线程池中用于执行目标任务。本申请实施例提供的方法可监控线程资源的使用情况,实现对资源分组的灵活调整以及详细的资源管理,适用性高。
参见图2a,图2a是本申请实施例提供的线程资源分组的方法的另一流程示意图。本申请实施例提供的线程资源分组的方法可通过如下步骤S21至S25提供的实现方式进行说明:
S21、确定资源线程池的总并发线程数,将上述资源线程池分为多个子资源线程池。
在一些可行的实施方式中,多线程并发常见于包括web服务器和/或其他各种专用服务器的后台多任务并行处理的应用场景中,例如常见的多线程并发应用场景中包括各类服务器的后台多任务并行处理的应用场景。如定时向大量(100w以上)的用户发送邮件,多任务异步处理,多任务的数据分布式计算等。在实际应用场景中,线程数太少或线程数太多都是设置线程池大小时应该避免两类错误。为了充分利用终端设备的硬件资源,提高算法的执行效率和资源的最大利用率,线程池的最佳大小取决于可用处理器的数目以及任务队列中的任务性质。其中,任务性质可以包括CPU密集型任务或者是输入/输出(Input/Ouput,I/O)密集型任务或者是混合型任务。这里,CPU密集的意思是某项任务需要大量的运算,而没有阻塞,因此CPU是一直全速运行的,而I/O密集的意思是某项任务在运行过程在input和output上花费了大量时间,导致CPU的运算能力浪费在等待。
举例来说,若在一个具有M个处理器的系统上只有一个任务队列,其中全部是计算性质的任务,即属于CPU密集型任务,那么在线程池具有M或M+1个线程数时一般会获得最大的CPU利用率;若任务属于I/O密集型任务,比如某些任务需要与其他数据库进行交互,并依赖其他数据库的数值返回结果,那么线程数量应设置得越大,比如设置2M+1个线程数时才能更好的利用CPU。
在一些可行的实施方式中,可以根据预设参数或者随机数将上述资源线程池划分为多个子资源线程池。根据预设参数是由于将某一类型或者具有相似处理流程的业务所触发的任务划分在一个子资源线程池中执行能够实现资源的最大利用率以及资源的集中管理。因此可以根据业务的种类数或者随机数将上述总并发线程数为N的资源线程池划分为n个子资源线程池,其中第n个子资源线程池的并发线程数为Nn,且各个子资源线程池的并发线程数在初始状态时是相同的,即N1=N2=…=Nn=N/n。
可选的,在一些可行的实施方式中,可以根据从历史数据中归纳出的规律去预测某项业务可能会用到的线程资源的数量,然后根据预测结果或者随机数划分的结果,确定各个子资源线程池的并发线程数,然后根据上述各个子资源线程池的并发线程数将上述资源线程池划分为多个子资源线程池。这里,无论是基于哪种方式划分出的N1~Nn,都必须满足N=N1+N2+…+Nn,其中Nn为第n个子资源线程池的并发线程数。
举例来说,在划分子资源线程池的并发线程数时,可以从以下几个角度进行考虑:
任务的优先级,比如根据任务的重要性或者时效性,任务优先级至少包括第一优先级和第二优先级,其中第一优先级高于第二优先级。于是,对于负责处理包含大需求量第一优先级任务的子资源线程池,应该增大其并发线程数的设置,且各子资源线程池的并发线程数之和等于总并发线程数。
任务的执行时间,比如可以将执行时间是1ms的任务视为轻量级任务,将执行时间是1000ms的任务视为重量级任务。虽然重量级任务和轻量级任务对于空闲状态下的线程资源的占用机会是均等的,但是在轻量级任务和重量级任务的数量差不多的情况下,重量级任务占用线程时间的比例要大很多。因此一旦出现重量级任务抢占了子资源线程池中的所有线程时,就会出现轻量级任务得不到调度处理的情况,这样会使得累积在阻塞等待队列中的任务越来越多,占用的内存也越来越大,最后导致任务拥塞或者服务器崩溃。因此对于负责处理重量级任务较多的子资源线程池,应该增大其并发线程数的设置,且各子资源线程池的并发线程数之和等于总并发线程数。
S22、当接收到目标业务触发的任务处理请求时,从上述多个子资源线程池中确定出与目标任务对应的目标子资源线程池。
在一些可行的实施方式中,从任务数据库中获取至少两种任务类型,上述至少两种任务类型中同一任务类型的任务由同一任务标识标记。例如,任务类型可以包括计算型任务、通信型任务、查询型任务、搜索型任务等。其中,任务标识可以是从任务类型的特征或者执行任务的算法中提取出的关键字符或者是无特殊意义的字符。例如,任务标识可以是从上述任务类型中提取出的关键字符“计算”、“通信”、“查询”、“搜索”或者是无特殊意义的字符“1”、“2”、“3”、“4”。
在一些可行的实施方式中,由于将某一类型或者具有相似处理流程的业务所触发的任务划分在一个子资源线程池中执行能够实现资源的最大利用率以及资源的集中管理。因此线程池标识可以是从各个子资源线程池中负责执行的一系列任务的特征或者算法中提取出来的关键字符或者是无特殊意义的字符,且线程池标识用于唯一区分负责处理不同任务的子资源线程池。例如,线程池标识可以是关键字符“计算”、“通信”、“查询”、“搜索”或者是无特殊意义的字符“a”、“b”、“c”、“d”。
在一些可行的实施方式中,当上述任务标识和线程池标识是从任务的特征或者算法中提取出来的关键字符时,在接收上述目标任务后,为了确定与上述目标任务对应的目标子资源线程池,需要对所有的线程池标识进行遍历,然后通过将遍历到的线程池标识与目标任务的任务标识进行标识匹配,最后将匹配成功的线程池标识所对应的子资源线程池确定为目标任务所对应的目标子资源线程池。
举例来说,假设在即时通讯类软件中只有两种类型的任务,分别是查询型任务和通信型任务,且上述两种类型的任务将分别放在两个子资源线程池中执行。根据任务的特征或者算法,提取关键字符“查询”和“通信”分别作为上述查询型任务和通信型任务的任务标识。相应的,将负责处理这两类任务的子资源线程池的线程池标识也分别设置为“查询”和“通信”。于是,在接收一个新的通信任务后,可以遍历得到所有的线程池标识分别有“查询”和“通信”,然后利用上述新的通信任务的任务标识“通信”分别和遍历得到的线程池标识“查询”和“通信”进行匹配。可以理解的是,当上述新的通信任务的任务标识“通信”与遍历到的线程池标识“查询”进行匹配时,将匹配失败;当上述新的通信任务的任务标识“通信”与遍历到的线程池标识“通信”进行匹配时,匹配成功,于是将线程池标识“通信”所指代的子资源线程池确定为上述新的通信任务的目标子资源线程池。
可选的,在一些可行的实施方式中,子资源线程池所负责执行的一系列任务可能没有相似的特征。因此,当上述任务标识和线程池标识是无特殊意义的字符时,为了确定与目标任务对应的目标子资源线程池,需要事先建立一个任务标识与线程池标识的映射表,然后在接收目标任务后,根据上述目标任务的任务标识查找上述映射表以此找出与之对应的线程池标识,最后将上述线程池标识对应的子资源线程池确定为与上述目标任务对应的目标子资源线程池。
举例来说,假设有三种类型的任务分别是类型1,类型2,类型3,且上述三种类型的任务将分别放在三个子资源线程池中执行。于是,将这三种类型的任务的任务标识分别设置为1,2,3,将负责执行这三种类型的任务的子资源线程池的线程池标识分别设置为a,b,c,为了建立任务标识与线程池标识之间的关系,设置一个映射表,在映射表中,线程池标识a对应任务标识1,线程池标识b对应任务标识2,线程池标识c对应任务标识3。其中,无论是线程池标识还是任务标识,都是用于唯一标识子资源线程池和任务类型的。于是,当接收到一个新的属于类型1的任务时,根据类型1的任务标识1查询上述建立的映射表,可以找到任务标识1对应的线程池标识a,从而确定线程池标识a所指代的子资源线程池为上述任务为类型1的任务的目标子资源线程池。
S23、确定上述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值。
在一些可行的实施方式中,当到达一个新的任务处理请求时,为了保证其对应的目标子资源线程池中有可用的线程资源用于处理上述任务处理请求且使目标子资源线程池的任务承载量不至于因为过大而导致崩溃,可根据终端设备的性能参数确定一个并发线程阈值。其中,上述并发线程阈值用于指示能够保证各个子资源线程池稳定运行的线程资源的数量。可以理解的是,通过查询上述目标子资源线程池中并发执行的线程的数量是否小于上述目标子资源线程池的并发线程阈值,能够确定是否需要触发线程资源分组的操作。
S24、若上述目标子资源线程池中并发执行的线程的数量不小于上述并发线程阈值,则修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数。
在一些可行的实施方式中,若上述目标子资源线程池中并发执行的线程的数量小于上述目标子资源线程池的并发线程阈值,说明上述目标子资源线程池中有充足的线程资源用于执行目标任务,则利用这些空闲的线程资源用于执行上述目标任务。
可选的,在一些可行的实施方式中,若上述目标子资源线程池中并发执行的线程的数量不小于上述目标子资源线程池的并发线程阈值或上述目标子资源线程池中并发执行的线程的数量等于上述目标子资源线程池的并发线程数,则按一定比例减少其他子资源线程池对应的并发线程数,增加上述目标子资源线程池的并发线程数以能够从上述目标子资源线程池中获得用于执行上述目标任务的线程资源。其中,调整后的各个子资源线程池的并发线程数之和等于上述总并发线程数。
S25、若上述目标子资源线程池中并发执行的线程的数量等于上述目标子资源线程池的并发线程数,则记录上述目标子资源线程池的任务排队数和上述目标任务的阻塞等待时间,修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数。
在一些可行的实施方式中,若上述目标子资源线程池中并发执行的线程的数量不等于上述目标子资源线程池的并发线程数,说明上述目标子资源线程池中有充足的线程资源用于执行目标任务,则利用这些空闲的线程资源用于执行上述目标任务,可以理解的是,由于任一子资源线程池的并发线程数用于指示上述任一子资源线程池中可用的线程资源的数量,因此上述目标子资源线程池中并发执行的线程的数量不可能大于上述目标子资源线程池的并发线程数。
可选的,在一些可行的实施方式中,由于触发线程资源分组的操作也需要花费时间开销和消耗系统资源,因此,在一些可行的实施方式中,当上述目标子资源线程池中并发执行的线程的数量等于上述目标子资源线程池的并发线程数时,不会立即执行线程资源的重新分组,而是先进入等待状态,并记录上述目标子资源线程池的任务排队数和上述目标任务的阻塞等待时间。其中,上述任务排队数是指上述目标任务到达上述目标子资源线程池时在上述目标任务之前等待调用线程资源的任务的数量,上述阻塞等待时间是指上述目标任务从到达目标子资源线程池时至开始获得线程资源用于执行上述目标任务的这段时间。当上述任务排队数大于或者等于任务排队数阈值和/或阻塞等待时间大于或者等于上述阻塞等待时间阈值时,增加上述目标子资源线程池的并发线程数以增加上述目标子资源线程池的并发线程数所指示的线程资源的数量,减少除去上述目标子资源线程池之外的其他子资源线程池的并发线程数以减少上述其他子资源线程池的并发线程数所指示的线程资源的数量。其中,上述目标子资源线程池和上述其他子资源线程池对应的并发线程数之和等于上述总并发线程数,上述任务排队数阈值和阻塞等待时间阈值由终端设备的性能配置参数确定。可选的,上述减少除去上述目标子资源线程池之外的其他子资源线程池的并发线程数包括将除上述目标子资源线程池之外的其他所有子资源线程池都减少一定比例的并发线程数或者只选择除上述目标子资源线程池之外的其他部分子资源线程池减少一定比例的并发线程数,具体可根据实际应用场景确定,在此不做限制。
举例来说,参见图2b,图2b是本申请实施例提供的线程资源分组的方法的另一应用场景示意图,假设有一个总并发线程数为15的资源线程池,上述总并发线程数15用于指示上述资源线程池中有15个可用的线程资源数量用于执行包括保险类、理财类、贷款类、投资类、银行类等不同类型的业务所触发的任务处理请求,上述任务处理请求包括处理任务和关键字段。其中,上述各类型的处理任务的任务标识分别是“保险”、“理财”、“贷款”、“投资”、“银行”。可以理解的是,为了实现资源的最大利用率以及资源的集中管理,可将上述资源线程池分别对应上述业务类型划分成5个并发线程数分别为3的子资源线程池,其中,各子资源线程池的线程池标识也可以分别是“保险”、“理财”、“贷款”、“投资”、“银行”。在标识匹配关系中,相同的任务标识和相同的线程池标识之间是唯一匹配且一一对应,比如任务标识“保险”只有和线程池标识“保险”进行标识匹配时,才能够匹配成功。
当终端设备获取到一个新的贷款类任务处理请求后,则对上述贷款类任务处理请求进行解析,上述贷款类任务处理请求包括贷款类任务和关键字段,其中,贷款类任务即是目标任务。通过解析可得到贷款类任务处理请求中关键字段里所携带的关于贷款类任务的任务标识信息,根据上述信息确定贷款类任务的任务标识为“贷款”。然后利用上述新的贷款类任务的任务标识“贷款”分别和遍历得到的线程池标识”保险”、“理财”、“贷款”、“投资”、“银行”进行匹配。可以理解的是,当上述新的贷款类任务的任务标识“贷款”与遍历到的线程池标识”保险”、“理财”、“投资”、“银行”分别进行匹配时,将匹配失败;只有当上述新的贷款类任务的任务标识“贷款”与遍历到的线程池标识“贷款”进行匹配时,匹配成功,于是将线程池标识“贷款”所指代的子资源线程池3确定为上述新的贷款类任务的目标子资源线程池。当上述子资源线程池3中并发执行的线程的数量等于上述子资源线程池3的并发线程数3时,上述新的贷款类任务将进入等待状态,并记录上述子资源线程池3的任务排队数和上述新的贷款类任务的阻塞等待时间,当上述任务排队数大于或者等于任务排队数阈值和/或阻塞等待时间大于或者等于上述阻塞等待时间阈值,且除子资源线程池3之外的其他子资源线程池1、子资源线程池2、子资源线程池4、子资源线程池5的并发执行的线程的数量不等于其各自的并发线程数时,触发线程资源分组的操作。在一些可行的实施方式中,可将除子资源线程池3之外的其他所有子资源线程池都减少一定比例的并发线程数,即将子资源线程池3的并发线程数重新划分为7,将子资源线程池1、子资源线程池2、子资源线程池4、子资源线程池5的并发线程数分别重新划分为2,2,2,2,这里依然满足上述目标子资源线程池和上述其他子资源线程池对应的并发线程数之和等于上述总并发线程数,即15=2+2+7+2+2。在一些可行的实施方式中,可将除子资源线程池3之外的其他部分子资源线程池减少一定比例的并发线程数,即将子资源线程池3的并发线程数重新划分为7,将子资源线程池4和子资源线程池5的并发线程数分别重新划分为1和1,这里依然满足上述目标子资源线程池和上述其他子资源线程池对应的并发线程数之和等于上述总并发线程数,即15=3+3+7+1+1。
在本申请实施例中,可基于终端设备的硬件处理能力确定系统中的资源线程池的总并发线程数,再根据实际的业务需求确定子资源线程池的个数,并为各个子资源线程池划分并发线程数。用户通过终端设备的业务操作界面选择需要办理的目标业务,终端设备获取到上述用户所要办理的目标业务所触发的任务处理请求后,通过解析上述任务处理请求中的关键字段所携带的信息可确定出目标任务的任务标识。然后,通过已经建立好的任务标识与各子资源线程池的线程池标识之间的对应关系,确定出负责执行上述目标任务的目标子资源线程池。当目标子资源线程池中并发执行的线程的数量不小于设置的并发线程阈值或者并发执行的线程的数量等于并发线程数且任务排队数不小于排队数阈值和/或阻塞等待时间不小于阻塞等待时间阈值时,则调整资源分组,将其他子资源线程池中的线程资源划分一部分在目标子资源线程池中用于执行目标任务。本申请实施例提供的方法可监控线程资源的使用情况,实现对资源分组的灵活调整以及详细的资源管理,适用性高。
参见图3,图3是本申请实施例提供的线程资源分组的装置的结构示意图。本申请实施例提供的线程资源分组的装置包括:
确定单元31,用于确定资源线程池的总并发线程数,将上述资源线程池分为多个子资源线程池,其中各个子资源线程池的并发线程数之和等于上述总并发线程数,其中,任一子资源线程池的并发线程数用于指示上述任一子资源线程池中可用的线程资源的数量。
匹配单元32,用于当接收到目标业务触发的任务处理请求时,从上述确定单元31划分的上述多个子资源线程池中确定出与目标任务对应的目标子资源线程池。
判断单元33,用于确定上述匹配单元32确定的上述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值,上述并发线程阈值小于上述目标子资源线程池的并发线程数。
分组调整单元34,用于若上述目标子资源线程池中并发执行的线程的数量不小于上述并发线程阈值,则修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数以从上述目标子资源线程池中获得用于执行上述目标任务的线程资源。
在一些可行的实施方式中,上述匹配单元32用于:
根据上述任务处理请求获取目标任务的任务标识,其中,同一任务类型的任务由同一任务标识标记;
获取上述各个子资源线程池的线程池标识,其中,任一子资源线程池的线程池标识用于确定上述任一子资源线程池中的线程资源用于执行的任务;
根据上述任务标识与上述各个子资源线程池的线程池标识之间的对应关系,从上述各个子资源线程池的线程池标识中确定出与上述任务标识对应的目标线程池标识,将上述目标线程池标识对应的子资源线程池确定为与上述目标任务对应的目标子资源线程池。
在一些可行的实施方式中,上述分组调整单元34,还用于:
若上述目标子资源线程池中并发执行的线程的数量等于上述目标子资源线程池的并发线程数,则记录上述目标子资源线程池的任务排队数和上述目标任务的阻塞等待时间;
当上述任务排队数大于或者等于任务排队数阈值和/或上述目标任务的阻塞等待时间大于或者等于阻塞等待时间阈值时,修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数以从上述目标子资源线程池中获得用于执行上述目标任务的线程资源,其中,上述任务排队数阈值和上述阻塞等待时间阈值由终端设备的性能配置参数确定。
在一些可行的实施方式中,上述分组调整单元34,还用于:
增加上述目标子资源线程池的并发线程数以增加上述目标子资源线程池的并发线程数所指示的线程资源的数量;
减少除去上述目标子资源线程池之外的其他子资源线程池的并发线程数以减少上述其他子资源线程池的并发线程数所指示的线程资源的数量;
其中,上述目标子资源线程池和上述其他子资源线程池对应的并发线程数之和等于上述总并发线程数。
在一些可行的实施方式中,上述确定单元31用于:
根据终端设备的中央处理器CPU参数确定资源线程池的总并发线程数。
在一些可行的实施方式中,上述确定单元31用于:
根据预设参数或者随机数将上述资源线程池划分为多个子资源线程池,其中各个子资源线程池的并发线程数相同;或者
根据预设参数或者随机数确定各个子资源线程池的并发线程数,并根据上述各个子资源线程池的并发线程数将上述资源线程池划分为多个子资源线程池。
具体实现中,上述线程资源分组装置可通过其内置的各个功能模块执行如上述图1至图2中各个步骤所提供的实现方式。例如,上述确定单元31可用于执行上述各个步骤中确定资源线程池的总并发线程数,以及划分子资源线程池等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述匹配单元32可用于执行上述各个步骤中接收目标业务触发的任务处理请求、确定目标任务对应的目标子资源线程池等相关步骤所描述的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述判断单元33可用于执行上述各个步骤中确定并发执行的线程的数量是否小于并发线程阈值、确定并发执行的线程的数量是否等于并发线程数以及确定任务排队数是否小于任务排队数阈值和/或阻塞等待时间是否小于上述阻塞等待时间阈值等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述分组调整单元可用于执行上述各个步骤中修改上述各个子资源线程池对应的并发线程数等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本申请实施例中,线程资源分组的装置可基于终端设备的硬件处理能力确定系统中的资源线程池的总并发线程数,再根据实际的业务需求确定子资源线程池的个数,并为各个子资源线程池划分并发线程数。用户通过终端设备的业务操作界面选择需要办理的目标业务,终端设备获取到上述用户所要办理的目标业务所触发的任务处理请求后,通过解析上述任务处理请求中的关键字段所携带的信息可确定出目标任务的任务标识。然后,通过已经建立好的任务标识与各子资源线程池的线程池标识之间的对应关系,确定出负责执行上述目标任务的目标子资源线程池。当目标子资源线程池中并发执行的线程的数量不小于设置的并发线程阈值,和/或等待调用目标子资源线程池中的线程资源的任务的任务排队数不小于设置的任务排队数阈值,和/或目标任务等待调用目标子资源线程池中的线程资源的阻塞等待时间不小于设置的阻塞等待阈值时,则调整线程资源的资源分组,,将其他子资源线程池中的线程资源划分一部分至目标子资源线程池中用于执行目标任务。本申请实施例提供的方法可监控线程资源的使用情况,实现对资源分组的灵活调整以及详细的资源管理,灵活性高,适用范围广。
参见图4,图4是本申请实施例提供的终端设备的结构示意图。如图4所示,本实施例中的终端设备可以包括:一个或多个处理器401和存储器402。上述处理器401和存储器402通过总线403连接。存储器402用于存储计算机程序,该计算机程序包括程序指令,处理器401用于执行存储器402存储的程序指令,执行如下操作:
确定资源线程池的总并发线程数,将上述资源线程池分为多个子资源线程池,其中各个子资源线程池的并发线程数之和等于上述总并发线程数,其中,任一子资源线程池的并发线程数用于指示上述任一子资源线程池中可用的线程资源的数量;
当接收到目标业务触发的任务处理请求时,从上述多个子资源线程池中确定出与目标任务对应的目标子资源线程池;
确定上述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值,上述并发线程阈值小于上述目标子资源线程池的并发线程数;
若上述目标子资源线程池中并发执行的线程的数量不小于上述并发线程阈值,则修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数以从上述目标子资源线程池中获得用于执行上述目标任务的线程资源。
在一些可行的实施方式中,上述处理器401用于:
获取上述目标任务的任务标识,其中,同一任务类型的任务由同一任务标识标记;
获取上述各个子资源线程池的线程池标识,其中,任一子资源线程池的线程池标识用于确定上述任一子资源线程池中的线程资源用于执行的任务;
根据上述任务标识与上述各个子资源线程池的线程池标识之间的对应关系,从上述各个子资源线程池的线程池标识中确定出与上述任务标识对应的目标线程池标识,将上述目标线程池标识对应的子资源线程池确定为与上述目标任务对应的目标子资源线程池。
在一些可行的实施方式中,上述处理器401用于:
若上述目标子资源线程池中并发执行的线程的数量等于上述目标子资源线程池的并发线程数,则记录上述目标子资源线程池的任务排队数和上述目标任务的阻塞等待时间;
当上述任务排队数大于或者等于任务排队数阈值和/或阻塞等待时间大于或者等于上述阻塞等待时间阈值时,修改上述各个子资源线程池对应的并发线程数并增加上述目标子资源线程池的并发线程数以从上述目标子资源线程池中获得用于执行上述目标任务的线程资源,其中,上述任务排队数阈值和阻塞等待时间阈值由终端设备的性能配置参数确定。
在一些可行的实施方式中,上述处理器401用于:
增加上述目标子资源线程池的并发线程数以增加上述目标子资源线程池的并发线程数所指示的线程资源的数量;
减少除去上述目标子资源线程池之外的其他子资源线程池的并发线程数以减少上述其他子资源线程池的并发线程数所指示的线程资源的数量;
其中,上述目标子资源线程池和上述其他子资源线程池对应的并发线程数之和等于上述总并发线程数。
在一些可行的实施方式中,上述处理器401用于:
根据终端设备的CPU参数确定资源线程池的总并发线程数。
在一些可行的实施方式中,上述处理器401用于:
根据总并发线程数的算术平均值或者随机数或者根据人工经验或者根据运营数据预测结果划分上述多个子资源线程池的并发线程数。
应当理解,在一些可行的实施方式中,上述处理器401可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器402可以包括只读存储器和随机存取存储器,并向处理器401提供指令和数据。存储器402的一部分还可以包括非易失性随机存取存储器。例如,存储器402还可以存储设备类型的信息。
具体实现中,上述终端设备可通过其内置的各个功能模块执行如上述图1a至图2a中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本申请实施例中,终端设备可基于终端设备的硬件处理能力确定系统中的资源线程池的总并发线程数,再根据实际的业务需求确定子资源线程池的个数,并为各个子资源线程池划分并发线程数。用户通过终端设备的业务操作界面选择需要办理的目标业务,终端设备获取到上述用户所要办理的目标业务所触发的任务处理请求后,通过解析上述任务处理请求中的关键字段所携带的信息可确定出目标任务的任务标识。然后,通过已经建立好的任务标识与各子资源线程池的线程池标识之间的对应关系,确定出负责执行上述目标任务的目标子资源线程池。当目标子资源线程池中并发执行的线程的数量不小于设置的并发线程阈值,和/或等待调用目标子资源线程池中的线程资源的任务的任务排队数不小于设置的任务排队数阈值,和/或目标任务等待调用目标子资源线程池中的线程资源的阻塞等待时间不小于设置的阻塞等待阈值时,则调整线程资源的资源分组,将其他子资源线程池中的线程资源划分一部分至目标子资源线程池中用于执行目标任务。本申请实施例提供的方法可监控线程资源的使用情况,实现对资源分组的灵活调整以及详细的资源管理,灵活性高,适用范围广。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图1a至图2b中各个步骤所提供的线程资源分组的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的线程资源分组装置或者上述终端设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种线程资源分组的方法,其特征在于,所述方法包括:
确定资源线程池的总并发线程数,将所述资源线程池分为多个子资源线程池,其中各个子资源线程池的并发线程数之和等于所述总并发线程数,任一子资源线程池的并发线程数用于指示所述任一子资源线程池中可用的线程资源的数量;
当接收到目标业务触发的任务处理请求时,从所述多个子资源线程池中确定出与目标任务对应的目标子资源线程池;
确定所述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值,所述并发线程阈值小于所述目标子资源线程池的并发线程数;
若所述目标子资源线程池中并发执行的线程的数量不小于所述并发线程阈值,则修改所述各个子资源线程池对应的并发线程数并增加所述目标子资源线程池的并发线程数以从所述目标子资源线程池中获得用于执行所述目标任务的线程资源。
2.根据权利要求1所述方法,其特征在于,所述从所述多个子资源线程池中确定出与目标任务对应的目标子资源线程池包括:
根据所述任务处理请求获取目标任务的任务标识,其中,同一任务类型的任务由同一任务标识标记;
获取所述各个子资源线程池的线程池标识,其中,任一子资源线程池的线程池标识用于确定所述任一子资源线程池中的线程资源用于执行的任务;
根据所述任务标识与所述各个子资源线程池的线程池标识之间的对应关系,从所述各个子资源线程池的线程池标识中确定出与所述任务标识对应的目标线程池标识,将所述目标线程池标识对应的子资源线程池确定为与所述目标任务对应的目标子资源线程池。
3.根据权利要求1或2所述方法,其特征在于,所述方法还包括:
若所述目标子资源线程池中并发执行的线程的数量等于所述目标子资源线程池的并发线程数,则记录所述目标子资源线程池对应的任务排队数和所述目标任务的阻塞等待时间;
当所述任务排队数大于或者等于任务排队数阈值和/或所述目标任务的阻塞等待时间大于或者等于阻塞等待时间阈值时,修改所述各个子资源线程池对应的并发线程数并增加所述目标子资源线程池的并发线程数以从所述目标子资源线程池中获得用于执行所述目标任务的线程资源,其中,所述任务排队数阈值和所述阻塞等待时间阈值由终端设备的性能配置参数确定。
4.根据权利要求1-3任一项所述方法,其特征在于,所述修改所述各个子资源线程池对应的并发线程数并增加所述目标子资源线程池的并发线程数包括:
增加所述目标子资源线程池的并发线程数以增加所述目标子资源线程池的并发线程数所指示的线程资源的数量;
减少除去所述目标子资源线程池之外的其他子资源线程池的并发线程数以减少所述其他子资源线程池的并发线程数所指示的线程资源的数量;
其中,所述目标子资源线程池和所述其他子资源线程池对应的并发线程数之和等于所述总并发线程数。
5.根据权利要求1-4任一项所述方法,其特征在于,所述确定资源线程池的总并发线程数包括:
根据终端设备的中央处理器CPU参数确定资源线程池的总并发线程数。
6.根据权利要求1-5任一项所述方法,其特征在于,所述将所述资源线程池分为多个子资源线程池包括:
根据预设参数或者随机数将所述资源线程池划分为多个子资源线程池,其中各个子资源线程池的并发线程数相同;或者
根据预设参数或者随机数确定各个子资源线程池的并发线程数,并根据所述各个子资源线程池的并发线程数将所述资源线程池划分为多个子资源线程池。
7.一种线程资源分组的装置,其特征在于,所述装置包括:
确定单元,用于确定资源线程池的总并发线程数,将所述资源线程池分为多个子资源线程池,其中各个子资源线程池的并发线程数之和等于所述总并发线程数,任一子资源线程池的并发线程数用于指示所述任一子资源线程池中可用的线程资源的数量;
匹配单元,用于当接收到目标业务触发的任务处理请求时,从所述确定单元划分的所述多个子资源线程池中确定出与目标任务对应的目标子资源线程池;
判断单元,用于确定所述匹配单元确定的所述目标子资源线程池中并发执行的线程的数量是否小于并发线程阈值,所述并发线程阈值小于所述目标子资源线程池的并发线程数;
分组调整单元,用于若所述目标子资源线程池中并发执行的线程的数量不小于所述并发线程阈值,则修改所述各个子资源线程池对应的并发线程数并增加所述目标子资源线程池的并发线程数以从所述目标子资源线程池中获得用于执行所述目标任务的线程资源。
8.根据权利要求7所述装置,其特征在于,所述分组调整单元,还用于:
在所述目标子资源线程池中并发执行的线程的数量等于所述目标子资源线程池的并发线程数时,记录所述目标子资源线程池的任务排队数和所述目标任务的阻塞等待时间;
当所述任务排队数大于或者等于任务排队数阈值和/或阻塞等待时间大于或者等于所述阻塞等待时间阈值时,修改所述各个子资源线程池对应的并发线程数并增加所述目标子资源线程池的并发线程数以从所述目标子资源线程池中获得用于执行所述目标任务的线程资源,其中,所述任务排队数阈值和阻塞等待时间阈值由终端设备的性能配置参数确定。
9.一种终端设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-6任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811541911.XA CN109710400A (zh) | 2018-12-17 | 2018-12-17 | 线程资源分组的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811541911.XA CN109710400A (zh) | 2018-12-17 | 2018-12-17 | 线程资源分组的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109710400A true CN109710400A (zh) | 2019-05-03 |
Family
ID=66256792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811541911.XA Pending CN109710400A (zh) | 2018-12-17 | 2018-12-17 | 线程资源分组的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710400A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222016A (zh) * | 2019-05-20 | 2019-09-10 | 平安银行股份有限公司 | 一种文件处理方法及装置 |
CN110308979A (zh) * | 2019-06-27 | 2019-10-08 | 苏宁消费金融有限公司 | 基于任务调度的异步处理框架及其实现方法 |
CN110515710A (zh) * | 2019-08-06 | 2019-11-29 | 深圳市随手科技有限公司 | 异步任务调度方法、装置、计算机设备和存储介质 |
CN110569123A (zh) * | 2019-07-31 | 2019-12-13 | 苏宁云计算有限公司 | 线程分配方法、装置、计算机设备和存储介质 |
CN110795222A (zh) * | 2019-10-25 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种多线程任务调度方法、装置、设备及可读介质 |
CN111274038A (zh) * | 2020-01-22 | 2020-06-12 | 恩亿科(北京)数据科技有限公司 | 数据处理方法和装置、电子设备及计算机可读存储介质 |
CN111797074A (zh) * | 2020-07-03 | 2020-10-20 | 中国建设银行股份有限公司 | 一种数据库连接方法、装置、电子设备和可读存储介质 |
CN112000455A (zh) * | 2020-09-10 | 2020-11-27 | 华云数据控股集团有限公司 | 一种多线程任务处理方法、装置及电子设备 |
CN112148465A (zh) * | 2019-06-26 | 2020-12-29 | 维塔科技(北京)有限公司 | 资源分配方法和装置,电子设备及存储介质 |
CN112187663A (zh) * | 2020-09-17 | 2021-01-05 | 刘小霞 | 基于通信负载的数据传输方法、装置及系统 |
CN112650566A (zh) * | 2020-12-21 | 2021-04-13 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN112882818A (zh) * | 2021-03-30 | 2021-06-01 | 中信银行股份有限公司 | 任务动态调整方法、装置以及设备 |
CN113905273A (zh) * | 2021-09-29 | 2022-01-07 | 上海阵量智能科技有限公司 | 任务执行方法和设备 |
CN118051346A (zh) * | 2024-04-11 | 2024-05-17 | 恒生电子股份有限公司 | 请求动态限流方法、装置、电子设备和可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050086359A1 (en) * | 2003-10-16 | 2005-04-21 | International Business Machines Corporation | Monitoring thread usage to dynamically control a thread pool |
CN103870337A (zh) * | 2014-02-28 | 2014-06-18 | 浪潮集团山东通用软件有限公司 | 一种基于seda的esb组件实现方法 |
CN107818016A (zh) * | 2017-11-22 | 2018-03-20 | 苏州麦迪斯顿医疗科技股份有限公司 | 服务器应用程序设计方法、请求事件处理方法及装置 |
CN107948092A (zh) * | 2017-11-22 | 2018-04-20 | 用友金融信息技术股份有限公司 | 实时数据采集方法和实时数据采集系统 |
CN108052396A (zh) * | 2017-11-27 | 2018-05-18 | 深圳市恒扬数据股份有限公司 | 一种资源分配方法及系统 |
-
2018
- 2018-12-17 CN CN201811541911.XA patent/CN109710400A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050086359A1 (en) * | 2003-10-16 | 2005-04-21 | International Business Machines Corporation | Monitoring thread usage to dynamically control a thread pool |
CN103870337A (zh) * | 2014-02-28 | 2014-06-18 | 浪潮集团山东通用软件有限公司 | 一种基于seda的esb组件实现方法 |
CN107818016A (zh) * | 2017-11-22 | 2018-03-20 | 苏州麦迪斯顿医疗科技股份有限公司 | 服务器应用程序设计方法、请求事件处理方法及装置 |
CN107948092A (zh) * | 2017-11-22 | 2018-04-20 | 用友金融信息技术股份有限公司 | 实时数据采集方法和实时数据采集系统 |
CN108052396A (zh) * | 2017-11-27 | 2018-05-18 | 深圳市恒扬数据股份有限公司 | 一种资源分配方法及系统 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222016A (zh) * | 2019-05-20 | 2019-09-10 | 平安银行股份有限公司 | 一种文件处理方法及装置 |
CN110222016B (zh) * | 2019-05-20 | 2023-08-22 | 平安银行股份有限公司 | 一种文件处理方法及装置 |
CN112148465A (zh) * | 2019-06-26 | 2020-12-29 | 维塔科技(北京)有限公司 | 资源分配方法和装置,电子设备及存储介质 |
WO2020259289A1 (zh) * | 2019-06-26 | 2020-12-30 | 维塔科技(北京)有限公司 | 资源分配方法和装置,电子设备及存储介质 |
CN110308979A (zh) * | 2019-06-27 | 2019-10-08 | 苏宁消费金融有限公司 | 基于任务调度的异步处理框架及其实现方法 |
CN110569123A (zh) * | 2019-07-31 | 2019-12-13 | 苏宁云计算有限公司 | 线程分配方法、装置、计算机设备和存储介质 |
CN110569123B (zh) * | 2019-07-31 | 2022-08-02 | 苏宁云计算有限公司 | 线程分配方法、装置、计算机设备和存储介质 |
CN110515710A (zh) * | 2019-08-06 | 2019-11-29 | 深圳市随手科技有限公司 | 异步任务调度方法、装置、计算机设备和存储介质 |
CN110795222B (zh) * | 2019-10-25 | 2022-03-22 | 北京浪潮数据技术有限公司 | 一种多线程任务调度方法、装置、设备及可读介质 |
CN110795222A (zh) * | 2019-10-25 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种多线程任务调度方法、装置、设备及可读介质 |
CN111274038A (zh) * | 2020-01-22 | 2020-06-12 | 恩亿科(北京)数据科技有限公司 | 数据处理方法和装置、电子设备及计算机可读存储介质 |
CN111797074A (zh) * | 2020-07-03 | 2020-10-20 | 中国建设银行股份有限公司 | 一种数据库连接方法、装置、电子设备和可读存储介质 |
CN112000455A (zh) * | 2020-09-10 | 2020-11-27 | 华云数据控股集团有限公司 | 一种多线程任务处理方法、装置及电子设备 |
CN112187663A (zh) * | 2020-09-17 | 2021-01-05 | 刘小霞 | 基于通信负载的数据传输方法、装置及系统 |
CN112650566A (zh) * | 2020-12-21 | 2021-04-13 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN112650566B (zh) * | 2020-12-21 | 2022-03-22 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN112882818A (zh) * | 2021-03-30 | 2021-06-01 | 中信银行股份有限公司 | 任务动态调整方法、装置以及设备 |
CN113905273A (zh) * | 2021-09-29 | 2022-01-07 | 上海阵量智能科技有限公司 | 任务执行方法和设备 |
CN113905273B (zh) * | 2021-09-29 | 2024-05-17 | 上海阵量智能科技有限公司 | 任务执行方法和设备 |
CN118051346A (zh) * | 2024-04-11 | 2024-05-17 | 恒生电子股份有限公司 | 请求动态限流方法、装置、电子设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710400A (zh) | 线程资源分组的方法及装置 | |
CN109783229A (zh) | 线程资源分配的方法及装置 | |
CN104317650B (zh) | 一种面向Map/Reduce型海量数据处理平台的作业调度方法 | |
CN104618693B (zh) | 一种基于云计算的监控视频在线处理任务管理方法及系统 | |
CN110163474A (zh) | 一种任务分配的方法及设备 | |
CN105450618B (zh) | 一种api服务器处理大数据的运算方法及其系统 | |
CN110442451B (zh) | 一种面向深度学习的多类型gpu集群资源管理调度方法和系统 | |
US5924097A (en) | Balanced input/output task management for use in multiprocessor transaction processing system | |
CN108062672A (zh) | 一种基于区块链智能合约的流程调度方法 | |
CN109471727A (zh) | 一种任务处理方法、装置及系统 | |
CN108287756A (zh) | 一种处理任务的方法及装置 | |
CN110113387A (zh) | 一种基于分布式批量处理系统的处理方法、装置及系统 | |
CN109144731A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN106897810A (zh) | 业务处理方法和系统、工作流引擎和系统、业务系统 | |
CN107526645B (zh) | 一种通信优化方法及系统 | |
CN107046508A (zh) | 报文接收方法及网络设备 | |
CN110222005A (zh) | 用于异构架构的数据处理系统及其方法 | |
CN102541640A (zh) | 一种集群gpu资源调度系统和方法 | |
CN110046039A (zh) | 任务调度方法及系统、调度中心服务器和存储介质 | |
CN108090731A (zh) | 一种信息处理方法及设备 | |
CN110018892A (zh) | 基于线程资源的任务处理方法及相关装置 | |
CN108667867A (zh) | 数据存储方法及装置 | |
CN103136047B (zh) | 一种多线程管理方法及架构 | |
CN103294556B (zh) | 用于主机系统准入控制的方法和系统 | |
CN107515784A (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 | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20240507 |