一种DNS线程管理方法、装置和服务器与流程

文档序号:15567936发布日期:2018-09-29 03:47阅读:111来源:国知局

本发明涉及互联网技术领域,特别是涉及一种dns线程管理方法、装置和服务器。



背景技术:

dns(domainnamesystem,域名系统),指的是在互联网中将域名映射为ip地址的一套系统,能够使用户能够利用更容易记住的域名去访问互联网,而不用去记住不易记住的ip数串。dns几乎可以说是目前所有线上服务的基础。在dns中,域名的管理者需要搭建dns服务器,来处理dns的查询请求。通常,dns服务器程序启动时,会开启一定数量的线程以并行处理查询请求,每个线程绑定一个cpu核以执行相关的计算任务。

然而,本申请的发明人在实际中发现,由于dns业务的查询量与用户行为息息相关,具有高峰期和低谷期交替的特点,因此预先开启固定数量的线程并绑定cpu核会导致dns服务器的效率较差,例如,在高峰期时,可能由于线程不足导致dns服务的性能变差,而在低谷期是可能由于线程数量过多而造成计算资源浪费,这样会影响到物理服务器上其他应用的性能。



技术实现要素:

有鉴于此,本发明提供了一种dns线程管理方法、装置和dns服务器,以解决目前这种因线程数量固定而导致dns服务器的效率较差的问题。

为了解决上述问题,本发明公开了一种dns线程管理方法,应用于基于linux系统搭建的dns服务器,所述dns线程管理方法具体包括步骤:

在所述dns服务器的运行过程中,实时检测所述dns服务器中所有线程所处理请求的请求数量;

根据预设判断规则对所述请求数量进行判断,以确定所述dns服务器处于预设的流量高峰状态或预设的流量低谷状态;

当所述dns服务器处于所述流量高峰状态时,增加线程;

当所述dns服务器处于所述流量低谷状态时,减少线程。

可选的,所述当所述dns服务器处于所述流量高峰状态时,增加线程,包括:

当在连续m个第一预设时长内所述dns服务器的剩余缓存小于第一预设缓存阈值时,增加一个线程;

所述m为正整数。

可选的,所述当所述dns服务器处于所述流量低谷状态时,减少线程,包括:

当在连续n个第二预设时长内所述dns服务器的剩余缓存大于第二预设缓存阈值时,减少一个线程;

所述n为正整数。

可选的,所述减少一个线程,包括:

停止向当前线程中的目标线程分配任务;

在所述目标线程执行完所有任务后,关闭所述目标线程。

可选的,还包括步骤:

在所述dns服务器处于任何状态时,当所述dns服务器的剩余缓存小于第三预设缓存阈值时,增加一个线程。

可选的,所述增加一个线程,包括:

启动一个新线程;

将所述新线程与所述dns服务器的一个cpu进行绑定。

相应的,为了保证上述方法的实施,本发明还提供了一种dns线程管理装置,应用于基于linux系统搭建的dns服务器,所述dns线程管理装置包括:

请求数量检测模块,用于在所述dns服务器的运行过程中,实时检测所述dns服务器中所有线程所处理请求的请求数量;

工作状态判断模块,用于根据预设判断规则对所述请求数量进行判断,以确定所述dns服务器处于预设的流量高峰状态或预设的流量低谷状态;

第一线程维护模块,用户当所述dns服务器处于所述流量高峰状态时,增加线程;

第二线程维护模块,用于当所述dns服务器处于所述流量低谷状态时,减少线程。

可选的,所述第一线程维护模块包括:

线程增加单元,用于当在连续m个第一预设时长内所述dns服务器的剩余缓存小于第一预设缓存阈值时,增加一个线程;

所述m为正整数。

可选的,所述线程增加单元包括:

线程启动子单元,用于启动一个新线程;

线程绑定子单元,用于将所述新线程与所述dns服务器的一个cpu进行绑定。

可选的,所述第二线程维护模块包括:

线程减少单元,用于当在连续n个第二预设时长内所述dns服务器的剩余缓存大于第二预设缓存阈值时,减少一个线程;

所述n为正整数。

可选的,所述线程减少单元包括:

任务停止子单元,用于停止向当前线程中的目标线程分配任务;

线程关闭子单元,用于在所述目标线程执行完所有任务后,关闭所述目标线程。

可选的,还包括:

第三线程维护模块,用于在所述dns服务器处于任何状态时,当所述dns服务器的剩余缓存小于第三预设缓存阈值时,增加一个线程。

