掌桥专利:专业的专利平台
掌桥专利
首页

瞬时高并发服务器线程池拥塞智能控制方法

文献发布时间:2023-06-19 12:02:28


瞬时高并发服务器线程池拥塞智能控制方法

技术领域

本发明涉及一种线程池拥塞智能控制方法,特别涉及一种瞬时高并发服务器线程池拥塞智能控制方法,属于高并发线程池拥塞控制技术领域。

背景技术

随着网络技术的飞速发展,各类通信交流日益频繁,经常出现瞬时高并发任务请求同时到达服务器。过多的逻辑处理和I/O读写操作,给服务器的负载处理带来了极大的挑战,亟需提高服务器瞬时高并发处理性能。服务器应具有低响应时间和高吞吐量等特征,采使用多线程程序设计,多线程程序设计采用多线程并发处理,不同的线程执行不同的任务,有效的提高了任务的并发性和服务器的实时响应能力,减小了系统资源频繁调度和切换所带来的巨额开销。

新的任务到达后,多线程程序设计会创建一个新的线程,由该线程执行任务请求,任务完成后自动销毁,这种处理方式增加了线程在创建和销毁时的开销,特别是处理频繁而短小的请求时尤为明显,针对这一问题采用线程池进行处理。线程池是一种多线程处理形式,创建初期,线程池会创建一定量的线程,每个新来的请求会分配一个空闲线程,当任务完成后,线程不会销毁而是转为等待状态,等待新的请求并再次进行处理;若线程全部处于忙碌状态,任务将暂存在队列中并等待,线程池技术避免了线程的频繁创建及销毁,提高了服务器性能。但现有技术的线程池技术在应用中仍存在一些问题,其中较为突出的是无法很好的应用在瞬时高并发的服务器中,根据请求调整线程数目的能力较差,无法及时响应用户请求,甚至导致请求丢失。

当今社会信息量爆发性增长,要求服务器能在同一个时间段内执行更多的任务,因此出现了多线程程序设计,而该方式在处理线程的创建和销毁时消耗较多的时间与资源,为了更加有效的利用线程并减小其在创建和销毁方面的开销,线程池技术被提了出来,线程池是一种多线程处理形式,它在处理任务请求时,将任务添加入队列中,然后再创建线程后自动启动这些任务。线程池能够较好的解决服务器程序性能问题,但是现有技术线程池也存在着明显不足,因此需要对线程池进行优化。

韩国西江大学的Dong Kang等人对高校资源使用情况进行了预测,并在此基础上提出了基于预测的动态线程池算法,使用指数平均方案进行预测,每一个用户连接服务器后将被监测线程记录,并且定期与历史访问平均值比较,如果差值较大则进行更新。同时根据历史记录数值预测未来将出现的状况,然后动态改变线程池的大小,但该算法统计以及预测方法所耗资源较多,同时该算法也无法应对突发事件。

北京交通大学的于晶提出采用优先级调度算法对线程池进行性能优化,线程池尺寸大小依据请求数量和平均空闲时间作为尺寸增加的标准,将线程平均空闲时间和请求处理时间作为尺寸减小的标准进行调整,该方法对于有优先级用户的请求处理有优势,同时尺寸大小的调整方式也能缓解线程池资源利用率低或者浪费等问题。但不足在于不能对并发瞬时请求进行响应,同时提出的优先级没有考虑低优先级长时间等待等问题,具有使用限制。

孙东旭提出了一种基于分段自适应的算法,该算法能够较好的解决线程池自适应的要求,但该算法是根据特定的研究背景得到的,其应用场景有一定的局限性。F.BAHADUR提出根据频率进行优化的策略线程池优化算法,主要策略是通过设置入队列及出队列两个存储队列,每两个任务被执行就计算总的回转时间和等待时间,通过对时间相关性分析判断是否每一个任务都能迅速得到响应,通过这种方法判断线程池尺寸能否满足当前要求,同时根据不同结果进行改变线程池的尺寸大小,该解决方法使用效率高,但缺点是该算法需要统计用户访问频率,因此需要存储历史数据并进行统计,需要消耗较多资源,同时统计也需要较复杂的方式实现。

现有技术依然没很好的解决瞬时高并发服务器线程池控制问题,现有技术的难点和本发明解决的问题主要集中在以下方面:

第一,现有技术的线程池技术在应用中存在一些问题,其中较为突出的问题包括:一是无法很好的应用在瞬时高并发的服务器中,根据请求调整线程数目的能力较差,无法及时响应用户请求,甚至导致请求丢失;二是算法统计以及预测方法所耗资源较多,同时也无法应对突发事件;三是不能对并发瞬时请求进行响应,同时提出的优先级没有考虑低优先级长时间等待等问题,具有使用限制;四是根据特定的研究背景得到的,其应用场景有一定的局限性;五是需要统计用户访问频率,因此需要存储历史数据并进行统计,需要消耗较多资源,同时统计也需要较复杂的方式实现;

第二,种类繁多的网络应用对网络服务提出了巨大的挑战,现有技术的线程池对于瞬时并发量大的系统无法及时响应,降低了响应速度,增加了对请求的响应时间,无法满足用户需求,对于瞬时并发量大的服务器适应能力很差,响应时间无法保证;不利于网络服务变得高效、低响应时间、高吞吐量和节省服务资源;

第三,现有技术的动态线程池具有一定的局限性,当同一时刻大量用户并发访问时,会导致线程数增大不及时,此时会使任务数处于等待状态,过长的等待会使任务被丢弃,最终导致类拥塞的发生,而当服务器响应不及时丢弃任务时,会调用相关函数对该任务进行处理,反馈给服务器该系统的拥塞情况,需要针对该系统提出一种线程池拥塞控制方法,拥塞控制根据网络状况自适应调节发送端的速率,当网络情况良好时拥塞控制增大发送速率,尽快到达网络信道最大容量;当根据反馈信息发现网络拥塞时,拥塞控制通过对发送端进行处理,调整发送速率,降低网络拥塞出现状况;

