CN117573313A - 一种线程资源的调整方法及装置 - Google Patents

一种线程资源的调整方法及装置 Download PDF

Info

Publication number
CN117573313A
CN117573313A CN202311536339.9A CN202311536339A CN117573313A CN 117573313 A CN117573313 A CN 117573313A CN 202311536339 A CN202311536339 A CN 202311536339A CN 117573313 A CN117573313 A CN 117573313A
Authority
CN
China
Prior art keywords
task
threads
thread
thread pool
core
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
CN202311536339.9A
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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202311536339.9A priority Critical patent/CN117573313A/zh
Publication of CN117573313A publication Critical patent/CN117573313A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • 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为本发明实施例中线程资源的调整方法的一种流程图;
图2为本发明实施例中线程资源的调整方法的另一流程图;
图3为本发明实施例中线程资源的调整装置的结构示意图;
图4为本发明实施例中电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为了解决在所接收的任务较多时,线程池对任务的响应速度慢的问题,本发明实施例提供了一种线程资源的调整方法、装置及电子设备。该方法可以应用于电子设备中,例如服务器,计算机等,该方法还可以应用于运行在电子设备中的线程池管理程序,并且本发明实施例可以通过软件和硬件相结合的方式实现。
本发明实施例提供的线程资源的调整方法包括:
当从线程池的任务队列中获取任务时,确定该任务在所述任务队列中的等待时间;其中,所述等待时间为该任务进入所述任务队列的时间,与该任务从所述任务队列出队的时间的差值;
判断所述等待时间是否大于预设时长阈值;
若大于,则增大所述线程池的核心线程数。
本实施例中,当任务在任务队列中的等待时间大于预设时长阈值的情况下,就增大线程池的核心线程数,使得线程池能够同时调用更多的线程对任务进行处理,进而缩短任务在任务队列中的等待时间,从而提高线程池对任务的响应速度。
下面结合附图,对本发明实施例所提供的线程资源的调整方法进行详细介绍。
如图1所示,本发明实施例所提供的线程资源的调整方法可以包括以下步骤:
S101,当从线程池的任务队列中获取任务时,确定该任务在任务队列中的等待时间;其中,等待时间为该任务进入任务队列的时间,与该任务从任务队列出队的时间的差值;
本实施例中,线程是指能够被运算调度的最小单位,线程池是一种使用多个线程对任务进行处理的系统,线程池中可以包含多个线程,以及任务队列。
当接收到一任务需要被该线程池处理时,若线程池当前执行任务处理的线程的数量等于核心线程数时,则该任务会进入任务队列中排队等待,直至任务队列中位于该任务之前的其他任务被处理完成,则会使用一条空闲的线程对该任务进行处理。其中,当前执行任务处理的线程也可以称作当前活动的线程。因此,本步骤中可以在线程池的任务队列中存在任务,且线程池中当前正在执行任务处理的线程的数量小于线程池的核心线程数情况下,从线程池的任务队列中获取任务进行处理,此时确定该任务在任务队列中的等待时间。
上述等待时间为该任务进入任务队列的时间,与该任务从任务队列出队的时间的差值。在一种实现方式中,在接收到一任务时,若线程池当前正在当前执行任务处理的线程的数量不小于核心线程数,此时可以调用任务入队方法,将该任务缓存至任务队列中,其中,任务入队方法用于将任务缓存至任务队列,进而当任务队列中位于该任务之前的其他任务被处理完成后,可以调用任务出队方法,从任务队列中获取该任务,进而触发后续对该任务进行处理的步骤,其中,任务出队方法用于从任务队列中获取任务,并触发后续对任务进行处理的步骤。
因此,可以将针对该任务调用任务入队方法的时间,作为该任务进入任务队列的时间,针对该任务调用任务出队方法的时间,作为该任务从任务队列出队的时间,进而计算时间的差值,得到该任务在任务队列中的等待时间。
在一种实现方式中,在核心线程数存在预设上限的情况下,本实施例可以在核心线程数小于预设上限的情况下执行。
S102,判断等待时间是否大于预设时长阈值;
上述预设时长阈值可以根据经验及需求设定,在对响应时间敏感的场景下,例如,所要处理的任务为用户的请求时,可以设置较小的预设时长阈值,从而提高对用户的请求的响应速度,提高用户体验。本实施例中,可以在每次任务从任务队列中出队时,就判断该任务的等待时间是否大于预设时长阈值。在具体应用场景中,当使用ThreadPoolTaskExecutor(线程池任务执行器)对线程池进行管理时,可以在ThreadPoolTaskExecutor的submit(线程池提交方法)中设置检测任务等待时间的功能,进而当每一任务从任务队列中出队时,比较该任务的等待时间与历史记录的等待时间的最大值,若该任务的等待时间大于该最大值,则可以将等待时间的最大值修改为该任务的等待时间,并且在每一次增大线程池的核心线程数后,可以将该等待时间的最大值重置为0,执行下一轮的判断逻辑。
S103,若大于,则增大线程池的核心线程数。
增大线程池的核心线程数,即从可利用的计算资源中,占用更多的线程,用于对该线程池所接收的任务进行处理。若等待时间不大于预设时长阈值,则可以保持线程池当前的核心线程数不变。
本步骤中,在等待时间大于预设时长阈值的情况下,可以增大线程池的核心线程数。在一种实现方式中,可以增加预设数量个核心线程数,例如,增加1个核心线程数。当下一次判断等待时间大于预设时长阈值时,则可以继续增加该预设数量个核心线程数。
在另一实现方式中,上述增大线程池的核心线程数,可以包括:
步骤A1,确定当前的单位时间内接收的任务的数量增长率;
本步骤中,上述单位时间可以为1秒、10秒等。为了确定上述数量增长率,可以针对当前时刻之前连续两个单位时间中的任一单位时间,获取该单位时间内接收到的任务的数量,作为接收任务数,进而根据该两个单位时间的接收任务数,确定数量增长率,例如可以用该两个单位时间中时间靠后的单位时间的接收任务数减去时间靠前的单位时间的接收任务数,得到第一任务数差值,进而将该第一任务数差值除以时间靠前的单位时间的接收任务数,得到数量增长率。
在该线程池用于对服务器所接收的用户请求进行处理的场景下,还可以将单位时间内服务器所接收的用户请求的数量增长率,直接作为单位时间内接收的任务的数量增长率。
步骤A2,根据线程池当前的核心线程数与数量增长率的乘积,增大线程池的核心线程数。
本步骤中,可以将线程池当前的核心线程数与数量增长率的乘积所得到的数值,作为所要增大的核心线程数,当前的核心线程数与该所要增大的核心线程数相加得到增大后的核心线程数。由于核心线程数为整数,在当前的核心线程数与数量增长率的乘积为非整数的情况下,可以向上取整、向下取整,或者四舍五入取整等,得到所要增大的核心线程数。
本实现方式中,通过根据单位时间内接收的任务的数量增长率,来确定所要增大的核心线程数,能够使得所增大的核心线程数符合任务的数量增加趋势,从而在单位时间内接收的任务的数量的增加时,保证线程池中始终有充足的线程对任务进行处理,避免任务的排队时间过长,使得线程池更加智能化。在增大线程池的核心线程数的同时,也可以相应地增大任务队列所占的存储空间,例如,可以按照单位时间内接收的任务的数量增长率进行增大。
本实施例中,当任务在任务队列中的等待时间大于预设时长阈值的情况下,表明线程池当前的核心线程数较少,因此,此时增大线程池的核心线程数,使得线程池能够同时调用更多的线程对任务进行处理,进而能够缩短任务在任务队列中的等待时间,从而提高线程池对任务的响应速度。
在本发明的另一实施例中,本发明实施例所提供的线程资源的调整方法,还可以包括:
当检测到线程池当前执行任务处理的线程的数量下降时,减小线程池的核心线程数。
由于相关技术中通常为线程池设定固定的核心线程数量核心线程数,而核心线程数设定后,不论线程池中的各个线程池是否在执行处理任务,都会占用固定的计算资源,因此,若所设定的核心线程数量核心线程数过大,则容易导致线程池所占用的部分计算资源长时间处在闲置状态,无法被充分使用,造成资源的浪费。
因此,本实施例中,可以在检测到线程池当前执行任务处理的线程的数量下降时,减小线程池的核心线程数。当前执行任务处理的线程也称作活动的线程,即当前正在处理任务的线程。在该线程池用于对服务器所接收的用户请求进行处理的场景下,可以根据单位时间内服务器所接收的用户请求的数量下降率,减小线程池的核心线程数。本步骤可以在线程池的核心线程数大于预设数量下限的情况下执行。
在一种实现方式中,本发明实施例所提供的线程资源的调整方法,可以如图2所示:
S201,当达到预设的检测时刻时,确定线程池当前执行任务处理的线程的数量;
在一种实现方式中,可以周期性检测是否要减小线程池的核心线程数,该预设的检测时刻可以为周期性检测中的任一次检测的时刻。在每一次达到周期性地检测时刻时,可以确定线程池当前执行任务处理的线程的数量。
S202,根据当前执行任务处理的线程的数量,与上一检测时刻所确定执行任务处理的线程的数量的变化情况,确定当前执行任务处理的线程的数量是否下降;
在一种实现方式中,可以比较该两个检测时刻所确定执行任务处理的线程的数量,若上一检测时刻所确定执行任务处理的线程的数量,大于当前执行任务处理的线程的数量,则可以确定当前执行任务处理的线程的数量下降。
由于流量具有一定的波动性,为了防止一次检测到执行任务处理的线程的数量呈下降趋势下降就进行减小核心线程数,使得后续的短时间内的需要处理的任务数上升时,难以及时增大核心线程数,从而导致对任务的响应时间过长,因此,在另一实现方式中,上述根据当前执行任务处理的线程的数量,与上一检测时刻所确定执行任务处理的线程的数量的变化情况,确定当前执行任务处理的线程的数量是否下降,可以包括:
若当前检测时刻对应的检测结果和指定的历史检测时刻对应的检测结果均表示,执行任务处理的线程的数量呈下降趋势,则确定当前执行任务处理的线程的数量下降;其中指定的历史检测包含:至少一个与当前检测时刻最近的检测时刻。
本实现方式中,可以周期性地检测当前执行任务处理的线程的数量是否呈下降趋势,多个与当前的检测时刻最近的检测时刻的数量可以根据经验及需求设定,例如可以为2个。若当前检测时刻对应的检测结果表示,执行任务处理的线程的数量呈下降趋势,且与当前检测时刻最近的至少一个检测时刻对应的检测结果也均表示为呈下降趋势,表明连续多次检测到执行任务处理的线程的呈下降趋势,此时可以确定当前执行任务处理的线程的数量下降,进行减小线程池的核心线程数的操作;否则,不进行减小线程池的核心线程数的操作,从而避免上述问题,并且也能够避免频繁地对核心线程数进行增大及减小。
S203,当检测到线程池当前执行任务处理的线程的数量下降时,减小线程池的核心线程数。
本步骤中,可以减小预设数量个核心线程数,例如,减小1个核心线程数,当下一次检测到当前执行任务处理的线程的数量下降时,则可以继续减小该预设数量个核心线程数。
在一种实现方式中,与上述增大线程池的核心线程数相类似,可以确定当前的单位时间内接收的任务的数量下降率;进而根据线程池当前的核心线程数与该数量下降率的乘积,减小线程池的核心线程数,从而使得所减小的核心线程数符合任务的数量减小趋势。在周期性地检测单位时间的接收任务数是否下降的情况下,可以将最后一次所检测的单位时间内接收的任务的数量下降率,作为当前的单位时间内接收的任务的数量下降率。
在减小线程池的核心线程数的同时,也可以相应地减小任务队列所占的存储空间,例如,可以按照单位时间内接收的任务的数量下降率进行减小。
在减小线程池的核心线程数之后,线程池所占用部分计算资源将被释放,这部分计算资源可以用于执行其他计算功能,因此能够使用更少的计算资源承载更多的计算功能,从而有效节约成本。
在减小线程池的核心线程数后,可以不立即释放线程池所占用的线程,而是在线程池当前所占用线程中存在空闲线程时,再释放该空闲的线程,从而线程池不再占用该线程的计算资源,直至释放后线程池所占用的线程的数量与减小后的核心线程数相同。例如,线程池的核心线程数由5降低至3,且线程池中当前正在处理任务的线程的数量为4个,则可以先将空闲的一个线程释放,并等待该4个线程中存在一个线程处理任务完成后,将该线程释放。进一步的,也可以在线程池当前所占用线程中存在空闲线程,且该空闲线程的空闲时长达到预设的空闲时长阈值时,再将该线程释放,以优先保证对任务的响应速度。
此外,若确定线程池当前执行任务处理的线程的数量,但确定接收的任务的流量未下降时,则可以保持线程池当前的核心线程数不变。
本实施例中,在检测到线程池当前执行任务处理的线程的数量下降时,减小线程池的核心线程数,由于线程池当前执行任务处理的线程的数量下降表明当前线程池所在处理的任务数量减少,因此,此时减小线程池的核心线程数可以减少线程池所占用计算资源的闲置,减少资源的浪费。此外,由于在线程池的核心线程数较大的情况下,也会造成线程池所在服务器的不稳定,并且也容易使得线程池所在的服务实例被关闭重启,造成数据的丢失,本实施例能够及时减小线程池的核心线程数,从而降低上述问题所带来的风险。
基于同一发明构思,本发明实施例还提供了一种线程资源的调整装置,如图3所示,该装置包括:
时间确定模块301,用于当从线程池的任务队列中获取任务进行处理时,确定该任务在所述任务队列中的等待时间;其中,所述等待时间为该任务进入所述任务队列的时间,与该任务从所述任务队列出队的时间的差值;
判断模块302,用于判断所述等待时间是否大于预设时长阈值;
核心线程数增大模块303,用于若大于,则增大所述线程池的核心线程数。
可选地,所述装置还包括:
核心线程数减小模块,用于当检测到所述线程池当前执行任务处理的线程的数量下降时,减小所述线程池的核心线程数。
可选地,所述装置还包括:流量确定模块,用于在所述核心线程数减小模块当检测到所述线程池当前执行任务处理的线程的数量下降时,减小所述线程池的核心线程数之前,当达到预设的检测时刻时,确定所述线程池当前执行任务处理的线程的数量;根据当前执行任务处理的线程的数量,与上一检测时刻所确定执行任务处理的线程的数量的变化情况,确定当前执行任务处理的线程的数量是否下降。
可选地,所述流量确定模块具体用于:
根据当前执行任务处理的线程的数量,与上一检测时刻所确定执行任务处理的线程的数量的变化情况,得到当前检测时刻对应的检测结果;
若所述当前检测时刻对应的检测结果和指定的历史检测时刻对应的检测结果均表示,执行任务处理的线程的数量呈下降趋势,则确定当前执行任务处理的线程的数量下降;其中,所述指定的历史检测时刻包含:至少一个与所述当前检测时刻最近的检测时刻。
可选地,核心线程数增大模块303,包括:
数量增长率确定子模块,用于确定当前的单位时间内接收的任务的数量增长率;
核心线程数增大子模块,用于根据所述线程池当前的核心线程数与所述数量增长率的乘积,增大所述线程池的核心线程数。
可选地,所述线程数减小模块,包括:
数量下降率确定子模块,用于确定当前的单位时间内接收的任务的数量下降率;
核心线程数减小子模块,用于根据所述线程池当前的核心线程数与所述数量增长率的乘积,减小所述线程池的核心线程数。
可选地,所述装置还包括:
任务获取模块,用于在所述线程池的任务队列中存在任务,且所述线程池中当前执行任务处理的线程的数量小于所述线程池的核心线程数情况下,从所述线程池的任务队列中获取任务进行处理。
本实施例中,当任务在任务队列中的等待时间大于预设时长阈值的情况下,表明线程池当前的核心线程数较少,因此,此时增大线程池的核心线程数,能够使得线程池能够同时调用更多的线程对任务进行处理,进而缩短任务在任务队列中的等待时间,从而提高线程池对任务的响应速度。
本发明实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现上述实施例中任一所述的线程资源的调整方法。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一所述的线程资源的调整方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的线程资源的调整方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种线程资源的调整方法,其特征在于,所述方法包括:
当从线程池的任务队列中获取任务时,确定该任务在所述任务队列中的等待时间;其中,所述等待时间为该任务进入所述任务队列的时间,与该任务从所述任务队列出队的时间的差值;
判断所述等待时间是否大于预设时长阈值;
若大于,则增大所述线程池的核心线程数。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到所述线程池当前执行任务处理的线程的数量下降时,减小所述线程池的核心线程数。
3.根据权利要求2所述的方法,其特征在于,在所述当检测到所述线程池当前执行任务处理的线程的数量下降时,减小所述线程池的核心线程数之前,所述方法还包括:
当达到预设的检测时刻时,确定所述线程池当前执行任务处理的线程的数量;
根据当前执行任务处理的线程的数量,与上一检测时刻所确定执行任务处理的线程的数量的变化情况,确定当前执行任务处理的线程的数量是否下降。
4.根据权利要求3所述的方法,其特征在于,所述根据当前执行任务处理的线程的数量,与上一检测时刻所确定执行任务处理的线程的数量的变化情况,确定当前执行任务处理的线程的数量是否下降,包括:
根据当前执行任务处理的线程的数量,与上一检测时刻所确定执行任务处理的线程的数量的变化情况,得到当前检测时刻对应的检测结果;
若所述当前检测时刻对应的检测结果和指定的历史检测时刻对应的检测结果均表示,执行任务处理的线程的数量呈下降趋势,则确定当前执行任务处理的线程的数量下降;其中,所述指定的历史检测时刻包含:至少一个与所述当前检测时刻最近的检测时刻。
5.根据权利要求1所述的方法,其特征在于,所述增大所述线程池的核心线程数,包括:
确定当前的单位时间内接收的任务的数量增长率;
根据所述线程池当前的核心线程数与所述数量增长率的乘积,增大所述线程池的核心线程数。
6.根据权利要求2所述的方法,其特征在于,所述减小所述线程池的核心线程数,包括:
确定当前的单位时间内接收的任务的数量下降率;
根据所述线程池当前的核心线程数与所述数量增长率的乘积,减小所述线程池的核心线程数。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述线程池的任务队列中存在任务,且所述线程池中当前执行任务处理的线程的数量小于所述线程池的核心线程数情况下,从所述线程池的任务队列中获取任务进行处理。
8.一种线程资源的调整装置,其特征在于,所述装置包括:
时间确定模块,用于当从线程池的任务队列中获取任务进行处理时,确定该任务在所述任务队列中的等待时间;其中,所述等待时间为该任务进入所述任务队列的时间,与该任务从所述任务队列出队的时间的差值;
判断模块,用于判断所述等待时间是否大于预设时长阈值;
核心线程数增大模块,用于若大于,则增大所述线程池的核心线程数。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
CN202311536339.9A 2023-11-17 2023-11-17 一种线程资源的调整方法及装置 Pending CN117573313A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311536339.9A CN117573313A (zh) 2023-11-17 2023-11-17 一种线程资源的调整方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311536339.9A CN117573313A (zh) 2023-11-17 2023-11-17 一种线程资源的调整方法及装置

