一种线程池容量调整方法、装置、设备及可读存储介质与流程

文档序号:16401468发布日期:2018-12-25 20:09阅读:215来源:国知局
一种线程池容量调整方法、装置、设备及可读存储介质与流程
本发明涉及计算机系统
技术领域
,特别是涉及一种线程池容量调整方法、装置、设备及可读存储介质。
背景技术
线程池技术可用于提升计算机系统的响应速度、稳健性和整体性能。其通过提供若干个固定线程,轮流为大量的任务服务,当一个线程完成任务时,并不马上销毁,而是接手另一个任务,从而减少创建和销毁线程的资源消耗,可以最大程度的利用系统资源。现有的,线程池调整策略按照预先设置的固定调整规则,在用户设定的最小值和最大值之间进行调整。即每次调整的大小和方向均固定,无法适应实时状态变化以及用户需求。而,线程池的容量决定了在指定时间内能够处理的并发任务数。若线程池的容量太小,导致所有的任务都在排队等待进入线程池,造成堵塞;而线程池的容量太大,则会造成系统资源的浪费。特别是,在大型系统的生产环境下,系统吞吐量和稳定性至关重要。综上所述,如何有效地对线程池进行容量调整等问题,是目前本领域技术人员急需解决的技术问题。技术实现要素:本发明的目的是提供一种线程池容量调整方法、装置、设备及可读存储介质,通过对线程池容量进行有效地调整,以提高系统的吞吐量以及稳定性,进一步提升用户体验。为解决上述技术问题,本发明提供如下技术方案:一种线程池容量调整方法,包括:定期采集系统性能参数,其中,所述系统性能参数包括系统吞吐量;利用爬山算法对所述系统性能参数进行预估,获得可提升所述系统吞吐量的线程池最优值;将所述线程池最优值配置至线程池中,以便所述线程池基于所述线程池最优值进行工作。优选地,在所述定期采集系统性能参数之前,还包括:检测domain.xml配置中jvm参数中是否配置了生产模式;如果是,则启动自调优模式。优选地,所述定期采集系统性能参数,包括:每隔30秒,采集一次系统性能参数。优选地,将所述线程池最优值配置至线程池中,包括:计算所述线程池最优值与当前时刻的线程池最大值的差值;当所述差值大于预设阈值时,将所述线程池最优值配置至线程池中。一种线程池容量调整装置,包括:性能参数获取模块,用于定期采集系统性能参数,其中,所述系统性能参数包括并发数、线程池故障线程数、系统吞吐量;线程池最优值获得模块,用于利用爬山算法对所述系统性能参数进行预估,获得可提升所述系统吞吐量的线程池最优值;线程池参数调整模块,用于将所述线程池最优值配置至线程池中,以便所述线程池基于所述线程池最优值进行工作。优选地,还包括:自调优启动模块,用于在所述定期采集系统性能参数之前,检测domain.xml配置中jvm参数中是否配置了生产模式;如果是,则启动自调优模式。优选地,所述性能参数获取模块,具体用于每隔30秒,采集一次系统性能参数。优选地,所述线程池参数调整模块,具体用于计算所述线程池最优值与当前时刻的线程池最大值的差值;当所述差值大于预设阈值时,将所述线程池最优值配置至线程池中。一种线程池容量调整设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述线程池容量调整方法的步骤。一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述线程池容量调整方法的步骤。应用本发明实施例所提供的方法,定期采集系统性能参数,其中,系统性能参数包括并发数、线程池故障线程数、系统吞吐量;利用爬山算法对系统性能参数进行预估,获得可提升系统吞吐量的线程池最优值;将线程池最优值配置至线程池中,以便线程池基于线程池最优值进行工作。在对线程池最大值进行调整时,利用爬山算法对系统性能参数进行深度学习,并预估出可提升系统吞吐量的线程池最优值,然后将线程池最优值配置至线程池中。将线程池容量最大值配置为线程池最优值之后,可提升系统吞吐量,进一步提升用户体验。相应地,本发明实施例还提供了与上述线程池容量调整方法相对应的线程池容量调整装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例中一种线程池容量调整方法的实施流程图;图2为本发明实施例中另一种线程池容量调整方法的实施流程图;图3为本发明实施例中一种线程池容量调整装置的结构示意图;图4为本发明实施例中一种线程池容量调整设备的结构示意图。具体实施方式为了使本
技术领域
的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一:请参考图1,图1为本发明实施例中一种线程池容量调整方法的流程图,应用于服务器线程池容量调节,该方法包括以下步骤:s101、定期采集系统性能参数。其中,系统性能参数包括系统吞吐量。在本发明实施例中,可以通过定期统计线程池处理的业务量,获得系统性能参数。该系统性能参数包括系统吞吐量(tps,transactionpersecond,每秒钟系统能够处理的交易或事务的数量,它是衡量系统处理能力的重要指标)。当然,这里的系统性能参数包括但不限于系统吞吐量,还可以获取其他系统性能参数,如访问量等。需要说明的是,这里提到的定期可以为每间隔一定时间采集一次。具体的,间隔时长可以预先设置,也可以根据实际情况进行确定和调整,在此不做限定。s102、利用爬山算法对系统性能参数进行预估,获得可提升系统吞吐量的线程池最优值。利用爬山算法计算线程池的最优容量值时,因爬山算法具有逐步收敛的特性,在优化过程中,可以采用模糊控制逻辑计算最优容量值。其中,模糊控制为一种在线优化的方法,可以包含一系列的模糊规则。线程池容量优化过程,可由这些规则来表达。如表1所示:规则ifthen线程池最大值and系统tps最大线程池1增大and增大增大2增大and减小减小3减小and增大减小4减小and减小增大表1模糊规则的表现形式可以采用if-then形式。其中,规则1表示,当增大线程池最大值之后,且系统tps增大了,说明线程池容量调整方向正确,则在下一次调整线程池容量时,继续增大线程池容量;规则2表示,当增大线程池最大值之后,且系统tps减小了,说明线程池容量调整方法有误,则在下一次调整线程池容量时,减小线程池容量;规则3表示,当减小线程池最大值之后,且系统tps增大了,说明线程池容量调整方法正确,则在下一次调整线程池容量时,继续减小线程池容量;规则4表示,当减小线程池最大值之后,且系统tps减小了,说明线程池容量调整方法有误,则在下一次调整线程池容量时,增大线程池容量。也就是说,每次对线程池容量,也就是对线程池最大值进行调整时,以当前的系统tps以及上一次调整的方向结合确认当前的调整方向,获得可提升系统吞吐量的线程池最优值。具体的,在利用爬山算法计算线程池的最优容量值时,可以将当前线程池最大值,线程池调整步长,系统tps作为爬山算法的输入数据,爬山算法利用模糊规则进行计算之后,可以获得可提升系统吞吐量的线程池最优值。s103、将线程池最优值配置至线程池中,以便线程池基于线程池最优值进行工作。获得线程池最优值之后,可以将线程池最优值输入线程池进行配置。以便线程池基于最优容量值进行工作。即将最优容量值作为线程池最大值,以限制线程池容量上限。应用本发明实施例所提供的方法,定期采集系统性能参数,其中,系统性能参数包括并发数、线程池故障线程数、系统吞吐量;利用爬山算法对系统性能参数进行预估,获得可提升系统吞吐量的线程池最优值;将线程池最优值配置至线程池中,以便线程池基于线程池最优值进行工作。在对线程池最大值进行调整时,利用爬山算法对系统性能参数进行深度学习,并预估出可提升系统吞吐量的线程池最优值,然后将线程池最优值配置至线程池中。将线程池容量最大值配置为线程池最优值之后,可提升系统吞吐量,进一步提升用户体验。需要说明的是,基于上述实施例一,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例一中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。实施例二:请参考图2,图2为本发明实施例中另一种线程池容量调整方法的流程图,该方法包括以下步骤:s201、检测domain.xml配置中jvm参数中是否配置了生产模式。需要说明的是,应用服务器分为开发模式和生产模式。其中,开发模式指开发者在使用应用服务器进行应用开发的时候的模式;生产模式是指应用服务器为应用在生产环境运行提供的模式,会更注重性能。本发明实施例可用于盛产模式下,以提升应用服务器的性能。其中,jvm(javavirtualmachine,java虚拟机)。具体的,应用服务器检测domain.xml配置中jvm参数中是否配置了生产模式-ddevelopment=true。如果为true,则启动线程池自调优模式;如果不设置或者-dthreadpoolselftuning=false,则不启动线程池自调优模式。即,如果是,则进入步骤s202;如果否,则无操作。s202、启动自调优模式。s203、每隔30秒,采集一次系统性能参数。为保障系统性能参数可以代表实时的系统性能情况,进而进行高精度的线程池容量调整,可以每隔30秒,采集一次系统性能参数。当然,在本发明的其他实施例中,参数采集的间隔时间还可以为28秒,1分钟等时长,具体的间隔时长可预先设置也可以根据实际情况进行确定和调整,在此不做限定。其中,系统性能参数包括系统吞吐量。s204、利用爬山算法对系统性能参数进行预估,获得可提升系统吞吐量的线程池最优值。s205、计算线程池最优值与当前时刻的线程池最大值的差值。s206、当差值大于预设阈值时,将线程池最优值配置至线程池中。为便于描述,下面将步骤s205和步骤s206结合起来进行说明。为了减少对线程池容量的调整次数,可以将计算出的线程池最优值与当前时刻的线程池最大的差值。然后,将该差值与预设的阈值进行比较,当该差值大于预设阈值时,则表明线程池容量需进行调整,则将线程池最优值配置至线程池中。而当最优该差值小于或等于预设阈值时,则表明当前线程池容量非常接近线程池最优值,不必进行调整。以此来减少调节次数,减少计算机资源的浪费。相应于上面的方法实施例,本发明实施例还提供了一种线程池容量调整装置,下文描述的线程池容量调整装置与上文描述的线程池容量调整方法可相互对应参照。参见图3所示,该装置包括以下模块:一种线程池容量调整装置,包括:性能参数获取模块101,用于定期采集系统性能参数,其中,系统性能参数包括并发数、线程池故障线程数、系统吞吐量;线程池最优值获得模块102,用于利用爬山算法对系统性能参数进行预估,获得可提升系统吞吐量的线程池最优值;线程池参数调整模块103,用于将线程池最优值配置至线程池中,以便线程池基于线程池最优值进行工作。应用本发明实施例所提供的装置,定期采集系统性能参数,其中,系统性能参数包括并发数、线程池故障线程数、系统吞吐量;利用爬山算法对系统性能参数进行预估,获得可提升系统吞吐量的线程池最优值;将线程池最优值配置至线程池中,以便线程池基于线程池最优值进行工作。在对线程池最大值进行调整时,利用爬山算法对系统性能参数进行深度学习,并预估出可提升系统吞吐量的线程池最优值,然后将线程池最优值配置至线程池中。将线程池容量最大值配置为线程池最优值之后,可提升系统吞吐量,进一步提升用户体验。在本发明的一种具体实施方式中,还包括:自调优启动模块,用于在定期采集系统性能参数之前,检测domain.xml配置中jvm参数中是否配置了生产模式;如果是,则启动自调优模式。在本发明的一种具体实施方式中,性能参数获取模块101,具体用于每隔30秒,采集一次系统性能参数。在本发明的一种具体实施方式中,线程池参数调整模块103,具体用于计算线程池最优值与当前时刻的线程池最大值的差值;当差值大于预设阈值时,将线程池最优值配置至线程池中。相应于上面的方法实施例,本发明实施例还提供了一种线程池容量调整设备,下文描述的一种线程池容量调整设备与上文描述的一种线程池容量调整方法可相互对应参照。参见图4所示,该线程池容量调整设备包括:存储器d1,用于存储计算机程序;处理器d2,用于执行计算机程序时实现上述方法实施例的线程池容量调整方法的步骤。相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种线程池容量调整方法可相互对应参照。一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的线程池容量调整方法的步骤。该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或
技术领域
内所公知的任意其它形式的存储介质中。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1