一种基于滑动窗口的服务器过载保护方法及装置的制作方法

文档序号:6440897阅读:522来源:国知局
专利名称:一种基于滑动窗口的服务器过载保护方法及装置的制作方法
技术领域
本 发明涉及多业务服务器的管理技术,尤其涉及一种基于滑动窗口的服务器过载保护方法及装置。
背景技术
目前,在服务器集群的负载均衡方面有很多技术研究,但是,在实际应用中,服务器总会在极端情况下达到负载上限。过载保护就是用于保证服务器在达到负载上限时仍然能够继续工作,维持服务器的吞吐量稳定,不将前端突发事件影响传递到服务器。现有的服务器过载保护技术中,提出一种采用多个工作负载管理器来分别处理不同优先级别请求方法:当服务器负载达到一定上限时,拒绝低优先级的服务请求,只处理高优先级的请求。在实际的互联网应用中,除了系统运营维护所发出的控制请求,每个用户都是权利对等的,他们的请求都应该具有相同的优先级别。因此,上述方法并不能清晰正确的划分请求优先级,并不能起到过载保护的效果,反而会导致服务器吞吐量抖动。还有一种服务器过载保护方法,该方法是从优化网卡驱动着手,是根据当前机器的CPU使用率、内存使用率等参数来衡量服务器的负载情况;如果服务器超过负载限制,则网卡驱动拒绝所有建立新TCP连接的请求,来缓解服务器压力。这种方法虽然能够在一定程度上缓解服务器负载,但是对于突发的短暂的高访问量情况,将会引起服务器的吞吐量抖动。同时,以机器为控制粒度,而不是服务,这将使得同一台机器上部署的不同服务会因为某一个服务异常而都不能正常工作。

发明内容
有鉴于此,本发明的主要目的在于提供一种基于滑动窗口的服务器过载保护方法及装置,能够基于滑动窗口的过载控制较好的控制业务突发访问量对服务器的影响。为达到上述目的,本发明的技术方案是这样实现的:本发明提供一种基于滑动窗口的服务器过载保护方法,包括:设置表示时间段的滑动窗口 ;所述滑动窗口记录对应时间段内服务器接收的请求;服务器收到新的请求时,根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态,根据检测结果判断是否对请求进行处理。上述方法中,所述设置表示时间段的滑动窗口为:将时间虚拟为多个等长的窗口,每个窗口表不一个时间段;所述滑动窗口记录对应时间段内服务器接收的请求为:所述窗口记录对应时间段内服务器所接收到的请求,并维护一个当前窗口范围,根据所述当前窗口范围进行单次的负载检测,且每次负载检测后,所述当前窗口范围根据上一次负载检测的时间点的变化进行滑动。上述方法中,所述时间段的长度根据不同的业务需求进行动态配置,所述当前窗口范围根据互联网请求的延时进行设置。上述方法中,该方法还包括:根据不同的业务特性为每个窗口配置记录的请求内容。上述方法中,所述根据不同的业务特性为每个窗口配置记录的请求内容为:对于磁盘带宽消耗型的服务,窗口记录当前时间段内磁盘I/O的次数;对于CPU消耗型的服务,窗口记录当前时间段内累计消耗的时钟周期数;对于网络带宽消耗型的服务,窗口记录当前时间段内的流量。上述方法中,所述根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态为:根据当前滑动窗口记录的服务器接收的请求,检测新的请求到来后服务器当前的负载状态;如果上一次检测负载状态的时间点与本次检测负载状态的时间点位于同一个窗口内,则将该窗口内的计数加I;如果上一次检测负载状态的时间点与本次检测负载状态的时间点不是位于同一个窗口内,将该窗口内的计数值清零;对计数值进行处理后,判断窗口内的计数值是否超过服务器处理请求的峰值。上述方法中,所述根据检测结果判断是否对请求进行处理为:如果窗口内的计数值超过服务器处理请求的峰值,拒绝新的请求,服务器不对该请求进行处理;如果窗口内的计数值没有超过服务器处理请求的峰值,服务器对该请求进行处理。本发明还提供一种基于滑动窗口的服务器过载保护装置,包括:设置单元、滑动窗口单元、接收单元、处理单元;其中,设置单元,用于表示时间段的滑动窗口 ;滑动窗口单元,用于记录对应时间段内服务器接收的请求;接收单元,用于收到新的请求时,根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态;处理单元,用于根据检测结果判断是否对请求进行处理。上述装置中,所述设置单元还用于,根据不同的业务需求动态配置时间段的长度,根据互联网请求的延时设置当前窗口范围。上述装置中,所述设置单元还用于,根据不同的业务特性为每个窗口配置记录的请求内容。本发明提供的基于滑动窗口的服务器过载保护方法及装置,设置表示时间段的滑动窗口,所述滑动窗口记录对应时间段内服务器接收的请求;服务器收到新的请求时,根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态,根据检测结果判断是否对请求进行处理,这样,基于滑动窗口机制的过载控制,能够较好的控制业务突发访问量对服务器的影响;此外,本发明还能够维持服务器的吞吐量在一定的水平,避免造成系统吞吐量的抖动。


