CN113590285A - 一种用于线程池参数动态设置的方法、***及设备 - Google Patents

一种用于线程池参数动态设置的方法、***及设备 Download PDF

Info

Publication number
CN113590285A
CN113590285A CN202110838179.8A CN202110838179A CN113590285A CN 113590285 A CN113590285 A CN 113590285A CN 202110838179 A CN202110838179 A CN 202110838179A CN 113590285 A CN113590285 A CN 113590285A
Authority
CN
China
Prior art keywords
thread pool
parameters
task
thread
setting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110838179.8A
Other languages
English (en)
Inventor
冯留振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Wanwu Xinsheng Environmental Technology Group Co
Original Assignee
Shanghai Wanwu Xinsheng Environmental Technology Group Co
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 Shanghai Wanwu Xinsheng Environmental Technology Group Co filed Critical Shanghai Wanwu Xinsheng Environmental Technology Group Co
Priority to CN202110838179.8A priority Critical patent/CN113590285A/zh
Publication of CN113590285A publication Critical patent/CN113590285A/zh
Pending legal-status Critical Current

Links

Images

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/5018Thread allocation

Landscapes

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

Abstract

本申请提供一种用于线程池参数动态设置的技术方案,创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;获取所述线程池的运行指标;基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;若需要,通过分布式配置中心动态设置所述线程池参数。在程序运行过程中,可根据获取的线程池的运行指标来确定是否需要动态设置所述线程池参数。本技术方案可实现线程池参数的动态设置,可避免因线程池参数初始设置不合理导致程序故障或业务受影响,或者发生不可预知的问题。

Description