另外,本发明还提供了一种服务器,所述服务器搭建有基于linux操作系统的dns服务器,所述dns服务器设置有如权利要求7~12任一项所述的dns线程管理方法。

从上述技术方案可以看出,本发明提供了一种dns线程管理方法、装置和服务器,该方法和装置应用于基于linux系统搭建的dns服务器,该dns线程管理方法具体为在dns服务器的运行过程中,实时检测dns服务器中所有线程所处理请求的请求数量;根据预设判断规则对请求数量进行判断,以确定dns服务器处于预设的流量高峰状态或预设的流量低谷状态;当dns服务器处于流量高峰状态时,增加线程;当dns服务器处于流量低谷状态时,减少线程。通过对dns服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了dns服务器的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种dns线程管理方法的步骤流程图;

图2为本发明实施例提供的一种dns线程管理装置的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1为本发明实施例提供的一种dns线程管理方法的步骤流程图。

本实施例提供的dns线程管理方法应用于基于linux系统搭建的dns服务器上,具体来说,本申请中的管理方法仅应用于linux系统,该dns服务器搭建于运行linux系统的物理服务器上。

参照图1所示,本发明中提供的dns线程管理方法的具体步骤为:

s101:实时检测dns服务器中所有线程所处理请求的请求数量。

即在该dns服务器的运行过程中,对其所有的线程进行监控,监控所有线程所处理的请求总量,即该dns所处理请求的请求总量,以此对该dns服务器是处于流量高峰还是流量低谷进行判断。

s102:根据请求数量确定dns服务器的工作状态。

即根据该dns服务器所接收到解析请求的数量确定其工作状态,这里的工作状态为流量高峰状态和流量低谷状态,在这两个状态之间还存在着流量正常状态。在流量高峰状态时,dns服务器中每个线程的压力相对较大,而在流量低谷状态时,则每个线程的请求数量明显不足,即与每个线程的处理能力有着较大的距离,从而对线程的资源来说是一种浪费。

在确定dns服务器的当前工作状态,如流量高峰状态或者流量低谷状态时,根据具体的情况进行如下的操作。

s103:当处于流量高峰状态时增加线程。

当dns服务器的当前工作状态为流量高峰状态时,维持该dns服务器的当前线程数或者增加线程,起码不减少线程。具体为,在处于流量高峰状态时,还进一步考察dns服务器的剩余缓存的数值,当剩余缓存在m个第一预设时长内均小于第一预设缓存阈值时,增加一个线程。

其中m为正整数,第一预设时长为一个时间周期,可以根据dns服务器的实际情况确定,例如可以选300秒。这里增加一个线程的具体过程为:

首先,为dns服务器启动一个新线程;然后,将该新线程与dns服务器所在的物理服务器的一个cpu进行绑定。这里的cpu可以是实际的cpu,也可以是一个完整cpu所模拟的一个虚拟cpu。

由于cpu的数量是一定的,且每个新启用的线程需要绑定一个cpu,因此,如果当前线程数已经耗完所有cpu,此时则无法增加新线程,那么就维持当前数不变。

s104:当处于流量低谷状态时减少线程。

当dns服务器的当前工作状态为流量低谷状态时,维持该dns服务器的当前线程数或者减少线程,起码不增加线程。具体为,在处于流量高峰状态时,还进一步考察dns服务器的剩余缓存的数值,当剩余缓存在n个第二预设时长内均大于第二预设缓存阈值时,减少一个线程。

其中n为正整数,优选与上述的m相同;第二预设时长为一个时间周期,优选与上述的第一预设时长相同,也可以根据dns服务器的实际情况确定,例如可以选300秒。这里减少一个线程的具体过程为:

首先,从该dns服务器所运行的所有线程中选定一个线程作为待关闭的目标线程,并停止向该目标线程分配任务;然后,当该目标线程处理完所有任务后,将该目标线程予以关闭。

上述的第二预设缓存阈值大于第一预设缓存阈值。

由于dns服务器向用户提供服务必须保持最低线程数,起码不应为0,因此,此时如果当前线程数已经达到该最低线程数,此时就维持当前数不变。

从上述技术方案可以看出,本实施例提供了一种dns线程管理方法,该方法应用于基于linux系统搭建的dns服务器,该dns线程管理方法具体为在dns服务器的运行过程中,实时检测dns服务器中所有线程所处理请求的请求数量;根据预设判断规则对请求数量进行判断,以确定dns服务器处于预设的流量高峰状态或预设的流量低谷状态;当dns服务器处于流量高峰状态时,增加线程;当dns服务器处于流量低谷状态时,减少线程。通过对dns服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了dns服务器的效率。