图1是本发明实现基于滑动窗口的服务器过载保护方法的流程示意图;图2是本发明滑动窗口的示例图3是本发明实现基于滑动窗口的服务器过载保护装置的结构示意图。
具体实施例方式本发明的基本思想是:设置表示时间段的滑动窗口,所述滑动窗口记录对应时间段内服务器接收的请求;服务器收到新的请求时,根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态,根据检测结果判断是否对请求进行处理。下面通过附图及具体实施例对本发明再做进一步的详细说明。本发明提供一种基于滑动窗口的服务器过载保护方法,图1是本发明实现基于滑动窗口的服务器过载保护方法的流程示意图,如图1所示,该方法包括以下步骤:步骤101,设置表示时间段的滑动窗口,该滑动窗口记录该时间段内服务器接收的请求;具体的,如图2所示,沿着图2中箭头所指的时间轴的方向,将流逝的时间虚拟成多个等长的窗口,每个虚拟的窗口都表示一个时间段;其中,所述时间段的长度可以根据不同的业务需求来动态配置,例如,可以是lms,也可以是Is等,时间段的长度越小,越能够精确的描述在某个时间段内的真实的服务器的负载状态,更具有实时性。窗口记录对应的一个时间段内服务器所接收到的请求,但不是所有的窗口内的请求都会被用来作为检测负载状态的依据,因为互联网各个时间段的访问量之间的相关性较小,一段时间以前的服务器接收的请求已经处理完毕,并不会造成服务器的负载,因此,只需要根据最近时间段的访问次数来评估服务器的负载情况,即:只需要维护一个当前窗口范围,该当前窗口范围在整个时间轴内,能够为单次的负载检测提供依据,可以根据互联网请求的延时设置当前窗口范围。例如,当前窗口范围有100个格子,每个格子的时间长度为I秒,那么,每次负载检测都将使用过去100秒的所有记录作为依据,利用该方案,能够避免因为在单个窗口内的抖动造成的整个服务器吞吐量的抖动;如图2所示,tl表示上一次负载检测的时间点,每次负载检测后,窗口会根据tl的变化沿时间轴方向滑动,因此,上述窗口为滑动窗口。基于硬件驱动层的过载保护方案,过载保护粒度为整台机器,这种情况下可能使得同一台机器上部署的不同服务会因为某一个服务异常而都不能正常工作。比如在特定时亥|J,某一个磁盘带宽消耗性的服务消耗了大量的磁盘带宽达到规定的上限,网卡此时就不再接受其他的TCP连接,拒绝对外服务,实际上对于CPU消耗性的服务仍然应该被处理。因此缺乏足够的灵活性。而基于滑动窗口的过载保护方案,除了能够进行单个窗口范围和单个窗口对应时间段的动态配置外,还可以根据不同的业务特性为每个窗口配置记录的请求内容,例如,对于磁盘带宽消耗型的服务,窗口可以记录当前时间段内磁盘I/O的次数,对于CPU消耗型的服务,窗口可以记录当前时间段内累计消耗的时钟周期数,对于网络带宽消耗型的务,窗口可以记录当前时间段内的流量;通过灵活的为每个窗口配置记录的请求内容,可以根据不同的服务实行不同的过载保护的策略,实现以服务为过载保护粒度。步骤102,服务器收到新的请求时,根据当前滑动窗口记录的服务器接收的请求,检测服务器当前的负载状态,根据检测结果判断是否对请求进行处理;具体的,每个窗口可以记录对应时间段内的访问次数,S卩:检测负载状态的次数,由于每次检测负载状态是在服务器接收到请求后,因此,服务器接收的请求的数量就等于检测负载的次数;服务器收到新的请求时,首先根据当前滑动窗口记录的服务器接收的请求,检测新的请求到来后服务器当前的负载状态,如果上一次检测负载状态的时间点与本次检测负载状态的时间点位于同一个窗口内,则将该窗口内的计数加I ;对计数值进行处理后,进一步的,判断窗口内的计数值是否超过服务器处理请求的峰值,如果超过,则拒绝这次请求,即:只接收请求,但不处理该请求;如果不超过,则服务器对该请求进行处理;如果上一次检测负载状态的时间点与本次检测负载状态的时间点不是位于同一个窗口内,则将该窗口内的计数值清零,因为本次检测负载状态之前服务器所接收的请求,并不能反映服务器当前的负载状态;对计数值进行清零处理后,进一步的,判断窗口内的计数值是否超过服务器处理请求的峰值,如果超过,则拒绝这次请求,如果不超过,则服务器对该请求进行处理。本发明中,当服务器的负载超过服务器能够负担的请求时,最多经过一个窗口的时间后,服务器就可以正常的处理一定量的请求,如果一个窗口对应时间段比较短,以毫秒为单位,反映在业务层的表现就是服务器拒绝了大量的请求中的某些请求,而且服务器的吞吐量可以恒定在一个范围内,而不是吞吐量突增突减的抖动形式。为实现上述方法,本发明还提供一种基于滑动窗口的服务器过载保护装置,图3是本发明实现基于滑动窗口的服务器过载保护装置的结构示意图,如图3所示,该装置包括:设置单元31、滑动窗口单元32、接收单元33、处理单元34 ;其中,设置单元31,用于表示时间段的滑动窗口 ;滑动窗口单元32,用于记录对应时间段内服务器接收的请求;接收单元33,用于收到新的请求时,根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态;处理单元34,用于根据检测结果判断是否对请求进行处理。所述设置单元31还用于,根据不同的业务需求动态配置时间段的长度,根据互联网请求的延时设置当前窗口范围。所述设置单元31还用于,根据不同的业务特性为每个窗口配置记录的请求内容。所述设置单元31设置表示时间段的滑动窗口为:将时间虚拟为多个等长的窗口,每个窗口表不一个时间段;所述滑动窗口单元32记录对应时间段内服务器接收的请求为:所述窗口记录对应时间段内服务器所接收到的请求,并维护一个当前窗口范围,根据所述当前窗口范围进行单次的负载检测,且每次负载检测后,所述当前窗口范围根据上一次负载检测的时间点的变化进行滑动。所述设置单元31根据不同的业务特性为每个窗口配置记录的请求内容为:对于磁盘带宽消耗型的服务,窗口记录当前时间段内磁盘I/o的次数;对于CPU消耗型的服务,窗口记录当前时间段内累计消耗的时钟周期数;对于网络带宽消耗型的服务,窗口记录当前时间段内的流量。所述接收单元33根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态为:根据当前滑动窗口记录的服务器接收的请求,检测新的请求到来后服务器当前的负载状态;如果上一次检测负载状态的时间点与本次检测负载状态的时间点位于同一个窗口内,则将该窗口内的计数加I;如果上一次检测负载状态的时间点与本次检测负载状态的时间点不是位于同一个窗口内,将该窗口内的计数值清零;对计数值进行处理后,进一步的,判断窗口内的计数值是否超过服务器处理请求的峰值。相应的,所述处理单元34根据检测结果判断是否对请求进行处理为:如果窗口内的计数值超过服务器处理请求的峰值,拒绝新的请求,不对该请求进行处理;如果窗口内的计数值没有超过服务器处理请求的峰值,对该请求进行处理。本发明的技术方案能够应用于申请人自研制的海量分布式存储系统TFS,该系统中承载有众多的业务数据,TFS服务器的稳定对承载的业务的运行至关重要,利用上述技术方案能够帮助TFS服务器避免前端业务异常访问情况对服务器的影响,从而提高服务器的稳定性。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于滑动窗口的服务器过载保护方法,其特征在于, 设置表示时间段的滑动窗口; 所述滑动窗口记录对应时间段内服务器接收的请求; 服务器收到新的请求时,根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态,根据检测结果判断是否对请求进行处理。
2.根据权利要求1所述的方法,其特征在于,所述设置表示时间段的滑动窗口为:将时间虚拟为多个等长的窗口,每个窗口表示一个时间段; 所述滑动窗口记录对应时间段内服务器接收的请求为:所述窗口记录对应时间段内服务器所接收到的请求,并维护一个当前窗口范围,根据所述当前窗口范围进行单次的负载检测,且每次负载检测后,所述当前窗口范围根据上一次负载检测的时间点的变化进行滑动。
3.根据权利要求2所述的方法,其特征在于,所述时间段的长度根据不同的业务需求进行动态配置,所述当前窗口范围根据互联网请求的延时进行设置。
4.根据权利要求2或3所述的方法,其特征在于,该方法还包括:根据不同的业务特性为每个窗口配置记录的请求内容。
5.根据权利要求4所述的方法,其特征在于,所述根据不同的业务特性为每个窗口配置记录的请求内容为: 对于磁盘带宽消耗型的服务,窗口记录当前时间段内磁盘I/O的次数; 对于CPU消耗型的服务,窗口记录当前时间段内累计消耗的时钟周期数; 对于网络带宽消耗型的服务,窗口记录当前时间段内的流量。
6.根据权利要求1所述的方法,其特征在于,所述根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态为: 根据当前滑动窗口记录的服务器接收的请求,检测新的请求到来后服务器当前的负载状态;如果上一次检测负载状态的时间点与本次检测负载状态的时间点位于同一个窗口内,则将该窗口内的计数加I ;如果上一次检测负载状态的时间点与本次检测负载状态的时间点不是位于同一个窗口内,将该窗口内的计数值清零;对计数值进行处理后,判断窗口内的计数值是否超过服务器处理请求的峰值。
7.根据权利要求6所述的方法,其特征在于,所述根据检测结果判断是否对请求进行处理为: 如果窗口内的计数值超过服务器处理请求的峰值,拒绝新的请求,服务器不对该请求进行处理;如果窗口内的计数值没有超过服务器处理请求的峰值,服务器对该请求进行处理。
8.一种基于滑动窗口的服务器过载保护装置,其特征在于,该装置包括:设置单元、滑动窗口单元、接收单元、处理单元;其中, 设置单元,用于表示时间段的滑动窗口 ; 滑动窗口单元,用于记录对应时间段内服务器接收的请求; 接收单元,用于收到新的请求时,根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态; 处理单元,用于根据检测结果判断是否对请求进行处理。
9.根据权利要求8所述的装置,其特征在于,所述设置单元还用于,根据不同的业务需求动态配置时间段的长度,根据互联网请求的延时设置当前窗口范围。
10.根据权利要求9所述的装置,其特征在于,所述设置单元还用于,根据不同的业务特性为每个窗口配置记录的请求内容。`
全文摘要
本发明公开一种基于滑动窗口的服务器过载保护方法,包括设置表示时间段的滑动窗口,所述滑动窗口记录对应时间段内服务器接收的请求;服务器收到新的请求时,根据滑动窗口记录的服务器接收的请求检测服务器当前的负载状态,根据检测结果判断是否对请求进行处理;本发明还提供一种基于滑动窗口的服务器过载保护装置。根据本发明的技术方案,能够基于滑动窗口的过载控制较好的控制业务突发访问量对服务器的影响。
文档编号G06F21/71GK103164663SQ20111041222
公开日2013年6月19日 申请日期2011年12月12日 优先权日2011年12月12日
发明者姚明敏, 娄继冰 申请人:深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1