一种用于线程池参数动态设置的方法、***及设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于线程池参数动态设置的技术。
背景技术
计算机程序是通过线程来执行相关任务、处理数据的,在处理并发任务或批量数据时,单线程方案的处理效率很低,一般都会选择使用多线程方案来处理。
而针对多线程方案,计算机程序通常采用线程池来管理各线程,在程序开发中设置线程池及其可配置的参数,完成程序开发后,可在应用程序启动之前设置相关参数。当任务提交到线程池时,线程池的处理流程如图1所示:首先判断核心线程池是否已满,若没满,创建/分配一个工作线程来处理任务;若已满,则判断任务阻塞队列是否已满,若没满,按先进先出原则将新提交的任务存储在队列里等待执行;若已满,则判断整个线程池是否已满,若没满,创建/分配一个工作线程来处理任务;若已满,根据拒绝策略来处理这个任务。
因此,线程池使用最核心的是线程池的参数配置,线程池若参数配置不合理,会引发故障,给***带来不可预知的问题。目前对于线程池的参数设置都是一次性的,应用程序启动之后,就无法动态设置线程池的配置参数。比如,采用JDK开发计算机程序,在JDK提供的线程池使用方法中完成线程池参数配置,运行程序后,线程池的核心线程数、最大线程数、任务阻塞队列大小等参数在线程池启动时就已经确定。
可是一方面,由于线程池的运行机制不是很好理解,参数要配置合理需要高度依赖开发人员的个人经验和知识;另一方面,线程池执行的情况和任务类型相关性较大,IO密集型和CPU密集型的任务运行起来的情况差异非常大,这导致在本技术领域并没有一些成熟的线程池参数配置经验策略提供给开发人员参考。如果在程序执行过程中发现参数设置的不合理,只能关闭程序,重新设置线程池参数后重启程序来解决,造成业务中断。
发明内容
本申请的目的是提供一种用于线程池参数动态配置的技术方案,用以解决现有技术中线程池参数不能动态设置的技术问题。
根据本申请的一个方面,提供了一种用于线程池参数动态配置的方法,其中,所述方法包括:
创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;
获取所述线程池的运行指标;
基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;
若需要,通过分布式配置中心动态设置所述线程池参数。
可选地,其中,所述线程池参数包括:
核心线程数;
最大线程数;
任务阻塞队列长度。
可选地,其中,所述线程池的运行指标包括:
所述线程池的任务阻塞队列中的任务等待时间和/或所述任务阻塞队列是否已满。
可选地,其中,所述基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整包括:
基于所述线程池的任务等待时间大于预设阈值和/或所述任务阻塞队列是否已满,确定所述线程池的线程池参数是否需要调整。
可选地,其中,所述通过分布式配置中心动态设置所述线程池参数包括:
若所述任务等待时间大于预设阈值,通过所述分布式配置中心设置核心线程数的目标参数值,并基于所述线程池类中的BeforeExecute方法,将所述线程池的核心线程数和/或最大线程数设置为所述目标参数值;
若所述任务阻塞队列已满,通过所述分布式配置中心设置所述任务阻塞队列长度的目标参数值,并基于阻塞队列类中的setCapacity方法,将所述任务阻塞队列长度设置为所述目标参数值。
可选地,所述一种用于线程池参数动态设置的方法还包括:
发出告警信息。
根据本申请的另一方面,还提供了一种用于线程池参数动态设置的***,其中,所述***包括:
第一模块,用于创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;
第二模块,用于获取所述线程池的运行指标;
第三模块,用于基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;
第四模块,用于若需要调整,通过分布式配置中心动态设置所述线程池参数。
与现有技术相比,本申请提供一种用于线程池参数动态设置的技术方案,创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;获取所述线程池的运行指标;基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;若需要,通过分布式配置中心动态设置所述线程池参数。在程序运行过程中,可根据获取的线程池的运行指标来确定是否需要动态设置所述线程池参数。本技术方案可实现线程池参数的动态设置,可避免因线程池参数初始设置不合理导致程序故障或业务受影响,或者发生不可预知的问题。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出线程池的任务处理流程示意图;
图2示出根据本申请一个方面的一种用于线程池参数动态设置的方法流程图;
图3示出一个可选实施例的自定义线程池的接口继承及类实现示意图;
图4示出一个可选实施例的自定义任务阻塞队列的接口继承及类实现示意图;
图5示出本申请另一个方面的一种用于线程池参数动态设置的***结构示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,设备、***各模块和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及优选实施例,对本申请的技术方案,进行清楚和完整的描述。
图2示出本申请一个方面的一种用于线程池参数动态设置的方法流程图,其中,一个实施例的方法包括:
S21创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;
S22获取所述线程池的运行指标;
S23基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;
S24若需要,通过分布式配置中心动态设置所述线程池参数。
在本申请中,所述方法通过设备100执行,所述设备100为安装有使用线程池的计算机程序的智能终端设备、计算机设备和/或云,所述智能终端设备包括但不限于智能手机、PAD;所述计算机设备包括但不限于个人计算机、笔记本电脑、工业计算机、网络主机、单个网络服务器、多个网络服务器集;所述云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。
在此,所述计算机设备和/或云仅为举例,其他现有的或者今后可能出现的设备和/或资源共享平台如适用于本申请也应包含在本申请的保护范围内,在此,以引用的方式包含于此。
在该实施例中,所述设备100上运行的计算机程序可以是基于JDK开发的,在开发计算机程序时采用了线程池的使用方法,也可以是基于如openJDK等其它开发工具在开发计算机程序时采用了线程池的使用方法。
在所述步骤S21中,所述设备100的相关计算机程序在初始化过程中根据采用的线程池的使用方法创建线程池,其中,所述线程池的线程池参数可被定义为变量参数并设置初值,程序开发人员可以根据线程池处理任务的任务类型,以及所处技术领域的一些成熟的线程池参数配置经验策略来设置线程池的线程池参数初值。线程池可在设备100中的相关计算机程序运行时启用,当任务被提交至线程池,任务进入线程池被执行。
在该实施例的一个应用场景中,如图3所示,可以基于JDK提供的线程池使用方法中的Executor->ExecutorService->AbstractExecutorService->ThreadPoolExecutor各级接口继承及类实现,创建线程池类ThreadPoolExecutor的自定义线程池类,比如,自定义一个线程池类MyThreadPoolExecutor来创建线程池,可定义线程池参数为变量参数并设置初值。其中,可以基于JDK提供的线程池使用方法中的Execute方法实时获取线程池的运行指标,基于JDK提供的线程池使用方法中的AfterExecute方法将实时获取的线程池的运行指标持久化保存到数据库中,如该线程池的运行指标异常,可基于JDK提供的线程池使用方法中的BeforeExecute方法来动态设置线程池的核心线程数、最大线程数等线程池参数;和/或如图4所示,参考JDK提供的Iterable->Collection->Queue->LinkedBlockingQueue各级接口继承及类实现,构建阻塞队列LinkedBlockingQueue的自定义任务阻塞队列,通过动态设置自定义的任务阻塞队列长度来消除线程池运行指标异常,比如,参考LinkedBlockingQueue自定义一个任务阻塞队列CanResizeLinkedBlockingQueue,其中,去掉LinkedBlockingQueue中capacity的修饰符final,并提供一个setCapacity方法,这样可以动态设置CanResizeLinkedBlockingQueu任务阻塞队列的队列大小。当计算机程序运行时,启用自定义的线程池MyThreadPoolExecutor,包括其中的自定义任务阻塞队列CanResizeLinkedBlockingQueue,随着任务被提交进入线程池MyThreadPoolExecutor,线程池MyThreadPoolExecutor可参照图1所示的处理流程处理任务。其中,图3及图4中,虚线框代表接口继承,实线框代表类实现。
可选地,其中,所述线程池参数包括:
核心线程数;
最大线程数;
任务阻塞队列长度。
在线程池创建时可设置的线程池参数包括:核心线程数、最大线程数、任务阻塞队列长度、空闲线程存活时间数量及时间单位、产生线程的线程工厂、拒绝策略等,其中,核心线程数、最大线程数、任务阻塞队列长度等线程池参数对线程池处理任务的性能,即线程池的运行指标影响较大。
继续在该实施例中,在计算机程序的运行过程中,在所述步骤S22中,所述设备100实时获取所述线程池的运行指标,以实时监视线程池处理任务的运行性能状态。
可选地,所述线程池的运行指标包括:
所述线程池的任务阻塞队列中的任务等待时间和/或所述任务阻塞队列是否已满。
其中,当任务被提交到线程池,若被推送给任务阻塞队列,则可以将进入任务阻塞队列中的任务的等待时间和/或判断任务阻塞队列是否已满确定为线程池的运行指标,通过实时获取线程池的任务阻塞队列中的任务等待时间和/或任务阻塞队列是否已满来监视线程池处理任务的运行性能状态。
继续在该实施例中,在所述步骤S23中,所述设备100根据实时获取的线程池的运行指标,来确定所述线程池的线程池参数是否需要调整。
可选地,其中,所述S23包括:
基于所述线程池的任务等待时间大于预设阈值和/或所述任务阻塞队列是否已满,确定所述线程池的线程池参数是否需要调整。
比如,当任务被提供给线程池,若任务进入线程池立即被执行,无需等待,则说明线程池有核心线程可用,则认为此种运行指标为正常;若任务进入线程池没有被立即执行,而是被送入任务阻塞队列等待,则说明在任务被提交到线程池时没有核心线程可用,可以获取任务的等待时间,如果等待时间小于预设阈值,说明其之前在任务阻塞队列中排队的任务被执行的时间不是很长,等待可承受时间后任务可被执行,则认为不影响程序或业务,但如果等待时间大于预设阈值,则说明其之前在任务阻塞队列中排队的任务较多或者任务被执行的时间较长,等待时间太长,不但会影响到该任务对应的程序或业务、还会影响到后续被提交到线程池任务的执行,则认为此种运行指标为异常,应调整线程池参数来改善线程池的运行性能状态,以便已进入线程池和/或后续进入线程池的任务能在符合预期的时间内尽快被执行,比如动态增加核心线程数量和/或最大线程数;若任务进入线程池后连任务阻塞队列都不能推入,则说明线程池中等待被执行的任务太多,会影响到该任务对应的程序或业务及后续被提交到线程池任务的执行,则认为此种运行指标也是异常,也应调整线程池参数来改善线程池的运行性能状态,以便已进入线程池的任务能尽快被执行,比如动态增加任务阻塞队列长度。
继续在该实施例中,若基于所述线程池的运行指标,确定所述线程池参数需要调整,在所述步骤S24中,所述设备100通过分布式配置中心动态设置所述线程池参数。
比如,上述应用场景中,设备100通过Execute方法实时获取线程池的运行指标,通过AfterExecute方法将线程池的运行指标持久化保存到数据库中。程序或***通常都配置有后台管理子***,可实时监视保存到数据库中的线程池的运行指标,如果运行指标异常,则后台管理子***会触发相关指令,设备100中的分布式配置中心Zookeeper会根据相关指令,根据线程池名称建立与线程池的通讯连接,动态设置线程池参数。
可选地,其中,所述通过分布式配置中心动态设置所述线程池参数包括:
若所述任务等待时间大于预设阈值,通过所述分布式配置中心设置核心线程数的目标参数值,并基于所述线程池类中的BeforeExecute方法,将所述线程池的核心线程数和/或最大线程数设置为所述目标参数值;
若所述任务阻塞队列已满,通过所述分布式配置中心设置所述任务阻塞队列长度的目标参数值,并基于阻塞队列类中的setCapacity方法,将所述任务阻塞队列长度设置为所述目标参数值。
比如,前述应用场景中,若设备100获取到线程池中任务等待时间大于预设阈值,通过所述分布式配置中心Zookeeper,可设置线程池MyThreadPoolExecutor的核心线程数的目标参数值,并基于线程池MyThreadPoolExecutor中的BeforeExecute方法,将所述线程池MyThreadPoolExecutor的核心线程数设置为所述目标参数值。若动态设置核心线程数后线程池中的待处理任务的以等待时间还是大于预设阈值,且无法再动态设置更大核心线程数时,可动态设置MyThreadPoolExecutor的最大线程数的目标参数值,基于线程池MyThreadPoolExecutor中的BeforeExecute方法,将所述线程池MyThreadPoolExecutor的最大线程数设置为所述目标参数值,以增加线程池中最大线程数。
若自定义任务阻塞队列CanResizeLinkedBlockingQueue已满,通过所述分布式配置中心Zookeeper,设置所述任务阻塞队列CanResizeLinkedBlockingQueue的队列长度的目标参数值,并基于任务阻塞队列CanResizeLinkedBlockingQueue中的setCapacity方法,将任务阻塞队列CanResizeLinkedBlockingQueue的队列长度设置为所述目标参数值。
计算机程序通常都配置有后台管理子***,除了提供任务管理、参数调整、权限设置等功能外,还可实时监视线程池的运行指标。可选地,如果后台管理子***监视到运行指标异常,可以发出告警信息,其中,所述告警信息可以是通过可视化界面发出的,也可以再结合声光告警信息。
在另一可选实施例中,上述实施例中的线程池的运行指标还可以包括线程池的核心线程池的使用状况、最大线程池的使用状况,设备100可以根据实时获取的线程池的不同运行指标的情况来确定是否需要动态设置线程池参数。
图5示出本申请另一个方面的一种用于线程池参数动态设置的***结构示意图,其中,所述***包括:
第一模块51,用于创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;
第二模块52,用于获取所述线程池的运行指标;
第三模块53,用于基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;
第四模块54,用于若需要调整,通过分布式配置中心动态设置所述线程池参数。
在该实施例中,所述***用于实施前述实施例的方法,所述***集成在与前述设备100软硬件配置环境相同的设备中。
其中,该***的第一模块51根据采用的线程池的使用方法创建线程池,其中,所述线程池的线程池参数可被定义为变量参数并设置初值,程序开发人员可以根据线程池处理任务的任务类型,以及所处技术领域的一些成熟的线程池参数配置经验策略来设置线程池的线程池参数初值。启用线程池后,当任务被提交至线程池,任务进入线程池被执行。
该***的第二模块52实时获取所述线程池的运行指标,以实时监视线程池处理任务的运行性能状态。
该***的第三模块53根据实时获取的线程池的运行指标,来确定所述线程池的线程池参数是否需要调整。
该***的第四模块54通过分布式配置中心动态设置所述线程池参数。
根据本申请的又一方面,还提供了一种计算机可读介质,所述计算机可读介质存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请中涉及的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个设备,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备运行基于前述根据本申请的多个实施例的方法和/或技术方案。
根据本申请的又一方面,还提供了一种用于线程池参数动态设置的设备,其中,该设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述方法的操作。
例如,计算机可读指令在被执行时使所述一个或多个处理器:创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;获取所述线程池的运行指标;基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;若需要,通过分布式配置中心动态设置所述线程池参数。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件和/或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (9)