另外,除去上述流量高峰状态和流量低谷状态外,还有居于两者之间的流量正常状态,此时,在任何连续m个第一预设时长的剩余缓存小于第一预设缓存阈值时,增加一个线程,该增加线程的方法与上述方法相同。

还有,在任何时刻,即无论在流量高峰状态、流量低谷状态,还是在流量正常状态,只要检测到剩余缓存小于第三预设缓存阈值,则即刻增加一个线程,线程增加的方法与上述增加方法相同。

该第三预设缓存阈值小于第一预设缓存阈值。

根据上述所描述的方法,在实际的dbs服务器中,可以采用下述的方法进行线程的调整。

在基于libux系统搭建的dbs服务器中,假设libux内核能够将udp查询请求均匀的分给每一个线程。假设在两个相邻的时刻t1和t2时刻(时间间隔可取,例如,300秒),分别获得了udp缓冲区的剩余缓存为x1和x2,所有线程一共处理的请求数为y1和y2,则这段时间udp缓冲区使用的缓存x21=x2-x1,取值可为正也可为负;而所有线程在这段时间处理的请求数为y21=y2-y1。

dbs服务器启动时开启a个线程,服务器最多可以开启b个线程,b>a。如,a可取2,b取31。通过两个状态机分别监测udp缓冲区的变化及线程处理请求数的变化,二者相对独立。但无论如何变化,线程数量不会高于上限b,也不会低于启动时的线程数a。

对于请求处理速度监控机而言,其作用是识别出流量高/低峰期。设置两个阈值yh和yl,yh>yl,可取值为,如yh=20000,yl=10000;设置时间间隔计数阈值i,如i=6。

1、若连续i个时间间隔中,每次监测到的处理请求数都大于yh,则认为dbs服务器进入流量高峰期;直到连续i个时间间隔,每次监测到的处理请求数都小于yh,解除流量高峰期状态;

2、若连续i个时间间隔中,每次监测到的处理请求数都小于yl,则认为dbs服务器进入流量低谷期;直到连续i个时间间隔,每次监测到的处理请求数都大于yl,解除流量低谷期状态;

原则上,流量高峰期状态,只维持当前线程或增加线程而不减少线程;流量低谷期状态,只维持当前线程或减少线程而不增加线程。

这里设置三个监测阈值xa,xb,xc,且xu>xa>xb>xc>0。其中,xu可取20m,为设置的libux系统的udp缓冲区最大值;相应的,其他的取值,例如xa可取15m,xb可取5m,xc可取2m。另外,设置时间间隔阈值k,如,k=3。

1、流量高峰期:

(1)若k个时间间隔中,每次监测到的剩余缓存都小于xb,则增加一个线程;

(2)任何时候,监测到的剩余缓存小于xc,增加一个线程。

2、流量低谷期:

(1)若k个时间间隔中,每次监测到的剩余缓存都大于xa,则减少一个线程(减少与增加线程的实现方法见步骤三);

(2)任何时候,监测到的剩余缓存小于xc,增加一个线程。

3、其他时段:

(1)若k个时间间隔中,每次监测到的剩余缓存都小于xb,则增加一个线程;

(2)若k个时间间隔中,每次监测到的剩余缓存都大于xa,则减少一个线程(减少与增加线程的实现方法见步骤三);

(3)任何时候,监测到的剩余缓存小于xc,增加一个线

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

实施例二

图2为本发明实施例提供的一种dns线程管理装置的结构框图。

本实施例提供的dns线程管理装置应用于基于linux系统搭建的dns服务器上,具体来说,本申请中的管理方法仅应用于linux系统,该dns服务器搭建于运行linux系统的物理服务器上。

参照图2所示,本发明中提供的dns线程管理装置的具体包括请求数量检测模块10、工作状态判断摸20、第一线程维护模块30和第二线程维护模块40。

请求数量检测模块用于实时检测dns服务器中所有线程所处理请求的请求数量。

即在该dns服务器的运行过程中,对其所有的线程进行监控,监控所有线程所处理的请求总量,即该dns所处理请求的请求总量,以此对该dns服务器是处于流量高峰还是流量低谷进行判断。

工作状态判断模块用于根据请求数量确定dns服务器的工作状态。

