CN115827200A - 一种线程池管理的方法和装置 - Google Patents
一种线程池管理的方法和装置 Download PDFInfo
- Publication number
- CN115827200A CN115827200A CN202211569564.8A CN202211569564A CN115827200A CN 115827200 A CN115827200 A CN 115827200A CN 202211569564 A CN202211569564 A CN 202211569564A CN 115827200 A CN115827200 A CN 115827200A
- Authority
- CN
- China
- Prior art keywords
- executed
- task
- pool
- label
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种线程池管理的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收客户端提交的待执行任务;将所述待执行任务分配至线程池中的预处理池中,获取所述待执行任务的指标数据;根据所述指标数据确定所述待执行任务对应的标签;将所述待执行任务分配至所述线程池中与所述标签对应的响应池中。该实施方式能够实现将待执行任务分配至标签对应的响应池中,实现不同标签的待执行任务的相互隔离执行,并可以实现动态调整待执行任务对应的标签,从而实现资源的合理利用,提高系统的安全性和可靠性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种线程池管理的方法和装置。
背景技术
随着互联网技术的高速发展,应用系统的访问需求量越来越大,对应用系统的并发处理能力的要求也越来越高。采用多线程技术可以最大程度利用CPU多核能力,提高系统并行运算处理能力。
线程池技术通过预先创建线程,可以省去频繁和销毁线程对系统性能的影响。线程池技术的应用方案包括全局共享池化技术。全局共享池化方案中,应用服务共用一个线程池,当线程出现阻塞时容易导致线程池资源耗尽而无法及时响应,并发情况下易出现集群服务不可用,出现雪崩现象。
发明内容
有鉴于此,本发明实施例提供一种线程池管理的方法和装置,能够实现将待执行任务分配至标签对应的响应池中,实现不同标签的待执行任务的相互隔离执行,并可以实现动态调整待执行任务对应的标签,从而实现资源的合理利用,提高系统运行的安全性和可靠性。
为实现上述目的,根据本发明实施例的一个方面,提供了一种线程池管理的方法,包括:
接收客户端提交的待执行任务;
将所述待执行任务分配至线程池中的预处理池中,获取所述待执行任务的指标数据;
根据所述指标数据确定所述待执行任务对应的标签;
将所述待执行任务分配至所述线程池中与所述标签对应的响应池中。
可选地,所述指标数据为通过所述预处理池获得的所述待执行任务的执行时间,根据所述指标数据确定所述待执行任务对应的标签,包括:
在所述执行时间大于所述预设执行时间阈值的情况下,所述标签为第一标签,在所述执行时间小于等于所述预设执行时间阈值的情况下,所述标签为第二标签;
将所述待执行任务分配至所述线程池中与所述标签对应的响应池中,包括:
在所述标签为第一标签的情况下,将所述待执行任务分配至与所述第一标签对应的第一响应池中;
在所述标签为第二标签的情况下,将所述待执行任务分配至与所述第二标签对应的第二响应池中;
其中,所述预处理池、所述第一响应池和所述第二响应池为线程池中的响应池。
可选地,将所述待执行任务分配至线程池中的预处理池中之前,包括:
根据预设规则对所述待执行任务进行校验,并确定校验通过。
可选地,所述指标数据为通过所述预处理池获得的所述待执行任务的执行时间,将所述待执行任务分配至所述线程池中与所述标签对应的响应池中之后,包括:
监控所述待执行任务在与所述标签对应的线程池中的第一指标数据;
在所述第一指标数据满足预设条件的情况下,更新所述待执行任务对应的标签。
可选地,所述方法还包括:
将所述待执行任务分配至线程池中的预处理池中之前,确定所述待执行任务没有对应的预设标签;
在所述待执行任务具有对应的预设标签的情况下,将所述待执行5任务分配至与预设标签对应的响应池中。
可选地,将所述待执行任务分配至所述线程池中与所述标签对应的响应池中之后,包括:
监控与所述标签对应的响应池的运行指标数据;
0根据所述运行指标数据确定与所述标签对应的响应池的运行状态。
可选地,所述运行指标数据为所述待执行任务的等待时间,根据所述运行指标数据确定与所述标签对应的响应池的运行状态,包括:
在所述等待时间小于预设等待时间阈值的情况下,确定与所述标5签对应的响应池的运行状态正常;
在所述等待时间大于等于所述预设等待时间阈值的情况下,确定与所述标签对应的响应池的运行状态异常。
可选地,将所述待执行任务分配至所述线程池中与所述标签对应0的响应池中之后,还包括:
判断所述待执行任务是否在预设时间内被与所述标签对应的响应池中的核心线程执行;
若是,确定与所述标签对应的响应池的运行状态正常;
否则,确定与所述标签对应的响应池的运行状态异常。
可选地,确定与所述标签对应的响应池的运行状态异常之后,还包括:
向资源分配中心发送扩容请求,以使所述资源分配中心在确定存在与所述扩容请求对应的资源的情况下返回与所述扩容请求对应的扩0容参数数据;
响应于接收到所述扩容参数数据,调整与所述标签对应的响应池中的核心参数,所述核心参数包括核心线程数、最大线程数以及阻塞队列容量中的至少一种。
根据本发明实施例的再一个方面,提供了一种线程池管理的装置,包括:
接收模块,接收客户端提交的待执行任务;
获取模块,将所述待执行任务分配至线程池中的预处理池中,获取所述待执行任务的指标数据;
确定模块,根据所述指标数据确定所述待执行任务对应的标签;
分配模块,将所述待执行任务分配至所述线程池中与所述标签对应的响应池中。
根据本发明实施例的另一个方面,提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明提供的线程池管理的方法。
根据本发明实施例的还一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的线程池管理的方法。
上述发明中的一个实施例具有如下优点或有益效果:在接收到客户端提交的待执行任务之后,将待执行任务分配至预处理池中,获取待执行任务的指标数据,以根据指标数据确定待执行任务对应的标签,实现将待执行任务分配至标签对应的响应池中,实现不同标签的待执行任务的相互隔离执行,并可以实现动态调整待执行任务对应的标签,从而实现资源的合理利用,提高系统运行的安全性和可靠性。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种线程池管理的方法的主要流程的示意图;
图2是根据本发明实施例的另一种线程池管理的方法的主要流程的示意图;
图3是根据本发明实施例的再一种线程池管理的方法的主要流程的示意图;
图4是根据本发明实施例的又一种线程池管理的方法的主要流程的示意图;
图5是根据本发明实施例的线程池管理的装置的主要模块的示意图;
图6是本发明实施例可以应用于其中的示例性系统架构图;
图7是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种线程池管理的方法的主要流程的示意图,如图1所示,该方法,包括以下步骤:
步骤S101:接收客户端提交的待执行任务;
步骤S102:将待执行任务分配至线程池中的预处理池中,获取待执行任务的指标数据;
步骤S103:根据指标数据确定待执行任务对应的标签;
步骤S104:将待执行任务分配至线程池中与标签对应的响应池中。
在本发明实施例中,该线程池管理的方法用于管理线程池及线程池中的预处理池、第一响应池、第二响应池等。在接收客户端提交的待执行任务之后,需要将该待执行任务分配至对应的响应池中并利用响应池中的线程执行该待执行任务。在将待执行任务分配至对应的响应池之前,需要先将待执行任务分配至预处理池(prePool)中进行处理,以获得待执行任务的指标数据。
在本发明实施例中,将待执行任务分配至线程池中的预处理池中之前,包括:根据预设规则对待执行任务进行校验,并确定校验通过。也就是说,在接收到客户提交的待执行任务之后,在确定校验通过之后,再将待执行任务分配至预处理池。其中,预设规则可以为自定义规则,预设规则可以包括内置命名规范、线程路由规则等。例如,可以校验待执行任务的任务名称是否符合内置命名规范(即命名格式)。还可以校验待执行任务是否符合默认路由规则,即校验待执行任务是否是根据指标数据与预设阈值的大小进行响应池分配的,若是,则根据默认规则路由进行分配,若否,则校验该待执行任务是否符合过滤规则,即该待执行任务是否为不考虑预设阈值的待执行任务;若该待执行任务符合过滤规则,则将该待执行任务分配至自定义响应池中,若该待执行任务不符合过滤规则,校验不通过。其中,自定义响应池是线程池中自定义的可以用于处理符合过滤规则的待执行任务的。
在本发明实施例中,指标数据为通过预处理池获得的待执行任务的执行时间,根据指标数据确定待执行任务对应的标签,包括:在执行时间大于预设执行时间阈值的情况下,标签为第一标签,在执行时间小于等于预设执行时间阈值的情况下,标签为第二标签。
在本发明实施例中,对待执行任务校验通过后,将待执行任务分配至线程池中的预处理池中之前,将待执行任务进行自定义包装类RunnableWrapper、CallableWrapper转换,将自定义包装类转换后的待执行任务提交至线程池中,其中,待执行任务经过自定义包装类转换后,通过自定义包装类可以记录任务名称、任务创建事件、执行时间、等待时间、任务归属应用程序等任务信息,从而通过监控待执行任务可以获得上述任务信息。
待执行任务的指标数据可以为通过预处理池获得的待执行任务的执行时间,即在预处理池中执行完成该待执行任务所需的时间。当待执行任务被提交到线程池中后,首先被分配至预处理池中,采用预处理池中对该待执行任务进行处理,以获得待执行任务的执行时间,具体地,在预设执行周期内监控并获取预处理池中该待执行任务的执行时间,如预设执行周期为执行完成该执行任务的次数,可以将多次执行该待执行任务获取的执行时间的平均值作为该待执行任务的执行时间。在确定该待执行任务的执行时间之后,将该执行时间与预设执行时间阈值进行比较,预设执行时间阈值可以自定义设置,如果执行时间大于预设执行时间阈值,说明该待执行任务的执行时间较长,可以为其标记指示执行时间较长的第一标签(如tortise标签);如果执行时间小于等于预设执行时间阈值,说明该待执行任务的执行时间较短,可以为其标记指示执行时间较短的第二标签(rabbit标签)。通过执行时间与预设执行时间阈值的比较,确定待执行任务对应的标签,从而可以根据标签对待执行任务进行分配。
在本发明实施例中,将待执行任务分配至线程池中与标签对应的响应池中,包括:
在标签为第一标签的情况下,将待执行任务分配至与第一标签对应的第一响应池中;
在标签为第二标签的情况下,将待执行任务分配至与第二标签对应的第二响应池中;
其中,预处理池、第一响应池和第二响应池为线程池中的响应池。
在确定待执行任务对应的标签之后,根据标签将待执行任务分配至对应的响应池中,第一标签与第一响应池(慢响应池,tortoisePool)对应,第二标签与第二响应池(快响应池,rabbitPool)对应,从而实现对客户端提交的任务进行动态分配。
在本发明实施例中,待执行任务的指标数据也可以为待执行任务的任务创建时间、任务归属应用等数据,也可以为其他自定义指标数据,通过监控并获取待执行任务的指标数据,并与预设指标数据阈值进行比较,可以实现为待执行任务进行打标,对客户端提交的待执行任务进行初步分配。
在本发明实施例中,指标数据为通过预处理池获得的待执行任务的执行时间,将待执行任务分配至线程池中与标签对应的响应池中之后,包括:
监控待执行任务在与标签对应的线程池中的第一指标数据;
在第一指标数据满足预设条件的情况下,更新待执行任务对应的标签。
在本发明实施例中,指标数据为通过预处理池获得的待执行任务的执行时间时,第一指标数据可以为待执行任务在与其标签对应的响应池中的第一执行时间,预设条件可以是在执行时间大于预设执行时间阈值的情况下,第一执行时间小于等于预设等待时间阈值,或者,在执行时间小于等于预设执行时间阈值的情况下,第一执行时间大于预设执行时间阈值。如果第一指标数据满足预设条件,则更新待执行任务对应的标签。即,若待执行任务对应的标签为第一标签,第一执行时间小于等于预设执行时间阈值,则将待执行任务对应的标签更新为第二标签;若待执行任务对应的标签为第二标签,第一执行时间大于预设执行时间阈值,则将待执行任务对应的标签更新为第一标签。例如,待执行任务在预处理池中由于执行时间较长,确定其对应的标签为慢标签,从而被分配至慢响应池中执行,而若在慢响应池中得到其执行时间变短,则将其对应的标签由慢标签更新为快标签,以后续根据快标签将其分配至快响应池中。
在本发明实施例中,若指标数据为通过预处理池获得的待执行任务的执行时间,还可以通过监控预设时间范围内待执行任务在与标签对应的响应池中的多个第一指标数据,如第一执行时间,若执行时间大于预设执行时间阈值,且多个第一执行时间均小于预设执行时间阈值,或者,若执行时间小于等于预设执行时间阈值,且多个第一执行时间均大于预设执行时间阈值,则更新待执行任务对应的标签。即,如果待执行任务在慢响应池中多次执行的执行时间都比在预处理池中获得的执行时间短,则将待执行任务对应的标签由慢标签更新为快标签,以后续分配至快响应池中。
在本发明实施例中,方法还包括:将待执行任务分配至线程池中的预处理池中之前,确定待执行任务没有对应的预设标签;在待执行任务具有对应的预设标签的情况下,将待执行任务分配至与预设标签对应的响应池中。也就是说,在接收到客户端提交的待执行任务之后,判断该待执行任务是否有对应的预设标签,如果有,则将待执行任务分配至预设标签对应的响应池中,如果没有,则分配至预处理池中。例如,若待执行任务具有对应的第一标签,则将其分配至第一响应池中,若具有对应的第二标签,则将其分配至第二响应池中,若没有对应的标签,则将其分配至预处理池中。
在本发明实施例中,如图2所示,将待执行任务分配至线程池中与标签对应的响应池中之后,包括:
步骤S201:监控与标签对应的响应池的运行指标数据;
步骤S202:根据运行指标数据确定与标签对应的响应池的运行状态。
在本发明实施例中,线程池的核心参数包括核心线程数、最大线程数、任务阻塞队列长度,还可以包括空闲线程存活时间、线程工厂、拒绝策略等参数。其中,核心线程数即最小线程数,响应池中的核心线程数可以根据预设规则初始化得到,预设规则可以为根据应用类型(CPU密集型、IO密集型)进行设置核心线程数,例如,若应用类型为CPU密集型,则核心线程数=CPU核数*(1+IO/CPU),若应用类型为IO密集型,则核心线程数=CPU核数+1。
在本发明实施例中,核心参数可以基于JDK(Java Development Kit,Java语言的软件开发工具包)的线程池拓展自定义类实现,通过自定义类可以实现核心线程数、最大线程数及阻塞队列长度的动态调整,还可以实现自定义动态响应池并扩展线程池中响应池参数,如响应池ID等,并自定义线程拒绝策略。其中,自定义线程拒绝策略可以为当响应池中核心线程数均在运行、最大核心线程数达到最大值、阻塞队列长度达到最大值,即达到最大资源使用率,则向客户端返回系统繁忙的提示信息。
通过自定义包装类AbstractWrapper实现响应池的运行指标数据的监控,运行指标数据包括响应池中线程的创建时间、等待时间、运行时间、响应池ID等,还包括响应池中待执行任务的指标数据,如执行待执行任务的线程名称、待执行任务在阻塞队列中的等待时间、待执行任务的执行时间、待执行任务的任务名称等。
通过监控与标签对应的响应池的运行指标数据可以确定与标签对应的响应池的运行状态,若运行指标数据为待执行任务的等待时间,根据运行指标数据确定与标签对应的响应池的运行状态,包括:在等待时间小于预设等待时间阈值的情况下,确定与标签对应的响应池的运行状态正常;在等待时间大于等于预设等待时间阈值的情况下,确定与标签对应的响应池的运行状态异常。其中,待执行任务的等待时间为待执行任务在阻塞队列中的排队等待时间,若等待时间较短,说明在预设等待时间阈值范围内任务可以执行,影响范围可接受,则响应池运行状态正常,若等待时间较长,说明阻塞队列中排队任务较多或任务被执行的时间较长,不仅会影响任务的执行还会影响后续提交到该响应池中任务的执行,此时响应池运行状态异常。
在本发明实施例中,如图3所示,将待执行任务分配至线程池中与标签对应的响应池中之后,还包括:
步骤S301:判断待执行任务是否在预设时间内被与标签对应的响应池中的核心线程执行;若是,执行步骤S302,若否,执行步骤S303;
步骤S302:确定与标签对应的响应池的运行状态正常;
步骤S303:确定与标签对应的响应池的运行状态异常。
在本发明实施例中,若待执行任务在预设时间内被分配至响应池中的核心线程执行,如立即被执行,说明响应池中有核心线程可用,响应池运行状态正常,或者没有被立即执行,而是在阻塞队列中等待,则说明待执行任务被分配至响应池中时没有核心线程可用,若在预设时间内可用被执行,说明待执行任务在阻塞队列中排队等待时间不长,影响较小,运行状态为正常;若在预设时间内没有被执行,说明待执行任务在阻塞队列中的等待时间太长,会影响任务的执行,运行状态为异常。
在本发明实施例中,如图4所示,确定与标签对应的响应池的运行状态异常之后,还包括:
步骤S401:向资源分配中心发送扩容请求,以使资源分配中心在确定存在与扩容请求对应的资源的情况下返回与扩容请求对应的扩容参数数据;
步骤S402:响应于接收到扩容参数数据,调整与标签对应的响应池中的核心参数,核心参数包括核心线程数、最大线程数以及阻塞队列长度中的至少一种。
在本发明实施例中,当与标签对应的响应池的运行状态异常之后,响应池需要向资源分配中心发送扩容请求,资源分配中心接收到扩容请求后判断是否存在对应的资源,若存在,则返回对应的扩容参数数5据,响应池接收到扩容参数数据之后,调整响应池中的核心参数,以提高响应池中任务的执行效率;若不存在,则触发规则告警,通过管理员服务器资源无法满足扩容请求,需进行集群扩容。扩容参数数据可以为增加的核心线程数、最大线程数或阻塞队列长度等,还可以自定义增加响应池。通过对响应池中核心参数的动态调整,实现资源的0合理利用,克服了现有业务线隔离池化技术中每个线程池通过人工经验设置固定的参数,在参数设置不合理时会导致线程池中线程频繁的创建与销毁,存在过闲或过忙的现象,造成资源浪费的问题。
在本发明实施例中,监控响应池的运行指标数据,若快响应池中5出现大量任务等待时间过长时,会向资源分配中心发送扩容请求,资源分配中心通过计算并推算是否存在资源满足扩容,满足则下发扩容参数数据,否则触发规则告警通知管理员。通过资源分配中心实现了线程池核心参数的自适应调整,实现合理高效的调度线程池资源,避免线程池中出现线程过忙或过闲的问题,使得服务器资源可以得到充0分利用并提高系统安全性和可靠性。
本发明实施例提供的线程池管理的方法,根据待执行任务的指标数据确定待执行任务对应的标签,从而将具有不同标签的待执行任务分配至不同的响应池中执行,实现线程相互隔离执行,并通过监控响5应池中待执行任务的第一指标数据,动态调整待执行任务对应的标签,
减小外部临时因素对待执行任务对应的标签的影响。通过待执行任务对应的标签将待执行任务动态分配至与标签对应的响应池中执行,通过对响应池的运行指标数据进行监控,可以在响应池中线程无法满足需求时,主动向资源分配中心申请资源扩容,以实现响应池中核心参0数的动态调整,从而可以提高任务的执行效率,解决现有技术中全局线程池中可能出现的雪崩现象以及业务隔离线程中因人为设置参数不合理导致线程频繁创建销毁、线程过忙或过闲的现象,实现资源的合理利用,提高系统额安全性和可靠性。
如图5所示,本发明实施例的另一方面,提供一种线程池管理的装置500,包括:
接收模块501,接收客户端提交的待执行任务;
获取模块502,将待执行任务分配至线程池中的预处理池中,获取待执行任务的指标数据;
确定模块503,根据指标数据确定待执行任务对应的标签;
分配模块504,将待执行任务分配至线程池中与标签对应的响应池中。
在本发明实施例中,指标数据为通过预处理池获得的待执行任务的执行时间,确定模块503,进一步用于:在执行时间大于预设执行时间阈值的情况下,标签为第一标签,在执行时间小于等于预设执行时间阈值的情况下,标签为第二标签;
分配模块504,进一步用于:在标签为第一标签的情况下,将待执行任务分配至与第一标签对应的第一响应池中;
在标签为第二标签的情况下,将待执行任务分配至与第二标签对应的第二响应池中;
其中,预处理池、第一响应池和第二响应池为线程池中的响应池。
在本发明实施例中,该线程池管理的装置500还包括校验模块,用于:将待执行任务分配至线程池中的预处理池中之前,根据预设规则对待执行任务进行校验,并确定校验通过。
在本发明实施例中,指标数据为通过预处理池获得的待执行任务的执行时间,该线程池管理的装置500,还包括监控模块,用于:将待执行任务分配至线程池中与标签对应的响应池中之后,监控待执行任务在与标签对应的线程池中的第一指标数据;在第一指标数据满足预设条件的情况下,更新待执行任务对应的标签。
在本发明实施例中,获取模块502,还用于:将待执行任务分配至线程池中的预处理池中之前,确定待执行任务没有对应的预设标签;在待执行任务具有对应的预设标签的情况下,将待执行任务分配至与预设标签对应的响应池中。
在本发明实施例中,监控模块,还用于:将待执行任务分配至线程池中与标签对应的响应池中之后,监控与标签对应的响应池的运行指标数据;根据运行指标数据确定与标签对应的响应池的运行状态。
在本发明实施例中,运行指标数据为待执行任务的等待时间,确定模块503,进一步用于:在等待时间小于预设等待时间阈值的情况下,确定与标签对应的响应池的运行状态正常;在等待时间大于等于预设等待时间阈值的情况下,确定与标签对应的响应池的运行状态异常。
在本发明实施例中,监控模块,还用于:将待执行任务分配至线程池中与标签对应的响应池中之后,判断待执行任务是否在预设时间内被与标签对应的响应池中的核心线程执行;若是,确定与标签对应的响应池的运行状态正常;否则,确定与标签对应的响应池的运行状态异常。
在本发明实施例中,监控模块,进一步用于:确定与标签对应的响应池的运行状态异常之后,向资源分配中心发送扩容请求,以使资源分配中心在确定存在与扩容请求对应的资源的情况下返回与扩容请求对应的扩容参数数据;响应于接收到扩容参数数据,调整与标签对应的响应池中的核心参数,核心参数包括核心线程数、最大线程数以及阻塞队列容量中的至少一种。
本发明实施例的再一方面提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明实施例的线程池管理的方法。
本发明实施例的还一方面提供一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现本发明实施例的线程池管理的方法。
图6示出了可以应用本发明实施例的线程池管理的方法或线程池管理的装置的示例性系统架构600。
如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的线程池管理的方法一般由服务器605执行,相应地,线程池管理的装置一般设置于服务器605中。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图7,其示出了适于用来实现本发明实施例的终端设备的计算机系统700的结构示意图。图7示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、获取模块、确定模块和分配模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块还可以被描述为“接收客户端提交的待执行任务”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收客户端提交的待执行任务;将待执行任务分配至线程池中的预处理池中,获取待执行任务的指标数据;根据指标数据确定待执行任务对应的标签;将待执行任务分配至线程池中与标签对应的响应池中。
根据本发明实施例的技术方案,提供的线程池管理的方法,根据待执行任务的指标数据确定待执行任务对应的标签,从而将具有不同标签的待执行任务分配至不同的响应池中执行,实现线程相互隔离执行,并通过监控响应池中待执行任务的第一指标数据,动态调整待执行任务对应的标签,减小外部临时因素对待执行任务对应的标签的影响。通过待执行任务对应的标签将待执行任务动态分配至与标签对应的响应池中执行,通过对响应池的运行指标数据进行监控,可以在响应池中线程无法满足需求时,主动向资源分配中心申请资源扩容,以实现响应池中核心参数的动态调整,从而可以提高任务的执行效率,解决现有技术中全局线程池中可能出现的雪崩现象以及业务隔离线程中因人为设置参数不合理导致线程频繁创建销毁、线程过忙或过闲的现象,实现资源的合理利用,提高系统额安全性和可靠性。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种线程池管理的方法,其特征在于,包括:
接收客户端提交的待执行任务;
将所述待执行任务分配至线程池中的预处理池中,获取所述待执行任务的指标数据;
根据所述指标数据确定所述待执行任务对应的标签;
将所述待执行任务分配至所述线程池中与所述标签对应的响应池中。
2.根据权利要求1所述的方法,其特征在于,所述指标数据为通过所述预处理池获得的所述待执行任务的执行时间,根据所述指标数据确定所述待执行任务对应的标签,包括:
在所述执行时间大于所述预设执行时间阈值的情况下,所述标签为第一标签,在所述执行时间小于等于所述预设执行时间阈值的情况下,所述标签为第二标签;
将所述待执行任务分配至所述线程池中与所述标签对应的响应池中,包括:
在所述标签为第一标签的情况下,将所述待执行任务分配至与所述第一标签对应的第一响应池中;
在所述标签为第二标签的情况下,将所述待执行任务分配至与所述第二标签对应的第二响应池中;
其中,所述预处理池、所述第一响应池和所述第二响应池为线程池中的响应池。
3.根据权利要求1所述的方法,其特征在于,将所述待执行任务分配至线程池中的预处理池中之前,包括:
根据预设规则对所述待执行任务进行校验,并确定校验通过。
4.根据权利要求1所述的方法,其特征在于,所述指标数据为通过所述预处理池获得的所述待执行任务的执行时间,将所述待执行任务分配至所述线程池中与所述标签对应的响应池中之后,包括:
监控所述待执行任务在与所述标签对应的线程池中的第一指标数据;
在所述第一指标数据满足预设条件的情况下,更新所述待执行任务对应的标签。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将所述待执行任务分配至线程池中的预处理池中之前,确定所述待执行任务没有对应的预设标签;
在所述待执行任务具有对应的预设标签的情况下,将所述待执行任务分配至与预设标签对应的响应池中。
6.根据权利要求1所述的方法,其特征在于,将所述待执行任务分配至所述线程池中与所述标签对应的响应池中之后,包括:
监控与所述标签对应的响应池的运行指标数据;
根据所述运行指标数据确定与所述标签对应的响应池的运行状态。
7.根据权利要求6所述的方法,其特征在于,所述运行指标数据为所述待执行任务的等待时间,根据所述运行指标数据确定与所述标签对应的响应池的运行状态,包括:
在所述等待时间小于预设等待时间阈值的情况下,确定与所述标签对应的响应池的运行状态正常;
在所述等待时间大于等于所述预设等待时间阈值的情况下,确定与所述标签对应的响应池的运行状态异常。
8.根据权利要求1所述的方法,其特征在于,将所述待执行任务分配至所述线程池中与所述标签对应的响应池中之后,还包括:
判断所述待执行任务是否在预设时间内被与所述标签对应的响应池中的核心线程执行;
若是,确定与所述标签对应的响应池的运行状态正常;
否则,确定与所述标签对应的响应池的运行状态异常。
9.根据权利要求7或8所述的方法,其特征在于,确定与所述标签对应的响应池的运行状态异常之后,还包括:
向资源分配中心发送扩容请求,以使所述资源分配中心在确定存在与所述扩容请求对应的资源的情况下返回与所述扩容请求对应的扩容参数数据;
响应于接收到所述扩容参数数据,调整与所述标签对应的响应池中的核心参数,所述核心参数包括核心线程数、最大线程数以及阻塞队列容量中的至少一种。
10.一种线程池管理的装置,其特征在于,包括:
接收模块,接收客户端提交的待执行任务;
获取模块,将所述待执行任务分配至线程池中的预处理池中,获取所述待执行任务的指标数据;
确定模块,根据所述指标数据确定所述待执行任务对应的标签;
分配模块,将所述待执行任务分配至所述线程池中与所述标签对应的响应池中。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211569564.8A CN115827200A (zh) | 2022-12-08 | 2022-12-08 | 一种线程池管理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211569564.8A CN115827200A (zh) | 2022-12-08 | 2022-12-08 | 一种线程池管理的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115827200A true CN115827200A (zh) | 2023-03-21 |
Family
ID=85544546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211569564.8A Pending CN115827200A (zh) | 2022-12-08 | 2022-12-08 | 一种线程池管理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827200A (zh) |
-
2022
- 2022-12-08 CN CN202211569564.8A patent/CN115827200A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10572411B2 (en) | Preventing software thread blocking due to interrupts | |
US10394475B2 (en) | Method and system for memory allocation in a disaggregated memory architecture | |
CN110166507B (zh) | 多资源调度方法和装置 | |
CN112905342B (zh) | 资源调度方法、装置、设备及计算机可读存储介质 | |
CN112445857A (zh) | 一种基于数据库的资源配额管理方法和装置 | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
US11418583B2 (en) | Transaction process management by dynamic transaction aggregation | |
CN112749002A (zh) | 一种集群资源动态管理的方法和装置 | |
CN112600761A (zh) | 一种资源分配的方法、装置及存储介质 | |
CN114155026A (zh) | 一种资源分配方法、装置、服务器及存储介质 | |
CN111190719A (zh) | 优化集群资源分配的方法、装置、介质及电子设备 | |
CN115525411A (zh) | 处理业务请求的方法、装置、电子设备和计算机可读介质 | |
CN113055199A (zh) | 网关访问方法、装置及网关设备 | |
CN114116173A (zh) | 动态调整任务分配的方法、装置和系统 | |
CN112104679A (zh) | 处理超文本传输协议请求的方法、装置、设备和介质 | |
CN111831503A (zh) | 一种基于监控代理的监控方法和监控代理装置 | |
CN113760482B (zh) | 一种任务处理方法、装置和系统 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
CN113742389A (zh) | 一种业务处理方法和装置 | |
CN114374657B (zh) | 一种数据处理方法和装置 | |
CN109284177B (zh) | 一种数据更新方法和装置 | |
CN115629853A (zh) | 一种任务调度的方法和装置 | |
CN115827200A (zh) | 一种线程池管理的方法和装置 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
CN114265692A (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 |