1.一种用于线程池参数动态设置的方法,其特征在于,所述方法包括:
创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;
获取所述线程池的运行指标;
基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;
若需要,通过分布式配置中心动态设置所述线程池参数。
2.根据权利要求1所述的方法,其特征在于,所述线程池参数包括:
核心线程数;
最大线程数;
任务阻塞队列长度。
3.根据权利要求2所述的方法,其特征在于,所述线程池的运行指标包括:
所述线程池的任务阻塞队列中的任务等待时间和/或所述任务阻塞队列是否已满。
4.根据权利要求3所述的方法,其特征在于,所述基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整包括:
基于所述线程池的任务等待时间大于预设阈值和/或所述任务阻塞队列是否已满,确定所述线程池的线程池参数是否需要调整。
5.根据权利要求4所述的方法,其特征在于,所述通过分布式配置中心动态设置所述线程池参数包括:
若所述任务等待时间大于预设阈值,通过所述分布式配置中心设置核心线程数的目标参数值,并基于所述线程池类中的BeforeExecute方法,将所述线程池的核心线程数和/或最大线程数设置为所述目标参数值;
若所述任务阻塞队列已满,通过所述分布式配置中心设置所述任务阻塞队列长度的目标参数值,并基于阻塞队列类中的setCapacity方法,将所述任务阻塞队列长度设置为所述目标参数值。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
发出告警信息。
7.一种用于线程池参数动态设置的***,其特征在于,所述***包括:
第一模块,用于创建并启用线程池,其中,所述线程池的线程池参数被定义为变量参数并设置初值;
第二模块,用于获取所述线程池的运行指标;
第三模块,用于基于所述线程池的运行指标,确定所述线程池的线程池参数是否需要调整;
第四模块,用于若需要调整,通过分布式配置中心动态设置所述线程池参数。
8.一种计算机可读介质,其特征在于,
其上存储有计算机可读指令,所述计算机可读指令被处理器执行以实现如权利要求1至6中任一项所述的方法。
9.一种用于线程池参数动态设置的设备,其特征在于,所述设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如权利要求1至6中任一项所述方法的操作。
CN202110838179.8A 2021-07-23 2021-07-23 一种用于线程池参数动态设置的方法、***及设备 Pending CN113590285A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110838179.8A CN113590285A (zh) 2021-07-23 2021-07-23 一种用于线程池参数动态设置的方法、***及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110838179.8A CN113590285A (zh) 2021-07-23 2021-07-23 一种用于线程池参数动态设置的方法、***及设备