具体用于根据该dns服务器所接收到解析请求的数量确定其工作状态,这里的工作状态为流量高峰状态和流量低谷状态,在这两个状态之间还存在着流量正常状态。在流量高峰状态时,dns服务器中每个线程的压力相对较大,而在流量低谷状态时,则每个线程的请求数量明显不足,即与每个线程的处理能力有着较大的距离,从而对线程的资源来说是一种浪费。

在确定dns服务器的当前工作状态,如流量高峰状态或者流量低谷状态时,根据具体的情况进行如下的操作。

第一线程维护模块用于当处于流量高峰状态时增加线程。

当dns服务器的当前工作状态为流量高峰状态时,维持该dns服务器的当前线程数或者增加线程,起码不减少线程。具体为,在处于流量高峰状态时,还进一步考察dns服务器的剩余缓存的数值,当剩余缓存在m个第一预设时长内均小于第一预设缓存阈值时,增加一个线程。

其中m为正整数,第一预设时长为一个时间周期,可以根据dns服务器的实际情况确定,例如可以选300秒。该模块包括线程增加单元,该线程增加单元用于为dns服务器增加一个线程。

该单元具体包括线程启动子单元和线程绑定子单元,线程启动子单元用于为dns服务器启动一个新线程;线程绑定子单元则用于将该新线程与dns服务器所在的物理服务器的一个cpu进行绑定。这里的cpu可以是实际的cpu,也可以是一个完整cpu所模拟的一个虚拟cpu。

由于cpu的数量是一定的,且每个新启用的线程需要绑定一个cpu,因此,如果当前线程数已经耗完所有cpu,此时则无法增加新线程,那么就维持当前数不变。

第二线程维护模块用于当处于流量低谷状态时减少线程。

当dns服务器的当前工作状态为流量低谷状态时,维持该dns服务器的当前线程数或者减少线程,起码不增加线程。具体为,在处于流量高峰状态时,还进一步考察dns服务器的剩余缓存的数值,当剩余缓存在n个第二预设时长内均大于第二预设缓存阈值时,减少一个线程。

其中n为正整数,优选与上述的m相同;第二预设时长为一个时间周期,优选与上述的第一预设时长相同,也可以根据dns服务器的实际情况确定,例如可以选300秒。该模块包括线程减少单元,该单元用于将dns服务器中的线程减少一个,该单元具体包括任务停止子单元和线程关闭单元。

任务停止子单元用于从该dns服务器所运行的所有线程中选定一个线程作为待关闭的目标线程,并停止向该目标线程分配任务;线程关闭子单元用于当该目标线程处理完所有任务后,将该目标线程予以关闭。

上述的第二预设缓存阈值大于第一预设缓存阈值。

由于dns服务器向用户提供服务必须保持最低线程数,起码不应为0,因此,此时如果当前线程数已经达到该最低线程数,此时就维持当前数不变。

从上述技术方案可以看出,本实施例提供了一种dns线程管理装置,该装置应用于基于linux系统搭建的dns服务器,该dns线程管理装置具体用于在dns服务器的运行过程中,实时检测dns服务器中所有线程所处理请求的请求数量;根据预设判断规则对请求数量进行判断,以确定dns服务器处于预设的流量高峰状态或预设的流量低谷状态;当dns服务器处于流量高峰状态时,增加线程;当dns服务器处于流量低谷状态时,减少线程。通过对dns服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了dns服务器的效率。

除去上述流量高峰状态和流量低谷状态外,还有居于两者之间的流量正常状态,此时,在任何连续m个第一预设时长的剩余缓存小于第一预设缓存阈值时,增加一个线程,该增加线程的方法与上述方法相同。

另外,本实施例中的dns线程管理装置中还包括第三线程维护模块(未示出),该模块用于在任何时刻,即无论在流量高峰状态、流量低谷状态,还是在流量正常状态,只要检测到剩余缓存小于第三预设缓存阈值,则即刻增加一个线程,线程增加的方法与上述增加方法相同。

该第三预设缓存阈值小于第一预设缓存阈值。

实施例三

本实施例提供了一种服务器,该服务器搭建有基于linux操作系统的dns服务器,该dns服务器设置有如上一实施例中所提供的dns线程管理装置。该装置具体用于在dns服务器的运行过程中,实时检测dns服务器中所有线程所处理请求的请求数量;根据预设判断规则对请求数量进行判断,以确定dns服务器处于预设的流量高峰状态或预设的流量低谷状态;当dns服务器处于流量高峰状态时,增加线程;当dns服务器处于流量低谷状态时,减少线程。通过对dns服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了dns服务器的效率。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1