第四,现有技术基于平均数的线程池动态算法虽然具有稳定性,但对于其预测出的线程池尺寸结果都是根据上一阶段推测出来的,具有滞后性,在面对瞬时并发的应用环境中难免产生问题;基于分段的线程池动态调整算法的调整是对第一种算法的改进,具有稳定性,但在进行预测时由于是采用上一次结果为调整基数,导致增大幅度平缓,对于瞬时并发量大状况同样存在响应不及时的问题;基于平均处理时间的智能算法优势是能直接根据计算平均任务处理时间与之前的时间比较,在一个范围内如果不满足要求时可以进行微调达到所需要求,但如果面对瞬时并发性的任务时,由于时间差距大,其调整将花费过多时间,难以满足要求。

发明内容

针对现有技术的不足,本发明根据实际应用需求对线程池技术进行研发,并对现有技术的线程池进行改进。针对当前对服务器系统的实时响应速度要求较高,同时由于采用服务器存储转发机制,进一步增加了服务器对大量数据处理的需求,简单的将现有技术线程池用于高并发服务器中不能满足系统需要,基于这种情况,本发明基于拥塞控制算法对网络拥塞情况的处理方式提出了一种瞬时高并发服务器线程池拥塞智能控制方法,提高服务器的性能,满足瞬时高并发下的运用需求。

为达到以上技术效果,本发明所采用的技术方案如下:

瞬时高并发服务器线程池拥塞智能控制方法,基于拥塞自适应控制算法对线程池智能算法进行改进优化,优化服务器在瞬时高并发下的性能,主要包括:第一,解析线程池的运行作用参数以及运行机制,设置拥塞自适应控制的作用参数以及算法流程,基于二者的运行原理和特征,对线程池以及拥塞自适应控制算法进行对比,明晰拥塞自适应控制算法在线程池智能算法中的可行性;第二,解析对比线程池以及拥塞控制算法的作用参数,构建拥塞自适应控制算法与线程池智能算法的结合模型,提出选取拥塞自适应控制算法的影响因子,选取并改良适用于线程池智能算法的拥塞自适应控制算法;第三,基于本发明线程池设计方法和设计因素,解析线程池智能算法,结合本发明的拥塞自适应控制算法,提出一种基于拥塞自适应控制的线程池智能算法,提出拥塞自适应控制中的作用参数应用在线程池中的具体方法,并在线程池中实现,使瞬时并发量大的服务器系统中仍能保持较短的响应时间;

线程池拥塞智能控制的实现方法包括:

第一,在代码运行过程中根据不同状况而设置对应的策略,流程开始时获取所需参数,即从上一个时刻到当前时刻的一个时间间隔内所到达的任务数jsck、完成的任务数ysck,基于这两个参数的比较判断当前线程池尺寸是上升阶段、平衡阶段还是下降阶段,

第二,根据不同阶段的策略对应调整当前线程池,同时根据该时段内的任务增大情况预测下一个时段内需要的线程数,如果是在增大阶段,将其线程池尺寸增大指数扩大一倍,采用基于改进慢启动的线程池增大算法,如果是在减小阶段,采用两种方式并行处理,分别采用基于STCP及拥塞防止的线程池减小算法,根据这两种算法分别求出结果,当STCP的结果能够满足大于正在运行的线程数目时将其作为参考因子,然后求取两者之间的较小值,为应对下一个阶段可能出现线程池增大的情况,此时预留一定的线程数预防突发瞬时请求,如果是在平衡阶段,不做任何改动;

第三,基于线程池上限值和下限值的存在,线程池尺寸不能无限增加或减小,在进行以上步骤之后,将当前线程池尺寸与上限值和下限值进行比较,如果是线程池尺寸上升阶段,则与上限值进行比较,防止线程池尺寸无限增加,两者相比取其小;如果是线程池尺寸下降阶段,则与下限值进行比较,防止线程池尺寸无限减小,两者相比取其大,让线程池最终能够达到所需尺寸,并且线程池尺寸无论增大或者减小,预测的线程池大小都略大于可能的任务请求数,保证能够较快的响应用户请求,达到减小用户响应时间的效果,判断完成之后进入等待状态,设置睡眠模式,使该检测调整程序隔一段时间运行一次。

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,拥塞自适应控制算法的线程池优化是对本发明设计的拥塞自适应控制算法进行改进并将其应用在线程池中,最后对线程池中优化并具体实现,线程池尺寸大小调整的核心是在尽可能满足用户需求条件下对应用服务器的资源占用率尽可能少,线程池的尺寸调整遵循以下两个准则:

准则一:对于单个用户,用户的响应时间尽量短,而用户的响应时间是通过多次测量得出的平均值,即R=(R

准则二:系统需要有更高的吞吐量以及在满足该条件下负载尽可能的小;

线程池智能调整算法分为二部分,分别是对于线程池尺寸的增大以及对于线程池尺寸的减小,对于线程池尺寸的增大采用基于改进慢启动的线程池增大算法,对于线程池尺寸的减小采用基于STCP及拥塞防止的线程池减小算法。

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,基于改进慢启动的线程池增大算法:线程池具有高的瞬时并发处理性能,然后当高峰期过后能及时减小线程池大小,但是进行线程池减小时需要考虑预留一定的线程数目处理突发事件,根据上述相关要点进行线程池的拥塞自适应控制方式的优化,其要点包括:

要点一,在系统启动时就需要存在一定的线程,且在空闲时也需要尽量维持足够的线程进行运行,以防突发性任务,所以需要设置一个R

要点二,在优化时考虑在创建了足够的线程之后,冗余的线程对于系性能的影响,过多线程可能出现资源不足的问题,增大响应时间,更有可能出现两个线程互相争夺资源出现死锁的结果,所以设置一个足够大的R

要点三,在上限R

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,基于改进慢启动的线程池增大算法:开始采用慢启动对线程池智能算法中的尺寸增大进行设计实现,慢启动包含三个参数:发送窗口、拥塞窗口和接收窗口,其中发送窗口大小是发送数据包大小,拥塞窗口是调整整个发送端能够发送的数据包速率,发送窗口的大小由拥塞窗口决定,接收窗口的大小只在初始阶段使用;

线程池智能算法首先采用慢启动算法,设置发送窗口、拥塞窗口和接收窗口参数,根据发送窗口的作用使用线程池中的核心线程数corePoolSize来替代,拥塞窗口没有直接的参数进行替代,本发明采用两种参数获得,分别是记录一个时间间隔内的任务完成数ysck,以及一个时间间隔内的任务到达数jsck,通过两个数的大小比较决定当前线程池的尺寸是增加还是减小;

当jsck>ysck时,表示在一个时间间隔内到达的任务数大于完成的任务数,线程池处于增大状态,当jsck

然后通过对两个参数比较得出对应的值,在慢启动阶段表示为jsck>ysck,所以从上一个时刻到这一时刻的线程增大数xczds为到达的任务数与完成的任务数之差,当前时刻的线程池尺寸大小为当前运行的线程数workxczds与线程增大数之和,在拥塞自适应控制中的慢启动算法中,拥塞窗口的增大量根据接收到的确认帧来改变,需预测下一个时刻的线程增大状态,在当前时刻对线程池的核心线程数变为线程池增大数的两倍与当前运行的线程数之和,其算法如式4:

R

在使用慢启动算法进行线程池智能算法时需要设置最大线程数目R

R

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,基于STCP及拥塞防止的线程池减小算法:线程池智能减小算法采用拥塞防止算法及STCP算法改进结合的方式实现,拥塞防止算法在减小拥塞窗口大小时采用一个新的参数即慢启动临界值mqdljz,mqdljz取拥塞窗口的一半,减小发送速率,线程池尺寸减小时同样需要预留一定的空闲线程,通过该线程避免突发事件导致服务器响应时间过长,线程池采用两个参数并行处理代替拥塞窗口,分别为jsck和ysck,在线程池减小阶段,其单位时间任务完成量大于任务请求量,即ysck>jsck,在这种情况下多余的线程数xczds为两者差的绝对值,为预留一定的线程,多余的线程数进行减半,从而预测下一次的线程数为当前运行中的线程数以及多余的线程数的一半之和,其算法式如下:

STCP减小线程池尺寸的算法具有较平滑的曲线,应用在线程池智能算法中,STCP算法与拥塞窗口有关,与其它参数无关,对其进行设置,其算法式如下:

通过式7得出STCP算法的线程池尺寸预测值后,判断该值是否小于当前正在运行的工作线程数,当大于时直接与拥塞防止算法结果进行比较取最小值,如果预测值小于工作线程数时由于正在运行的线程无法直接停止运行,线程池尺寸无法调整到该值,所以将结果进行舍弃直接默认该值为无穷大,并与拥塞防止算法进行比较:

R

式6和式7分别表示拥塞防止算法以及STCP算法应用在线程池中的算法改进,二种算法都是对线程池尺寸进行减小,通过式8来选取二者之间较好的结果值作为最优解,在尽可能的减小空余线程的同时对其预留一定的线程,最后判断线程池的下限值,其算法如式9:

R

当jsck=ysck时,表示当前处于平衡状态,请求任务量与完成量两者持平,不改变线程池的大小,此时不做处理。

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,本发明拥塞自适应控制模型的设计标准主要考虑以下因素:

标准一,在线程池中的可行性;

标准二,瞬时高并发处理性能;

标准三,合理减小尺寸,线程池不仅要增加线程池尺寸,同时也要根据要求减小线程池尺寸,拥塞自适应控制算法应能够处理瞬时并发数据合理减小线程池空闲线程数;

标准四,算法消耗时间少,线程池对时间精度要求高,调节线程池尺寸的算法消耗的时间尽可能小;

根据系统需求以及拥塞自适应控制特征,在进行拥塞自适应控制设计时应满足标准一和标准四,标准二或者标准三任意满足一条即可。

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,慢启动算法的核心是:当发送端发送数据时,由于还不清楚网络状况,若立即将大量数据注入到网络中,可能引起网络拥塞,优选方法是试探一下,由小到大逐渐增大发送的数据量,慢启动算法的实现过程是:首先发送端与目标端建立连接,此时初始化拥塞窗口大小,将其大小设定为一个数据包大小,并获取返回的确认帧,得出接收窗口的大小,发送窗口的大小根据拥塞窗口与接收窗口确定,三者之间的关系如式1所示:

fsck=min{ysck,jsck} 式1

fsck表示发送窗口,ysck表示拥塞窗口,jsck表示接收窗口,发送窗口的大小取拥塞窗口和接收窗口的最小值,在之后的运行过程中,当发送端收到接收端反馈的消息确认帧ACK时,发送端拥塞窗口增加收到ACK数量的包大小,当没有出现网络拥塞时每隔一个RTT时间拥塞窗口增加一倍,呈现指数倍增大,使得TCP流量尽快达到网络容量最大值,提高带宽利用率。

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,慢启动算法的作用参数为拥塞窗口、发送窗口和接收窗口,根据这三个参数以及拥塞自适应控制模型设计标准解析该算法应用在线程池中:首先具有可行性,然后是对瞬时并发数据的及时响应,慢启动算法拥塞窗口呈指数型增大,在初始阶段拥塞窗口数量很小,随着时间增加,窗口大小快速增大,在最短时间内到达网络最大容量,因此对瞬时并发量大的数据的及时响应能够满足,该算法是一个增大算法,对于标准三中合理减小尺寸的无法满足,该算法只是数据的乘法计算,且处理过程简单,算法消耗时间少这一点同样满足,慢启动算法符合选取标准一、二和四,能应用在线程池算法中。

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,拥塞防止算法:首先假设丢包不是由包损坏引起的,如果包丢失就说明在网络传输过程中有某处发生了拥塞,数据包丢失以从两方面确认:重传计时器超时或者接收端连续接收重复确认帧,发送端出现超时或者连续收到3个重复ACK就表示出现拥塞,此时启动拥塞防止算法;

拥塞防止工作流程为:慢启动算法使拥塞窗口一直成倍增大,这一过程不可能一直持续,需设置一个慢启动临界值mqdljz,当拥塞窗口达到该值就不再加倍,改为线性增大,一旦出现数据传输超时,就把拥塞窗口重新置位1,并再次开始慢启动算法,拥塞防止算法主要处理慢启动算法增大过快状况,减小拥塞窗口并限制慢启动窗口增大速率,使网络能够恢复到正常状态下。

瞬时高并发服务器线程池拥塞智能控制方法,进一步的,STCP是一种基于积式增加,积式减小策略的协议,分为二个部分,分别为拥塞窗口的增加以及拥塞窗口的减小,当收到ACK确认帧时,拥塞窗口增加,此时增加方法如式2所示:

ysck=ysck+a a=0.01 式2

当发生拥塞时,其算法如式3所示:

ysck=ysck-b*ysck b=0.125式3 式3

STCP算法通过二个参数调节拥塞窗口的增加与减小,参数a和b是处于(0,1)之间的常数,实施例中a=0.01,b=0.125时最为合适,当收到一个确认数据帧时拥塞窗口增加0.01,当探测到拥塞时,拥塞窗口减小八分之一大小,STCP算法不管初始发送速率是多少,其发送速率翻倍所需时间是70个RTT时间,该拥塞窗口的更新算法可扩展,STCP算法作用参数有二个,为拥塞窗口和发送窗口,通过调节拥塞窗口达到对发送速率的调节;

通过对多种拥塞控制算法进行解析,根据影响因素及设计算法标准进行拥塞自适应控制算法的设计,具有可行性且能够应用在线程池中的算法有慢启动算法、拥塞防止算法和STCP算法,慢启动算法拥塞窗口呈指数型增大因此满足瞬时并发能力,应用在对线程池尺寸进行增大的算法调整中,拥塞防止算法和STCP算法则更适合应用在线程池尺寸减小的算法阶段,本发明进一步对三种算法进行改进合并,优化融合它们的优点加入线程池智能算法中。

与现有技术相比,本发明的贡献和创新点在于:

第一,本发明提出一种瞬时高并发服务器线程池拥塞智能控制方法,使瞬时并发量大的服务器系统中仍能保持较短的响应时间,通过解析线程池以及拥塞控制算法的运行机制、实现原理,明晰拥塞控制算法在线程池中实现的可行性,解析对比线程池以及拥塞控制算法的作用参数,确定选取拥塞控制算法的条件,解析拥塞控制算法并选取满足条件的算法,结合选取的满足线程池应用的拥塞控制算法特征对算法进行改进并在线程池中实现,实验结果证明,本发明方法对于瞬时并发量大的服务器具有较好的适应能力,能够保证较短的响应时间,方法具有很强的可扩展性,具有很高的实用价值和广阔的应用前景;

第二,本发明以响应时间作为第一目标,在该目标下设置线程池的尺寸改变尽量略大于当前用户任务请求数,减小用户的等待时间,本发明的方法在响应时间性能上有较大提高;从资源占用状况上看,随着用户数的增加,虽然两者资源占用情况基本持平,但本发明拥塞自适应控制线程池占用比平均池线程池占用少。结合两个性能指标进行评估,拥塞自适应控制线程池算法在响应时间上有了显著的提高,而对于资源占用状况能够基本保持持平,其性能基本达标,本发明能够较好的解决瞬时高并发服务器线程池拥塞问题,达到了预期目标;

第三,本发明基于拥塞自适应控制算法对线程池智能算法进行改进优化,优化服务器在瞬时高并发下的性能,解析线程池的运行作用参数以及运行机制,设置拥塞自适应控制的作用参数以及算法流程,基于二者的运行原理和特征,构建拥塞自适应控制算法与线程池智能算法的结合模型,提出选取拥塞自适应控制算法的影响因子,选取并改良适用于线程池智能算法的拥塞自适应控制算法;提出拥塞自适应控制中的作用参数应用在线程池中的具体方法,提出瞬时高并发服务器线程池拥塞智能控制的流程步骤;应用在实际中进行验证,结果证明本发明方法的正确性和高效性,提高了服务器的性能,满足瞬时高并发下的运用需求;

第四,本发明能很好的应用在瞬时高并发的服务器中,根据请求调整线程数目的能力较强,能够及时响应用户请求,杜绝请求丢失;算法统计以及预测方法所耗资源较少,能够应对突发事件;能对并发瞬时请求进行响应,没有使用限制,其应用场景没有局限性;不需要统计用户访问频率,不需要存储历史数据,消耗资源少,实现方式也比较简单,有助于使网络服务变得高效、低响应时间、高吞吐量和节省服务资源。

附图说明

图1是本发明的慢启动算法的拥塞曲线示意图。

图2是本发明的拥塞防止算法的工作流程示意图。

图3是本发明基于改进慢启动的线程池增大算法流程示意图。

图4是本发明基于STCP及拥塞防止的线程池减小算法流程示意图。

图5是瞬时高并发服务器线程池拥塞智能控制方法流程示意图。

具体实施方式

下面结合附图,对本发明提供的瞬时高并发服务器线程池拥塞智能控制方法的技术方案进行进一步的描述,使本领域的技术人员能够更好的理解本发明并能予以实施。

随着信息产业的迅猛发展,出现了种类繁多的网络应用,对网络服务提出了巨大的挑战。如何使网络服务变得高效、低响应时间、高吞吐量和节省服务资源成为关键,线程池为解决这一问题提供了解决方案。线程池是一种多线程处理方式,它无需频繁创建销毁线程,提高系统响应速度,减小资源消耗,然而现有技术的线程池对于瞬时并发量大的系统无法及时响应,降低了响应速度,增加了对请求的响应时间,无法满足用户需求。

本发明提出一种瞬时高并发服务器线程池拥塞智能控制方法,旨在使瞬时并发量大的服务器系统中仍能保持较短的响应时间,通过解析线程池以及拥塞控制算法的运行机制、实现原理,明晰拥塞控制算法在线程池中实现的可行性,解析对比线程池以及拥塞控制算法的作用参数,确定选取拥塞控制算法的条件,解析拥塞控制算法并选取满足条件的算法,结合选取的满足线程池应用的拥塞控制算法特征对算法进行改进并在线程池中实现,实验结果证明,本发明方法对于瞬时并发量大的服务器具有较好的适应能力,能够保证较短的响应时间。

一、拥塞控制应用在线程池的原因

线程池分为固定线程池和动态线程池,为提高服务器的响应速度,降低任务请求的响应时间采用动态线程池,现有技术的动态线程池具有一定的局限性,当同一时刻大量用户并发访问时,会导致线程数增大不及时,此时会使任务数处于等待状态,过长的等待会使任务被丢弃,最终导致类拥塞的发生,而当服务器响应不及时丢弃任务时,会调用相关函数对该任务进行处理,反馈给服务器该系统的拥塞情况,需要针对该系统提出一种线程池拥塞控制方法,拥塞控制根据网络状况自适应调节发送端的速率,当网络情况良好时拥塞控制增大发送速率,尽快到达网络信道最大容量;当根据反馈信息发现网络拥塞时,拥塞控制通过对发送端进行处理,调整发送速率,降低网络拥塞出现状况。

本发明对比线程池与拥塞控制的相近特征,提出将拥塞控制算法改进后应用在线程池自适应算法中,基于线程池及拥塞控制算法主要有以下相近特征:

第一,具有动态调整特征,动态线程池的实现根据当前的用户请求量,结合线程池算法进行智能调度机制,基于任务性质、用户请求等待时间因素在规定的上下临界值之间调节线程池的尺寸,减小线程池的响应时间,拥塞控制的初始目的是在网路传输过程中减小数据包丢失,防止无限制的发包导致拥塞崩溃,拥塞控制通过接收反馈的确认包信息使用拥塞控制算法智能调整发包频率,网路空闲加大发包率,网路繁忙减小发包数量,最终避免发生网路崩溃丢包率过高状况,两者都是根据对应场景情况自动调节大小达到所需目的。

第二,有相似的性能趋势,拥塞控制的吞吐量负载趋势呈现抛物线,其上有两个拐点,分别表示膝点和崖点,两点作为分割线将趋势图分为三个部分,第一部分是拥塞防止阶段,随着负载量的增加,吞吐量同样增加,二者此时呈线性比例增大,当负载达到一定的阶段,即超过膝点后,吞吐量的增大幅度随负载增加逐渐减小,当负载到崖点时吞吐量到达顶点,膝点与崖点之间的区间为拥塞恢复区间,当负载超过崖点后,随着负载增大,吞吐量急剧减小,出现拥塞崩溃,崖点之后的区间为拥塞崩溃区间,系统线程池同样随工作线程数目的增加形成抛物线,在初始阶段,系统性能随工作线程数的增加提高,当超过某一限定值后,随工作线程数增大,系统性能开始逐渐减小。

通过对线程池和拥塞控制算法的运行特征及负载图对比解析,拥塞控制在处理负载时反应速度灵敏,能根据对应状况快速调整策略,及时响应系统要求,且二者运行趋势相似,所以本发明将拥塞控制算法改进后应用在线程池中。

二、线程池的拥塞自适应控制模型设计

(一)拥塞自适应控制模型设计标准

拥塞自适应控制模型的设计标准主要考虑以下因素:

标准一,在线程池中的可行性;

标准二,瞬时高并发处理性能;

标准三,合理减小尺寸,线程池不仅要增加线程池尺寸,同时也要根据要求减小线程池尺寸,拥塞自适应控制算法应能够处理瞬时并发数据合理减小线程池空闲线程数;

标准四,算法消耗时间少,线程池对时间精度要求高,调节线程池尺寸的算法消耗的时间尽可能小;

根据系统需求以及拥塞自适应控制特征,在进行拥塞自适应控制设计时应满足标准一和标准四,标准二或者标准三任意满足一条即可。

(二)拥塞自适应控制算法解析设计

本发明结合拥塞自适应控制模型设计标准确定线程池拥塞自适应控制算法。

1、慢启动算法

慢启动算法的核心是:当发送端发送数据时,由于还不清楚网络状况,若立即将大量数据注入到网络中,可能引起网络拥塞,较好的方法是试探一下,由小到大逐渐增大发送的数据量。慢启动算法的实现过程是:首先发送端与目标端建立连接,此时初始化拥塞窗口大小,将其大小设定为一个数据包大小,并获取返回的确认帧,得出接收窗口的大小,发送窗口的大小根据拥塞窗口与接收窗口确定,三者之间的关系如式1所示:

fsck=min{ysck,jsck} 式1

fsck表示发送窗口,ysck表示拥塞窗口,jsck表示接收窗口,发送窗口的大小取拥塞窗口和接收窗口的最小值,在之后的运行过程中,当发送端收到接收端反馈的消息确认帧ACK时,发送端拥塞窗口增加收到ACK数量的包大小,当没有出现网络拥塞时每隔一个RTT时间拥塞窗口增加一倍,呈现指数倍增大,使得TCP流量尽快达到网络容量最大值,提高带宽利用率。

慢启动算法的作用参数为拥塞窗口、发送窗口和接收窗口,根据这三个参数以及拥塞自适应控制模型设计标准解析该算法应用在线程池中:首先具有可行性,然后是对瞬时并发数据的及时响应,根据图1所示,慢启动算法拥塞窗口呈指数型增大,在初始阶段拥塞窗口数量很小,随着时间增加,窗口大小快速增大,在最短时间内到达网络最大容量,因此对瞬时并发量大的数据的及时响应能够满足,该算法是一个增大算法,对于标准三中合理减小尺寸的无法满足,该算法只是数据的乘法计算,且处理过程简单,算法消耗时间少这一点同样满足,慢启动算法符合选取标准一、二和四,能应用在线程池算法中。

2、拥塞防止算法

首先假设丢包不是由包损坏引起的,如果包丢失就说明在网络传输过程中有某处发生了拥塞,数据包丢失以从两方面确认:重传计时器超时或者接收端连续接收重复确认帧,发送端出现超时或者连续收到3个重复ACK就表示出现拥塞,此时启动拥塞防止算法。

拥塞防止工作流程如图2所示:慢启动算法使拥塞窗口一直成倍增大,这一过程不可能一直持续,需设置一个慢启动临界值mqdljz,当拥塞窗口达到该值就不再加倍,改为线性增大,一旦出现数据传输超时,就把拥塞窗口重新置位1,并再次开始慢启动算法。拥塞防止算法主要处理慢启动算法增大过快状况,减小拥塞窗口并限制慢启动窗口增大速率,使网络能够恢复到正常状态下。

拥塞防止算法的作用参数为拥塞窗口,慢启动临界值和发送窗口,根据这三个参数以及算法选取标准解析该算法应用在线程池中:首先拥塞防止算法减缓拥塞窗口值的增加速率,具有可行性,拥塞防止算法采用加法增加,乘法减小的算法特征,在增加拥塞窗口时,采用每收到确认帧窗口增加1/ysck的方式,因此无法满足线程池瞬时并发数据的及时响应,算法乘法减小的处理上,拥塞防止能快速改变窗口尺寸,因此满足线程池空闲线程数的合理减小的标准,在满足标准三下考虑算法的消耗时间,由于按乘法减小状况,处理时较方便,算法消耗时间也很少,满足标准四,综上所述,该算法满足选取标准一、三和四,能够应用在线程池算法中。

3、STCP算法

STCP是一种基于积式增加,积式减小策略的协议,分为二个部分,分别为拥塞窗口的增加以及拥塞窗口的减小,当收到ACK确认帧时,拥塞窗口增加,此时增加方法如式2所示:

ysck=ysck+a a=0.01 式2

当发生拥塞时,其算法如式3所示:

ysck=ysck-b*ysck b=0.125式3 式3

STCP算法通过二个参数调节拥塞窗口的增加与减小,参数a和b是处于(0,1)之间的常数,实施例中a=0.01,b=0.125时最为合适,当收到一个确认数据帧时拥塞窗口增加0.01,当探测到拥塞时,拥塞窗口减小八分之一大小,STCP算法不管初始发送速率是多少,其发送速率翻倍所需时间是70个RTT时间,该拥塞窗口的更新算法可扩展,STCP算法作用参数有二个,为拥塞窗口和发送窗口,通过调节拥塞窗口达到对发送速率的调节。

根据其参数及算法设计标准解析该算法应用在线程池中:首先STCP算法只需改变拥塞窗口大小,且改变参数都已定好,能够直接应用,具有可行性,STCP算法在窗口增加时采用线性增加的方法,对于瞬时并发量大的线程池无法及时响应,不满足设计标准二,同时STCP算法窗口减小是减小当前窗口八分之一大小的数据,满足线程池的设计标准三,算法实现只需进行加减乘除操作,运行时间少,符合设计标准四,综上所述,该算法满足设计标准一、条三和四,能应用在线程池算法中。

通过对多种拥塞控制算法进行解析,根据影响因素及设计算法标准进行拥塞自适应控制算法的设计,具有可行性且能够应用在线程池中的算法有慢启动算法、拥塞防止算法和STCP算法,慢启动算法拥塞窗口呈指数型增大因此满足瞬时并发能力,应用在对线程池尺寸进行增大的算法调整中,拥塞防止算法和STCP算法则更适合应用在线程池尺寸减小的算法阶段,本发明进一步对三种算法进行改进合并,优化融合它们的优点加入线程池智能算法中。

三、线程池智能算法优化

(一)线程池拥塞智能控制规则

线程池拥塞智能控制规则包括线程池拥塞智能调整方法、线程池拥塞智能调控因素、线程池性能评价体系。

1、线程池拥塞智能调整方法

线程池拥塞智能调整是对其大小的动态改变,采用动态调整线程池线程数目的方法。

2、线程池拥塞智能调控因素

线程池尺寸的调整避免出现两个极端:线程数太少或太多,线程池中线程数太少,线程池无法及时响应所有用户的请求,甚至出现用户请求被拒绝状况,线程池中线程数目太多会消耗过多的系统资源,给服务器带来极大的负担,对线程池尺寸的调整包括以下几个方面:第一,初始化线程池的线程数;第二,程序运行中合适的线程数;第三,线程池最大的线程数。

线程池初始化时规定一定量的线程数,该线程数即是线程池的下限,需满足普通情况下的用户请求量,其值采用测量法确定。

线程池最大线程数根据开发人员对整个系统的承载能力以及配置评估得出,根据该值限定线程池中线程数大小,防止创建过多线程导致系统性能降低。

3、线程池性能评价体系

线程池性能评价体系包括:一是响应时间,是从用户发送请求给服务器开始到接收到从服务器返回结果的时间间隔,响应时间的长短直接关系用户体验;第二,吞吐量,是单位时间内服务器处理用户请求数量;第三,资源利用率:是系统在运行过程中对资源的消耗情况。

(二)线程池智能算法的性能解析

线程池算法主要是对于动态线程池来说的,对于动态线程池都会为线程数目设置一个上下限的临界值,其作用是为了让线程数目保持在一定的范围内,而不会因为线程数目过多或者过少等原因导致系统资源利用率降低,并且影响系统响应时间。而在上下限之间的线程数目需要根据线程池算法进行调节,比较好的线程池算法根据当前的任务量以及其它相关因素自动调整线程池的数目,同时兼顾系统响应时间以及系统资源利用率等因素。

基于平均数的线程池动态算法虽然具有稳定性,但对于其预测出的线程池尺寸结果都是根据上一阶段推测出来的,具有滞后性,在面对瞬时并发的应用环境中难免产生问题;基于分段智能的线程池动态调整算法的调整是对第一种算法的改进,具有稳定性,但在进行预测时由于是采用上一次结果为调整基数,导致增大幅度平缓,对于瞬时并发量大状况同样存在响应不及时的问题;基于平均处理时间的智能算法优势是能直接根据计算平均任务处理时间与之前的时间比较,在一个范围内如果不满足要求时可以进行微调达到所需要求,因此在一般情况下线程池尺寸的调整较为精确,但如果面对瞬时并发性的任务时,由于时间差距大,其调整将花费过多时间,难以满足要求。

(三)拥塞自适应控制算法的线程池优化

拥塞自适应控制算法的线程池优化是对本发明设计的拥塞自适应控制算法进行改进并将其应用在线程池中,最后对线程池中优化并具体实现,线程池尺寸大小调整的核心是在尽可能满足用户需求条件下对应用服务器的资源占用率尽可能少,线程池的尺寸调整遵循以下两个准则:

准则一:对于单个用户,用户的响应时间尽量短,而用户的响应时间是通过多次测量得出的平均值,即R=(R

准则二:系统需要有更高的吞吐量以及在满足该条件下负载尽可能的小。

线程池智能调整算法分为二部分,分别是对于线程池尺寸的增大以及对于线程池尺寸的减小,对于线程池尺寸的增大主要依靠慢启动算法,对于线程池尺寸的减小采用拥塞防止以及STCP算法进行改进。

1、基于改进慢启动的线程池增大算法

线程池具有高的瞬时并发处理性能,然后当高峰期过后能及时减小线程池大小,但是进行线程池减小时需要考虑预留一定的线程数目处理突发事件,根据上述相关要点进行线程池的拥塞自适应控制方式的优化,其要点包括:

要点一,在系统启动时就需要存在一定的线程,且在空闲时也需要尽量维持足够的线程进行运行,以防突发性任务,所以需要设置一个R

要点二,在优化时考虑在创建了足够的线程之后,冗余的线程对于系性能的影响,过多线程可能出现资源不足的问题,增大响应时间,更有可能出现两个线程互相争夺资源出现死锁的结果,所以设置一个足够大的R

要点三,在上限R

开始采用慢启动对线程池智能算法中的尺寸增大进行设计实现,慢启动包含三个参数:发送窗口、拥塞窗口和接收窗口,其中发送窗口大小是发送数据包大小,拥塞窗口是调整整个发送端能够发送的数据包速率,发送窗口的大小由拥塞窗口决定,接收窗口的大小只在初始阶段使用,不起决定作用。

线程池智能算法首先采用慢启动算法,设置发送窗口、拥塞窗口和接收窗口参数,根据发送窗口的作用使用线程池中的核心线程数corePoolSize来替代,拥塞窗口没有直接的参数进行替代,本发明采用两种参数获得,分别是记录一个时间间隔内的任务完成数ysck,以及一个时间间隔内的任务到达数jsck,通过两个数的大小比较决定当前线程池的尺寸是增加还是减小。

当jsck>ysck时,表示在一个时间间隔内到达的任务数大于完成的任务数,线程池处于增大状态,当jsck

然后通过对两个参数比较得出对应的值,在慢启动阶段表示为jsck>ysck,所以从上一个时刻到这一时刻的线程增大数xczds为到达的任务数与完成的任务数之差,当前时刻的线程池尺寸大小为当前运行的线程数workxczds与线程增大数之和,在拥塞自适应控制中的慢启动算法中,拥塞窗口的增大量根据接收到的确认帧来改变,需预测下一个时刻的线程增大状态,在当前时刻对线程池的核心线程数变为线程池增大数的两倍与当前运行的线程数之和,其算法如式4:

R

在使用慢启动算法进行线程池智能算法时需要设置最大线程数目R

R

线程池的尺寸增大算法的流程图如图3所示。

2、基于STCP及拥塞防止的线程池减小算法

线程池的智能增大算法采用基于改进慢启动的线程池增大算法实现,线程池智能减小算法采用拥塞防止算法及STCP算法改进结合的方式实现,拥塞防止算法在减小拥塞窗口大小时采用一个新的参数即慢启动临界值mqdljz,mqdljz取拥塞窗口的一半,减小发送速率,线程池尺寸减小时同样需要预留一定的空闲线程,通过该线程避免突发事件导致服务器响应时间过长,线程池采用两个参数并行处理代替拥塞窗口,分别为jsck和ysck,在线程池减小阶段,其单位时间任务完成量大于任务请求量,即ysck>jsck,在这种情况下多余的线程数xczds为两者差的绝对值,为预留一定的线程,多余的线程数进行减半,从而预测下一次的线程数为当前运行中的线程数以及多余的线程数的一半之和,其算法式如下:

STCP增大线程池尺寸的算法具有一定的局限性,无法满足要求,而减小线程池尺寸的算法具有较平滑的曲线,应用在线程池智能算法中,STCP算法与拥塞窗口有关,与其它参数无关,对其进行设置,其算法式如下:

通过式7得出STCP算法的线程池尺寸预测值后,判断该值是否小于当前正在运行的工作线程数,当大于时直接与拥塞防止算法结果进行比较取最小值,如果预测值小于工作线程数时由于正在运行的线程无法直接停止运行,线程池尺寸无法调整到该值,所以将结果进行舍弃直接默认该值为无穷大,并与拥塞防止算法进行比较:

R

式6和式7分别表示拥塞防止算法以及STCP算法应用在线程池中的算法改进,二种算法都是对线程池尺寸进行减小,通过式8来选取二者之间较好的结果值作为最优解,在尽可能的减小空余线程的同时对其预留一定的线程,最后判断线程池的下限值,其算法如式9:

R

其线程池的减少流程图如图4所示。

当jsck=ysck时,表示当前处于平衡状态,请求任务量与完成量两者持平,不改变线程池的大小,此时不做处理。

3、线程池拥塞智能控制的实现

线程池拥塞智能控制的实现是在代码运行过程中根据不同状况而设置的对应策略,瞬时高并发服务器线程池拥塞智能控制方法流程如图5所示,流程开始时获取所需参数,即从上一个时刻到当前时刻的一个时间间隔内所到达的任务数jsck、完成的任务数ysck,基于这两个参数的比较判断当前线程池尺寸是上升阶段、平衡阶段还是下降阶段,然后根据不同阶段的策略对应调整当前线程池,同时根据该时段内的任务增大情况预测下一个时段内需要的线程数,如果是在增大阶段,将其线程池尺寸增大指数扩大一倍,采用基于改进慢启动的线程池增大算法,如果是在减小阶段,采用两种方式并行处理,分别采用基于STCP及拥塞防止的线程池减小算法,根据这两种算法分别求出结果,当STCP的结果能够满足大于正在运行的线程数目时将其作为参考因子,然后求取两者之间的较小值,为应对下一个阶段可能出现线程池增大的情况,此时预留一定的线程数预防突发瞬时请求,如果是在平衡阶段,不做任何改动。

基于线程池上限值和下限值的存在,线程池尺寸不能无限增加或减小,在进行以上步骤之后,将当前线程池尺寸与上限值和下限值进行比较,如果是线程池尺寸上升阶段,则与上限值进行比较,防止线程池尺寸无限增加,两者相比取其小;如果是线程池尺寸下降阶段,则与下限值进行比较,防止线程池尺寸无限减小,两者相比取其大,让线程池最终能够达到所需尺寸,并且线程池尺寸无论增大或者减小,预测的线程池大小都略大于可能的任务请求数,保证能够较快的响应用户请求,达到减小用户响应时间的效果,判断完成之后进入等待状态,设置睡眠模式,使该检测调整程序隔一段时间运行一次。

四、实验测试和性能评价

实验测试以水利灾害预警项目为背景进行,因此对于平均响应时间要求较高,实验测试从15到160个用户的并发请求,将其与现有技术基于平均数的线程池算法进行比较,得出随着用户数增加,本发明平均响应时间性能提高越明显,本发明以响应时间作为第一目标,在该目标下设置线程池的尺寸改变尽量略大于当前用户任务请求数,从而减小用户的等待时间,本发明的方法在响应时间性能上有较大提高。

从资源占用状况上看,随着用户数的增加,虽然两者资源占用情况基本持平,但本发明拥塞自适应控制线程池占用比平均池线程池占用少。

结合两个性能指标进行评估,拥塞自适应控制线程池算法在响应时间上有了显著的提高,而对于资源占用状况能够基本保持持平,其性能基本达标,本发明方法在实际的水利灾害预警系统中有较高的应用价值,能够较好的解决瞬时高并发服务器线程池拥塞问题,达到了预期目标。

本发明基于拥塞自适应控制算法对线程池智能算法进行改进优化,优化服务器在瞬时高并发下的性能,主要包括以下几点:第一,解析线程池的运行作用参数以及运行机制,设置拥塞自适应控制的作用参数以及算法流程,基于二者的运行原理和特征,对线程池以及拥塞自适应控制算法进行对比,确定拥塞自适应控制算法在线程池智能算法中的可行性,构建拥塞自适应控制算法与线程池智能算法的结合模型,提出选取拥塞自适应控制算法的影响因子,选取并改良适用于线程池智能算法的拥塞自适应控制算法;第二,基于本发明线程池设计方法和设计因素,解析线程池智能算法,结合本发明的拥塞自适应控制算法,提出一种基于拥塞自适应控制的线程池智能算法,提出拥塞自适应控制中的作用参数应用在线程池中的具体方法,提出瞬时高并发服务器线程池拥塞智能控制的流程步骤;第三,对本发明的算法应用在实际中进行验证,结果证明本发明提出方法的正确性和高效性,提高了服务器的性能,满足瞬时高并发下的运用需求。

相关技术
  • 瞬时高并发服务器线程池拥塞智能控制方法
  • 拥塞控制系统、服务边缘节点、引导服务器和拥塞控制方法
技术分类

06120113145117