Publications (1)

Publication Number Publication Date
CN113590285A true CN113590285A (zh) 2021-11-02

Family

ID=78249287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110838179.8A Pending CN113590285A (zh) 2021-07-23 2021-07-23 一种用于线程池参数动态设置的方法、***及设备

Country Status (1)

Country Link
CN (1) CN113590285A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114422498A (zh) * 2021-12-14 2022-04-29 杭州安恒信息技术股份有限公司 大数据实时处理方法、***、计算机设备及存储介质
CN117093640A (zh) * 2023-10-18 2023-11-21 上海柯林布瑞信息技术有限公司 基于池化技术的数据抽取方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170034310A1 (en) * 2015-07-29 2017-02-02 Netapp Inc. Remote procedure call management
CN108762913A (zh) * 2018-03-23 2018-11-06 阿里巴巴集团控股有限公司 服务处理方法及装置
US20200192725A1 (en) * 2018-12-18 2020-06-18 At&T Intellectual Property I, L.P. Distributed Load Balancing for Processing of High-Volume Data Streams
CN112000455A (zh) * 2020-09-10 2020-11-27 华云数据控股集团有限公司 一种多线程任务处理方法、装置及电子设备
CN112817719A (zh) * 2021-01-28 2021-05-18 平安普惠企业管理有限公司 线程池的参数调整方法、装置、设备及可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170034310A1 (en) * 2015-07-29 2017-02-02 Netapp Inc. Remote procedure call management
CN108762913A (zh) * 2018-03-23 2018-11-06 阿里巴巴集团控股有限公司 服务处理方法及装置
US20200192725A1 (en) * 2018-12-18 2020-06-18 At&T Intellectual Property I, L.P. Distributed Load Balancing for Processing of High-Volume Data Streams
CN112000455A (zh) * 2020-09-10 2020-11-27 华云数据控股集团有限公司 一种多线程任务处理方法、装置及电子设备
CN112817719A (zh) * 2021-01-28 2021-05-18 平安普惠企业管理有限公司 线程池的参数调整方法、装置、设备及可读存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
有思想的搬运工: "可动态调节参数的线程池实现", pages 1 - 11, Retrieved from the Internet <URL:https://developer.aliyun.com/article/778751?utm_content=g_1000219727> *
致远 陆晨: "Java线程池实现原理及其在美团业务中的实践", pages 1 - 41, Retrieved from the Internet <URL:https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html> *
试剑江湖。: "【并发编程】线程池参数设置与动态调整", pages 1 - 31, Retrieved from the Internet <URL:https://blog.csdn.net/qq_41893274/article/details/112424767> *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114422498A (zh) * 2021-12-14 2022-04-29 杭州安恒信息技术股份有限公司 大数据实时处理方法、***、计算机设备及存储介质
CN117093640A (zh) * 2023-10-18 2023-11-21 上海柯林布瑞信息技术有限公司 基于池化技术的数据抽取方法及装置
CN117093640B (zh) * 2023-10-18 2024-01-23 上海柯林布瑞信息技术有限公司 基于池化技术的数据抽取方法及装置

