CN117370013A - 一种基于神经网络的动态维护线程池的方法及线程池 - Google Patents
一种基于神经网络的动态维护线程池的方法及线程池 Download PDFInfo
- Publication number
- CN117370013A CN117370013A CN202311331370.9A CN202311331370A CN117370013A CN 117370013 A CN117370013 A CN 117370013A CN 202311331370 A CN202311331370 A CN 202311331370A CN 117370013 A CN117370013 A CN 117370013A
- Authority
- CN
- China
- Prior art keywords
- thread pool
- thread
- neural network
- load condition
- 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 48
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 38
- 238000009826 distribution Methods 0.000 claims abstract description 25
- 238000003062 neural network model Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 18
- 238000012549 training Methods 0.000 claims description 15
- 238000012360 testing method Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 5
- 230000001186 cumulative effect Effects 0.000 claims description 4
- 125000004122 cyclic group Chemical group 0.000 claims description 4
- 238000005315 distribution function Methods 0.000 claims description 4
- 238000003860 storage Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims description 3
- 238000005096 rolling process Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 230000036632 reaction speed Effects 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 11
- 230000004044 response Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000009530 blood pressure measurement Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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 the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及线程池技术领域,提出一种基于神经网络的动态维护线程池的方法,其包括下列步骤:当线程池中没有空闲线程时,使用负值数分布预测线程池出现空闲线程的概率;确定线程池的当前负载情况,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容;以及基于神经网络预测线程池的未来负载情况,根据线程池的未来负载情况增大线程池的核心线程数或者将线程池扩容。本发明可以提升线程池的灵活性以及整体的系统反应速度,避免在大量任务涌入线程池时任务无法被及时处理,同时可以避免线程池过大导致系统资源消耗过度并且避免在任务队列满载时拒绝任务导致请求失败。
Description
技术领域
本发明总的来说涉及线程池技术领域。具体而言,本发明涉及一种基于神经网络的动态维护线程池的方法及线程池。
背景技术
随着养老业务的不断发展,养老业务整体的业务逻辑变得越来越负责,很多业务处理需要聚合多个服务的数据再返回给用户,调用服务的过程十分耗时。如果进行串行调用,那么系统的响应时间将会非常长,同时也会占用服务器的工作线程,进而影响整个系统的吞吐量。
为了优化系统的响应时间,通常会将串行调用改为并行调用,通过多线程来执行聚合操作,但是在操作系统中线程是一种相对比较昂贵的资源,因此不能无限制地创建线程、销毁线程,这对系统性能产生了极大的影响。
针对上述问题,通常需要通过线程池来复用线程,进而避免频繁地创建和销毁线程所带来的开销,同时还可以限制系统中的线程数量,避免资源的浪费和竞争。
在养老业务系统中有许多典型场景都用到了线程池。图2示出了一个用户请求进行服务的场景中的线程示意图。如图2所示,在该场景中用户提交订单时需要查询并且将多个维度的信息(例如价格、优惠、积分等信息)聚合起来创建订单,创建订单后还需要通过许多下游系统进行处理。如果将上述线程串行化则会造成响应时间过长,极大影响用户体验。由于面向用户的功能聚合通常非常复杂,并且还会伴随调用与调用之间的级联、多级级联等情况,因此可以通过线程池将调用封装成任务并行的执行进程,进而缩短整体的响应时间。在该场景中,使用线程池最重要的目的是获取最快的响应速度来满足用户,因此不会设置队列去缓冲并发任务,而是调高核心线程数和最大线程数进而能够尽可能的创造更多的线程快速执行任务。
图3示出了一个产生工单的场景中的线程示意图。如图3所示,在该场景中同样也希望任务执行地越快越好,因此也需要使用多线程并行计算的策略。但与响应速度优先的场景相比,该场景虽然任务栏巨大,但并不需要瞬时完成,而是更倾向于在有限的资源下尽可能在单位时间内处理更多的任务。也就是说这是一个吞吐量优先的场景,应该设置队列缓冲并发任务,并且调整合适的核心线程数以设置处理任务的线程数。该场景中设置的线程数过度反而会引发线程上下文切换频繁的问题,也会降低任务的处理速度,降低吞吐量。
在传统的养老业务系统中,线程池通常是手动创建的,线程池的核心线程数等参数是硬编码。然而随着养老业务的不断发展,用户数量不断增加,对养老业务系统的服务性能的要求也越来越高,发明人在对服务进行全链路压测的过程中发现,传统的线程池仍存在下列问题:线程池大小不足,导致请求无法得到处理,进而影响系统性能;线程池大小过大,导致系统资源消耗过度,影响系统的稳定性和性能;队列出于满载的状态,使得新的请求将被拒绝,导致请求失败;任务执行时间过长,影响线程池中其他任务的执行,进而影响系统性能;以及当多个线程池的其中一个占用过多资源时,将造成其它线程池性能下降。
发明内容
为至少部分解决现有技术中的上述问题,本发明提出一种基于神经网络的动态维护线程池的方法,包括下列步骤:
当线程池中没有空闲线程时,使用负值数分布预测线程池出现空闲线程的概率;
确定线程池的当前负载情况,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容;以及
基于神经网络预测线程池的未来负载情况,根据线程池的未来负载情况增大线程池的核心线程数或者将线程池扩容。
在本发明一个实施例中规定,使用负值数分布预测线程池出现空闲线程的概率包括下列步骤:
收集线程池的时间数据,其中所述时间数据包括线程池的核心线程执行任务完成的时间;
根据所述时间数据进行负指数分布拟合以确定负指数分布参数λ,其中负指数分布的概率密度函数表示为下式:
f(x|λ)=λ×e-λx,x≥0,λ>0;
根据所述负指数分布参数入,使用累积分布函数预测线程池在t时间之前出现空闲线程的概率,表示为下式:
F(t)=1-e-λx;以及
以1-F(t)表示线程池在t时间之后出现空闲线程的概率,并且根据预设的置信水平确定线程池出现空闲线程的时间。
在本发明一个实施例中规定,确定线程池的当前负载情况包括通过计算线程池的负载分数Score以确定线程池的当前负载情况,表示为下式:
Score=wcpu×cpuutilization+wmemory×memoryutilization+wdisk_io×disk_ioutilization+wnetwork×network_bandwidthutilization
其中,cpuutilization表示CPU使用率、wcpu表示CPU使用率的权重、memoryutilization表示内存使用率、wmemory表示内存使用率的权重、disk_ioutilization表示硬盘I/0使用率、wdisk_io表示硬盘I/O使用率的权重、network_bandwidthutilization表示网络带宽使用率、wnetwork表示网络带宽使用率的权重。
在本发明一个实施例中规定,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容包括:
将负载分数Score与扩容的触发阈值thresholdexpand以及调大核心线程的触发阈值thresholdincrease_core_threads进行比较,thresholdexpand>thresholdincrease_core_threads,其中当Score≥thresholdexpana时将线程池扩容,当Score≥thresholdincrease_core_threads时调大线程池的核心线程数。
在本发明一个实施例中规定,所述基于神经网络的动态维护线程池的方法还包括:
当Score<thresholdincrease_core_threads时发出告警通知进行人工干预。
在本发明一个实施例中规定,基于神经网络预测线程池的未来负载情况包括下列步骤:
收集线程池的历史负载指标数据,并且对所述历史负载指标数据进行预处理;
对预处理后的数据进行特征提取;
将特征提取后的数据划分为训练集以及测试集,其中训练集用于训练神经网络模型,测试集用于评估神经网络模型的性能;
提供神经网络模型,其中使用循环神经网络捕捉时间序列的动态变化;
使用训练集数据对神经网络模型进行训练并且优化均方差损失函数;
使用测试集数据对训练好的神经网络模型进行验证,并且根据验证结果对神经网络的超参数进行调优;以及
通过滚动窗口的方式使用训练后的神经网络模型预测线程池的未来负载情况。
在本发明一个实施例中规定,所述基于神经网络的动态维护线程池的方法还包括:
当线程池的未来负载情况出现增长时增大线程池的核心线程数,并且当线程池的未来负载情况超过扩容的触发阈值时对线程池进行弹性扩容。
本发明还提出一种基于神经网络进行动态维护的线程池,其包括:
空闲线程预测模块,其被配置为在线程池中没有空闲线程时,使用负值数分布预测线程池出现空闲线程的概率;
当前负载情况计算模块,其被配置为确定线程池的当前负载情况,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容;以及
未来负载情况预测模块,其被配置为基于神经网络预测线程池的未来负载情况,根据线程池的未来负载情况增大线程池的核心线程数或者将线程池扩容。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时执行根据所述方法的步骤。
本发明还提出一种计算机系统,其包括:
处理器,其被配置为执行机器可执行指令;以及
存储器,其上存储有机器可执行指令,所述机器可执行指令在被处理器执行时执行根据所述方法的步骤。
本发明至少具有如下有益效果:本发明提供一种基于神经网络的动态维护线程池的方法,其可以提升线程池的灵活性以及整体的系统反应速度,避免在大量任务涌入线程池时任务无法被及时处理,同时可以避免线程池过大导致系统资源消耗过度影响系统的稳定性和性能,此外还可以避免在任务队列满载时拒绝任务导致请求失败。
附图说明
为进一步阐明本发明的各实施例中具有的及其它的优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。在附图中,为了清楚明了,相同或相应的部件将用相同或类似的标记表示。
图1示出了实现根据本发明的系统和/或方法的计算机系统的示意图。
图2示出了一个用户请求进行服务的场景中的线程示意图。
图3示出了一个产生工单的场景中的线程示意图。
图4示出了本发明一个实施例中一个基于神经网络的动态维护线程池的方法的流程示意图。
具体实施方式
应当指出,各附图中的各组件可能为了图解说明而被夸大地示出,而不一定是比例正确的。在各附图中,给相同或功能相同的组件配备了相同的附图标记。
在本发明中,除非特别指出,“布置在…上”、“布置在…上方”以及“布置在…之上”并未排除二者之间存在中间物的情况。此外,“布置在…上或上方”仅仅表示两个部件之间的相对位置关系,而在一定情况下、如在颠倒产品方向后,也可以转换为“布置在…下或下方”,反之亦然。
在本发明中,各实施例仅仅旨在说明本发明的方案,而不应被理解为限制性的。
在本发明中,除非特别指出,量词“一个”、“一”并未排除多个元素的场景。
在此还应当指出,在本发明的实施例中,为清楚、简单起见,可能示出了仅仅一部分部件或组件,但是本领域的普通技术人员能够理解,在本发明的教导下,可根据具体场景需要添加所需的部件或组件。另外,除非另行说明,本发明的不同实施例中的特征可以相互组合。例如,可以用第二实施例中的某特征替换第一实施例中相对应或功能相同或相似的特征,所得到的实施例同样落入本申请的公开范围或记载范围。
在此还应当指出,在本发明的范围内,“相同”、“相等”、“等于”等措辞并不意味着二者数值绝对相等,而是允许一定的合理误差,也就是说,所述措辞也涵盖了“基本上相同”、“基本上相等”、“基本上等于”。以此类推,在本发明中,表方向的术语“垂直于”、“平行于”等等同样涵盖了“基本上垂直于”、“基本上平行于”的含义。
另外,本发明的各方法的步骤的编号并未限定所述方法步骤的执行顺序。除非特别指出,各方法步骤可以以不同顺序执行。
发明人经过对现有技术中的问题进行研究发现,在实际应用中即使是微服务架构的同一个模块也常常由于业务的复杂性需要引入多个线程池来进行业务隔离,而不同的业务场景需要对线程池参数进行不同的设置。例如在用户请求场景中需要更大的核心线程数来进行快速响应,在数据导出场景中需要更大的队列来缓解大量的导出任务,在突发流量场景中需要更大的最大线程数和任务队列。为了找到合适各场景的参数值,需要重复进行压测、调整参数、上线的过程,这会消耗大量的人力物力。因此现有技术中实际需要解决的问题是:线程池参数调整依赖代码上线,非常耗时;线程池运行情况黑盒,无法准确的进行调优。针对上述问题,本发明提出一种基于神经网络的动态维护线程池的方法及使用该方法进行维护的线程池。
下面结合具体实施方式参考附图进一步阐述本发明。
图1示出了实现根据本发明的系统和/或方法的计算机系统100。如非特殊说明,根据本发明的方法和/或系统可以在图1所示的计算机系统100中执行以实现本发明目的,或者本发明可以在多个根据本发明的计算机系统100中通过网络、如局域网或因特网分布式地实现。本发明的计算机系统100可以包括各种类型的计算机系统、例如手持式设备、膝上型计算机、个人数字助理(PDA)、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机、网络服务器、平板计算机等等。
如图1所示,计算机系统100包括处理器111、系统总线101、系统存储器102、视频适配器105、音频适配器107、硬盘驱动器接口109、光驱接口113、网络接口114、通用串行总线(USB)接口112。系统总线101可以是若干种总线结构类型的任一种,例如存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。系统总线101用于各个总线设备之间的通信。除了图1中所示的总线设备或接口以外,其它的总线设备或接口也是可设想的。系统存储器102包括只读存储器(ROM)103和随机存取存储器(RAM)104,其中ROM 103例如可以存储用于在启动时实现信息传输的基本例程的基本输入/输出系统(BIOS)数据,而RAM 104用于为系统提供存取速度较快的运行内存。计算机系统100还包括用于对硬盘110进行读写的硬盘驱动器109、用于对诸如CD-ROM之类的光介质进行读写光驱接口113等等。硬盘110例如可以存储有操作系统和应用程序。驱动器及其相关联的计算机可读介质为计算机系统100提供了计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。计算机系统100还可以包括用于图像处理和/或图像输出的视频适配器105,其用于连接显示器106等输出设备。计算机系统100还可以包括用于音频处理和/或音频输出的音频适配器107,其用于连接扬声器108等输出设备。此外,计算机系统100还可以包括用于网络连接的网络接口114,其中网络接口114可以通过诸如路由器115之类的网络装置连接到因特网116,其中所述连接可以是有线或无线的。另外,此外,计算机系统100还可以包括用于连接外围设备的通用串行总线接口(USB)112,其中所述外围设备例如包括键盘117、鼠标118以及其它外围设备、例如麦克风、摄像头等。
当本发明在图1所述的计算机系统100上实现时,可以提升线程池的灵活性以及整体的系统反应速度,避免在大量任务涌入线程池时任务无法被及时处理,同时可以避免线程池过大导致系统资源消耗过度,影响系统的稳定性和性能的问题,此外还可以避免在任务队列满载时拒绝任务导致请求失败的问题。
此外,可以把各实施例提供为可包括其上存储有机器可执行指令的一个或多个机器可读介质的计算机程序产品,这些指令在由诸如计算机、计算机网络或其他电子设备等的一个或多个机器执行时,可以引起一个或多个机器执行根据本发明的各实施例的操作。机器可读介质可以包括但不限于软盘、光盘、CD-ROM(紧致盘只读存储器)和磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁或光卡、闪速存储器或适用于存储机器可执行指令的其他类型的介质/机器可读介质。
此外,可以作为计算机程序产品下载各实施例,其中可以经由通信链路(例如,调制解调器和/或网络连接)由载波或其他传播介质实现和/或调制的一种或多种数据信号把程序从远程计算机(例如,服务器)传输给请求计算机(例如,客户机)。因此,在此所使用的机器可读介质可以包括这样的载波,但这不是必需的。
在本发明中,根据本发明的系统的各模块可以使用软件、硬件、固件或其组合来实现。当模块使用软件来实现时,可以通过计算机程序流程来实现模块的功能,例如模块可以通过存储在存储设备(如硬盘、内存等)中的代码段(如C、C++等语言的代码段)来实现,其中当所述代码段被处理器执行时能够实现模块的相应功能。当模块使用硬件来实现时,可以通过设置相应硬件结构来实现模块的功能,例如通过对现场可编程逻辑门阵列(FPGA)等可编程器件进行硬件编程来实现模块的功能,或者通过设计包括多个晶体管、电阻和电容等电子器件的专用集成电路(ASIC)来实现模块的功能。当模块使用固件来实现时,可以将模块的功能以程序代码形式写入设备的诸如EPROM或EEPROM之类的只读存储器中,并且当所述程序代码被处理器执行时能够实现模块的相应功能。另外,模块的某些功能可能需要由单独的硬件来实现或者通过与所述硬件协作来实现,例如检测功能通过相应传感器(如接近传感器、加速度传感器、陀螺仪等)来实现,信号发射功能通过相应通信设备(如蓝牙设备、红外通信设备、基带通信设备、Wi-Fi通信设备等)来实现,输出功能通过相应输出设备(如显示器、扬声器等)来实现,以此类推。
图4示出了本发明一个实施例中一个基于神经网络的动态维护线程池的方法的流程示意图。如图4所示,该方法包括下列步骤:
步骤401、当线程池中没有空闲线程时,使用负值数分布预测线程池出现空闲线程的概率。
步骤402、确定线程池的当前负载情况,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容。
步骤403、基于神经网络预测线程池的未来负载情况,根据线程池的未来负载情况增大线程池的核心线程数或者将线程池扩容。
下面结合具体方式详细说明该方法的各步骤。
该方法的目的是提供一个智能线程池,能够自动判断养老业务系统的负载以及线程池的负载,根据任务的类型进行分配。通常来说任务可以分为响应优先任务以及非响应优先任务。对于响应优先的任务,在提交至线程池时应当立即将任务放入有空闲线程的线程池来执行,而对于非响应优先的任务,则需要将任务放入线程池的任务队列中进行处理。由于响应优先的任务会遇到线程池没有空闲线程的情况,这种情况下无限制地创建新的线程池会造成资源的浪费,因此需要预测线程池经过多少时间会出现空闲线程。
由于线程池执行任务的时间并非是固定的,因此在本方法中使用概率分布中的负指数分布来预测线程池在给定的时间内出现空闲线程的概率,负指数分布可以很好地用于处理关于等待时间的事件模型,其中处理过程可以包括下列步骤:
步骤一、收集时间数据,其中需要收集线程池中的核心线程执行任务完成的时间数据,记录各个任务完成所需的时间,这些时间数据将用于拟合负指数分布。
步骤二、拟合负指数分布,其中利用收集到的任务执行时间数据,通过最小二乘法或者其它拟合方法,拟合负指数分布的参数λ,其中负指数分布的概率密度函数表示为下式:
f(x|λ)=λ×e-λx,x≥0,λ>0;
其中在拟合负指数分布的过程中,可以使用Python的scipy.stats.expon.fit函数来得到参数λ。
步骤三、预测空闲时间,其中根据负指数分布的参数λ预测空闲时间,可以根据累积分布函数(Cumulative Distribution Function,CDF)预测t时间之前出现空闲线程的概率,表示为下式:
F(t)=1-e-λx.
步骤四、以1-F(t)表示t时间之后出现空闲线程的概率,并且根据预设的置信水平计算线程池经过多少时间会出现空闲线程。
进一步地,当线程池无法满足任务需求时可以根据系统负载情况调大对应线程池的核心线程数或者进行线程池自动扩容。此外,当线程池自动扩容超过三次后依然无法处理任务时,将发出告警通知,进而可以进行人工干预。其中通过计算系统的负载分数Score以确定系统负载情况,表示为下式:
Score=wcpu×cpuutilization+wmemory×memoryutilization+wdisk_io×disk_ioutilization+wnetwork×network_bandwidthutilization;
其中,cpuutilization表示CPU使用率、wcpu表示CPU使用率的权重、memoryutilization表示内存使用率、wmemory表示内存使用率的权重、disk_ioutilization表示硬盘I/O使用率、wdisk_io表示硬盘I/O使用率的权重、network_bandwidthutilization表示网络带宽使用率、wnetwork表示网络带宽使用率的权重。
计算得到负载分数Score后,将负载分数Score与扩容的触发阈值thresholdexpand以及调大核心线程的触发阈值thresholdincrease_core_threads进行比较,thresholdexpand>thresholdincrease_core_threads,其中当Score≥thresholdexpand时将线程池扩容,当Score≥thresholdincrease_core_threads时调大线程池的核心线程数,当Score<thresholdincrease_core_threads时发出告警通知进行人工干预。
进一步地,可以对系统负载情况进行预测,当预测到系统负载情况将会增长时调大线程池的核心线程数,并且当预测到系统负载分数超过扩容的触发阈值时对线程池进行弹性扩容。可以基于神经网络对系统负载情况进行预测,其中包括下列步骤:
步骤一、收集数据并且对数据进行预处理。首先收集养老业务系统以及线程池的历史负载指标数据,其中系统负载指标数据包括CPU使用率、内存使用率等,线程池负载指标数据包括线程池活跃线程数、任务队列长度等。进一步地,对收集到的数据进行预处理,确保数据的一致性和完整性,对数据进行标准化使得其能够在神经网络中使用。
步骤二、进行特征提取,其中从预处理后的数据可以提取出能够对系统负载以及线程池负载进行预测的特征,这些特征可以是过去一段时间内的系统负载趋势以及线程池负载趋势。
步骤三、将特征提取后的数据划分为训练集以及测试集,其中训练集用于训练神经网络模型,测试集用于评估神经网络模型的性能。
步骤四、提供神经网络模型,其中根据预测问题的复杂程度以及数据特征,使用循环神经网络(RNN)捕捉时间序列的动态变化。
步骤五、训练神经网络模型,其中使用训练集数据对神经网络模型进行训练,并且优化损失函数,其中在使用循环神经网络进行时间序列预测的过程中可以使用均方差(Mean Squared Error,MSE)作为损失函数。
步骤六、对神经网络模型进行验证和调参,其中使用测试集数据对训练好的神经网络模型进行验证,并且根据验证结果对神经网络的超参数进行调优。
步骤七、使用训练好的神经网络模型对未来一段时间内的系统负载和线程池负载进行预测,其中可以通过滚动窗口的方式进行预测,每次滚动窗口都更新预测结果。
步骤八、根据预测结果判断未来系统负载和线程池负载是否会动态增长,当预测到负载增长时首先调整线程池的核心线程数来适应负载变化,并且当系统负载超过扩容的触发阈值时对线程池进行弹性扩容。
步骤九、对操作结果进行监控并且收集反馈数据,对神经网络模型进行持续优化,根据实际场景和数据的变化调整和改进预测和决策过程,以提高预测准确性和决策效果。
在本发明的一个实施例中还提出一个基于神经网络进行动态维护的线程池,其包括:
空闲线程预测模块,其被配置为在线程池中没有空闲线程时,使用负值数分布预测线程池出现空闲线程的概率;
当前负载情况计算模块,其被配置为确定线程池的当前负载情况,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容;以及
未来负载情况预测模块,其被配置为基于神经网络预测线程池的未来负载情况,根据线程池的未来负载情况增大线程池的核心线程数或者将线程池扩容。
尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对其做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。
Claims (10)
1.一种基于神经网络的动态维护线程池的方法,其特征在于,包括下列步骤:
当线程池中没有空闲线程时,使用负值数分布预测线程池出现空闲线程的概率;
确定线程池的当前负载情况,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容;以及
基于神经网络预测线程池的未来负载情况,根据线程池的未来负载情况增大线程池的核心线程数或者将线程池扩容。
2.根据权利要求1所述的基于神经网络的动态维护线程池的方法,其特征在于,使用负值数分布预测线程池出现空闲线程的概率包括下列步骤:
收集线程池的时间数据,其中所述时间数据包括线程池的核心线程执行任务完成的时间;
根据所述时间数据进行负指数分布拟合以确定负指数分布参数λ,其中负指数分布的概率密度函数表示为下式:
f(x|λ)=λ×e-λx,x≥0,λ>0;
根据所述负指数分布参数λ,使用累积分布函数预测线程池在t时间之前出现空闲线程的概率,表示为下式:
F(t)=1-e-λx;以及
以1-F(t)表示线程池在t时间之后出现空闲线程的概率,并且根据预设的置信水平确定线程池出现空闲线程的时间。
3.根据权利要求1所述的基于神经网络的动态维护线程池的方法,其特征在于,确定线程池的当前负载情况包括通过计算线程池的负载分数Score以确定线程池的当前负载情况,表示为下式:
Score=wcpu×cpuutilization+wmemory×memoryutilization+wdisk_io×disk_ioutilization+wnetwork×network_bandwidthutilization
其中,cpuutilization表示CPU使用率、wcpu表示CPU使用率的权重、memoryutilization表示内存使用率、wmemory表示内存使用率的权重、disk_ioutilization表示硬盘I/0使用率、wdisk_io表示硬盘I/O使用率的权重、network_bandwidthutilization表示网络带宽使用率、wnetwork表示网络带宽使用率的权重。
4.根据权利要求3所述的基于神经网络的动态维护线程池的方法,其特征在于,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容包括:
将负载分数Score与扩容的触发阈值thresholdexpand以及调大核心线程的触发阈值thresholdincrease_core_threads进行比较,threSholdexpand>thresholdincrease_core_threads,其中当Score≥thresholdexpand时将线程池扩容,当Score≥thresholdincrease_core_threads时调大线程池的核心线程数。
5.根据权利要求4所述的基于神经网络的动态维护线程池的方法,其特征在于,还包括:
当Score<thresholdincrease_core_threads时发出告警通知进行人工干预。
6.根据权利要求1所述的基于神经网络的动态维护线程池的方法,其特征在于,基于神经网络预测线程池的未来负载情况包括下列步骤:
收集线程池的历史负载指标数据,并且对所述历史负载指标数据进行预处理;
对预处理后的数据进行特征提取;
将特征提取后的数据划分为训练集以及测试集,其中训练集用于训练神经网络模型,测试集用于评估神经网络模型的性能;
提供神经网络模型,其中使用循环神经网络捕捉时间序列的动态变化;
使用训练集数据对神经网络模型进行训练并且优化均方差损失函数;
使用测试集数据对训练好的神经网络模型进行验证,并且根据验证结果对神经网络的超参数进行调优;以及
通过滚动窗口的方式使用训练后的神经网络模型预测线程池的未来负载情况。
7.根据权利要求6所述的基于神经网络的动态维护线程池的方法,其特征在于,还包括:
当线程池的未来负载情况出现增长时增大线程池的核心线程数,并且当线程池的未来负载情况超过扩容的触发阈值时对线程池进行弹性扩容。
8.一种基于神经网络进行动态维护的线程池,其特征在于,包括:
空闲线程预测模块,其被配置为在线程池中没有空闲线程时,使用负值数分布预测线程池出现空闲线程的概率;
当前负载情况计算模块,其被配置为确定线程池的当前负载情况,根据线程池的当前负载情况增大线程池的核心线程数或者将线程池扩容;以及
未来负载情况预测模块,其被配置为基于神经网络预测线程池的未来负载情况,根据线程池的未来负载情况增大线程池的核心线程数或者将线程池扩容。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序在被处理器执行时执行根据权利要求1-7之一所述的方法的步骤。
10.一种计算机系统,其特征在于,包括:
处理器,其被配置为执行机器可执行指令;以及
存储器,其上存储有机器可执行指令,所述机器可执行指令在被处理器执行时执行根据权利要求1-7之一所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311331370.9A CN117370013A (zh) | 2023-10-13 | 2023-10-13 | 一种基于神经网络的动态维护线程池的方法及线程池 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311331370.9A CN117370013A (zh) | 2023-10-13 | 2023-10-13 | 一种基于神经网络的动态维护线程池的方法及线程池 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117370013A true CN117370013A (zh) | 2024-01-09 |
Family
ID=89397743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311331370.9A Pending CN117370013A (zh) | 2023-10-13 | 2023-10-13 | 一种基于神经网络的动态维护线程池的方法及线程池 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117370013A (zh) |
-
2023
- 2023-10-13 CN CN202311331370.9A patent/CN117370013A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107592345B (zh) | 交易限流装置、方法及交易系统 | |
CN109586952B (zh) | 服务器扩容方法、装置 | |
US20220351081A1 (en) | Model training method and apparatus | |
US20210042578A1 (en) | Feature engineering orchestration method and apparatus | |
CN112905399B (zh) | 数据处理方法、异常情况预测方法及相关产品 | |
CN115269108A (zh) | 一种数据处理方法、装置及设备 | |
CN113190417A (zh) | 微服务状态检测方法、模型的训练方法、设备及存储介质 | |
CN115470079A (zh) | 一种系统故障预警方法、装置及服务器 | |
CN113902116A (zh) | 一种面向深度学习模型推理批处理优化方法与系统 | |
CN114461538A (zh) | 一种基于实时内容预测与历史资源占用的云计算应用内存管理方法 | |
CN117395253A (zh) | 一种负载均衡方法、装置、设备及其存储介质 | |
CN112596985B (zh) | 一种it资产探测方法、装置、设备和介质 | |
CN116841753B (zh) | 一种流处理和批处理的切换方法及切换装置 | |
CN112969172B (zh) | 一种基于云手机的通讯流量控制方法 | |
CN111159009B (zh) | 一种日志服务系统的压力测试方法及装置 | |
CN117319373A (zh) | 数据传输方法、装置、电子设备和计算机可读存储介质 | |
CN117370013A (zh) | 一种基于神经网络的动态维护线程池的方法及线程池 | |
CN116048762A (zh) | 基于历史数据分析的计算机资源调度系统 | |
CN114281474A (zh) | 一种资源调节方法及装置 | |
CN113360527B (zh) | 缓冲区尺寸处理方法、装置、计算机设备 | |
CN113722108A (zh) | 基于应用运行负载数据预测的容器资源弹性预伸缩方法 | |
CN112114972B (zh) | 数据倾斜的预测方法及装置 | |
CN111833232A (zh) | 一种图像处理装置 | |
KR102448702B1 (ko) | 엣지 서비스 증설 제어 시스템 및 그 제어방법 | |
CN118331750B (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 |