Publications (1)

Publication Number Publication Date
CN117573313A true CN117573313A (zh) 2024-02-20

Family

ID=89863803

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311536339.9A Pending CN117573313A (zh) 2023-11-17 2023-11-17 一种线程资源的调整方法及装置

Country Status (1)

Country Link
CN (1) CN117573313A (zh)

Similar Documents

Publication Publication Date Title
CN106557369B (zh) 一种多线程的管理方法及系统
CN110737534B (zh) 任务的处理方法、装置和服务器
CN109981737B (zh) 一种网络请求的处理方法、装置、终端及存储介质
WO2022068697A1 (zh) 任务调度方法及装置
CN111897637B (zh) 作业调度方法、装置、主机及存储介质
CN107977269B (zh) 一种报文转发系统中的超时事件处理方法、装置及设备
CN111240864A (zh) 异步任务处理方法、装置、设备及计算机可读存储介质
CN112463315A (zh) 一种集群任务调度方法、装置及相关组件
CN111061570A (zh) 一种图像计算请求处理方法、装置及终端设备
CN114461365A (zh) 一种进程调度处理方法、装置、设备和存储介质
CN114461353A (zh) 调整线程优先级的方法、终端及计算机可读存储介质
CN117573313A (zh) 一种线程资源的调整方法及装置
CN115981893A (zh) 消息队列任务处理方法、装置、服务器及存储介质
CN115495249A (zh) 一种云端集群的任务执行方法
CN110769046B (zh) 一种报文获取方法、装置、电子设备及机器可读存储介质
CN112000294A (zh) 一种io队列深度调节方法、装置及相关组件
CN110851286B (zh) 线程管理方法、装置、电子设备及存储介质
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
CN109933426B (zh) 服务调用的处理方法、装置、电子设备及可读存储介质
CN114374657A (zh) 一种数据处理方法和装置
CN110187957B (zh) 一种下载任务的排队方法、装置及电子设备
CN109062706B (zh) 电子装置及其限制进程间通信的方法、存储介质
CN112286690A (zh) 一种动态调整cpu核的方法、装置、电子设备及存储介质
CN111711650B (zh) 网络请求的调度方法、装置、设备及存储介质
CN112395063A (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