Similar Documents

Publication Publication Date Title
US9934098B2 (en) Automatic serial order starting of resource groups on failover systems based on resource group usage prediction
US9876673B2 (en) Self-learning automated remediation of changes that cause performance degradation of applications
US11294758B2 (en) Automated methods and systems to classify and troubleshoot problems in information technology systems and services
US9092247B2 (en) Persistent and resilient worker processes
US9535754B1 (en) Dynamic provisioning of computing resources
US10783002B1 (en) Cost determination of a service call
US20200052993A1 (en) Methods and Systems that Diagnose and Manage Undesirable Operational States of Computing Facilities
US20180165693A1 (en) Methods and systems to determine correlated-extreme behavior consumers of data center resources
US11372871B1 (en) Programmable framework for distributed computation of statistical functions over time-based data
US20210119878A1 (en) Detection and remediation of virtual environment performance issues
CN113590285A (zh) 一种用于线程池参数动态设置的方法、***及设备
CN107402863B (zh) 一种用于通过日志***处理业务***的日志的方法与设备
US9386087B2 (en) Workload placement in a computer system
Di Sanzo et al. Machine learning for achieving self-* properties and seamless execution of applications in the cloud
US20130326528A1 (en) Resource starvation management in a computer system
CN112181948A (zh) 数据库操作语句的处理方法、装置、电子设备和介质
CN113760658A (zh) 一种监控方法、装置及设备
US9501321B1 (en) Weighted service requests throttling
CN107958414B (zh) 一种清除cics***长交易的方法及***
CN115422010A (zh) 数据集群中的节点管理方法、装置及存储介质
US9772877B2 (en) Managing I/O operations in a shared file system
CN114968552A (zh) 缓存分配方法、装置、设备、存储介质和程序产品
CN112612578A (zh) 一种虚拟机监控方法和装置
CN113396392A (zh) 针对异常事件增加虚拟机的处理能力
CN104268057A (zh) 一种Android平台下的模块化***的监控***及方法

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