CN108446170B - 一种基于机器学习的dns线程管理方法、装置和服务器 - Google Patents

一种基于机器学习的dns线程管理方法、装置和服务器 Download PDF

Info

Publication number
CN108446170B
CN108446170B CN201810068774.6A CN201810068774A CN108446170B CN 108446170 B CN108446170 B CN 108446170B CN 201810068774 A CN201810068774 A CN 201810068774A CN 108446170 B CN108446170 B CN 108446170B
Authority
CN
China
Prior art keywords
thread
dns
data
processing
request
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.)
Active
Application number
CN201810068774.6A
Other languages
English (en)
Other versions
CN108446170A (zh
Inventor
丁浩
吴岩
石磊
胡文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201810068774.6A priority Critical patent/CN108446170B/zh
Publication of CN108446170A publication Critical patent/CN108446170A/zh
Application granted granted Critical
Publication of CN108446170B publication Critical patent/CN108446170B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种基于机器学习的DNS线程管理方法、装置和服务器,该方法和装置应用于基于Linux操作系统搭建的DNS服务器,具体为每隔预设时长获取DNS服务器中所有线程所处理请求的请求数量;利用预设的线程控制模型对请求数量进行计算,得到最优线程数;如果当前线程数小于最优线程数,增加一个线程;如果当前线程数大于最优线程数,减少一个线程。通过对DNS服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了DNS服务器的效率。

Description

一种基于机器学习的DNS线程管理方法、装置和服务器
技术领域
本发明涉及互联网技术领域,特别是涉及一种基于机器学习的DNS线程管理方法、装置和服务器。
背景技术
DNS(Domain Name System,域名系统),指的是在互联网中将域名映射为IP地址的一套系统,能够使用户能够利用更容易记住的域名去访问互联网,而不用去记住不易记住的IP数串。DNS几乎可以说是目前所有线上服务的基础。在DNS中,域名的管理者需要搭建DNS服务器,来处理DNS的查询请求。通常,DNS服务器程序启动时,会开启一定数量的线程以并行处理查询请求,每个线程绑定一个CPU核以执行相关的计算任务。
然而,本申请的发明人在实际中发现,由于DNS业务的查询量与用户行为息息相关,具有高峰期和低谷期交替的特点,因此预先开启固定数量的线程并绑定CPU核会导致DNS服务器的效率较差,例如,在高峰期时,可能由于线程不足导致DNS服务的性能变差,而在低谷期是可能由于线程数量过多而造成计算资源浪费,这样会影响到物理服务器上其他应用的性能。
发明内容
有鉴于此,本发明提供了一种基于机器学习的DNS线程管理方法、装置和服务器,以解决目前这种因线程数量固定而导致DNS服务器的效率较差的问题。
为了解决上述问题,本发明公开了一种基于机器学习的DNS线程管理方法,应用于基于Linux操作系统搭建的DNS服务器,所述DNS线程管理方法包括步骤:
每隔预设时长获取所述DNS服务器中所有线程所处理请求的请求数量;
利用预设的线程控制模型对所述请求数量进行计算,得到最优线程数;
如果当前线程数小于所述最优线程数,增加一个线程;
如果所述当前线程数大于所述最优线程数,减少一个线程。
可选的,所述线程控制模型通过如下步骤得到:
运行多台开启不同线程的DNS服务器,并向所述DNS服务器发送查询请求;
在所述DNS服务器处理所述查询请求时,获取所述DNS服务器的处理数据,其中,所述处理数据包括处理请求数量、请求处理时间和系统丢包率;
根据所述处理数据和预选的特征值,并使用监督学习的方法进行模型训练,得到所述线程控制模型。
可选的,所述增加一个线程,包括:
启动一个新线程;
将所述新线程与所述DNS服务器的一个CPU进行绑定。
可选的,所述减少一个线程,包括:
停止向当前线程中选定的目标线程分配任务;
在所述目标线程执行完所有任务后,关闭所述目标线程。
相应的,为了保证上述方法的实施,本发明还提供了一种基于机器学习的DNS线程管理装置,应用于基于Linux操作系统搭建的DNS服务器,所述DNS线程管理装置包括:
请求数量获取模块,用于每隔预设时长获取所述DNS服务器中所有线程所处理请求的请求数量;
最优线程计算模块,用于利用预设的线程控制模型对所述请求数量进行计算,得到最优线程数;
第一线程维护模块,用于如果当前线程数小于所述最优线程数,增加一个线程;
第二线程维护模块,用于如果所述当前线程数大于所述最优线程数,减少一个线程。
可选的,还包括模型训练模块,其中,所述模型训练模块包括:
运行控制单元,用于运行多台开启不同线程的DNS服务器,并向所述DNS服务器发送查询请求;
数据获取单元,用于在所述DNS服务器处理所述查询请求时,获取所述DNS服务器的处理数据,其中,所述处理数据包括处理请求数量、请求处理时间和系统丢包率;
训练实施单元,用于根据所述处理数据、预选的特征值,并使用监督学习的方法进行模型训练,得到所述线程控制模型。
可选的,所述第一线程维护模块包括:
线程新增单元,用于启动一个新线程;
线程绑定单元,用于将所述新线程与所述DNS服务器的一个CPU进行绑定。
可选的,所述第二线程维护模块包括:
分配控制单元,用于停止向当前线程中选定的目标线程分配任务;
线程关闭单元,用于在所述目标线程执行完所有任务后,关闭所述目标线程。
另外,还提供了一种服务器,所述服务器配置有基于Linux操作系统的DNS服务器,其中,所述DNS服务器设置有如上所述的DNS线程管理装置。
从上述技术方案可以看出,本发明提供了一种基于机器学习的DNS线程管理方法、装置和服务器,该方法和装置应用于基于Linux操作系统搭建的DNS服务器,具体为每隔预设时长获取DNS服务器中所有线程所处理请求的请求数量;利用预设的线程控制模型对请求数量进行计算,得到最优线程数;如果当前线程数小于最优线程数,增加一个线程;如果当前线程数大于最优线程数,减少一个线程。通过对DNS服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了DNS服务器的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于机器学习的DNS线程管理方法的步骤流程图;
图2为本发明实施例提供的一种基于机器学习的DNS线程管理系统的步结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1为本发明实施例提供的一种基于机器学习的DNS线程管理方法的步骤流程图。
参照图1所示,本实施例提供的DNS线程管理方法应用于DNS服务器,该DNS服务器搭建在运行Linux操作系统的物理服务器上,该DNS线程管理方法具体包括步骤:
S101:获取DNS服务器上所有线程所处理请求的请求数量。
在DNS服务器启动时,仅开启数量较少的线程并绑定相应的CPU。在DNS服务器处理请求的过程中,检测其上所有线程所有正在处理的请求的数量,即请求数量。
具体来说,可以控制每个线程实时统计自己处理的请求数量,然后每隔一段时间上报自己通过统计得到的请求数量,或者是通过向每个线程发送相应的查询指令的方式获取该请求数量。
S102:利用线程控制模型对请求数量进行计算,得到最优线程数。
在得到上述所有线程处理的处理数量后,利用预设的线程控制模型对其进行计算,通过计算得到最优线程数,即如果该DNS服务器的线程总数为该最优线程数或者在该最优线程数的预设范围之内时,该DNS的效率较高。
假设某时刻发现过去5分钟处理的请求数为10000,则调用上述模型进行计算,将(2,10000),(3,10000),(4,10000)....分别代入模型进行计算,得到一系列对应的目标变量值,可能为1,2,2,2,2,.....若中间任何时候目标变量取值为3,则停止计算;若目标变量取值一直小于3,则一直计算直到(31,10000)。
记录下目标变量取值为3的线程数,记为L,即最优线程数;若无目标变量为3的样本,则L=31,即最优线程数为该DNS所能启动的最大线程数。
S103:当前线程数小于最优线程数时,增加一个线程。
在该DNS服务器所运行的当前线程数小于最优线程数,或者小于最优线程数为预设差值时,增加一个线程。例如,当该当前线程数据小于最优线程或者小于最优线程减去2时,增加一个线程。这里增加一个线程的具体过程为:
首先,为DNS服务器启动一个新线程;然后,将该新线程与DNS服务器所在的物理服务器的一个CPU进行绑定。这里的CPU可以是实际的CPU,也可以是一个完整CPU所模拟的一个虚拟CPU。
S104:当前线程数大于最优线程数时,减少一个线程。
在该DNS服务器所运行的当前线程数大于最优线程数,或者大于最优线程数为预设差值时,增加一个线程。例如,当该当前线程数据大于最优线程或者大于最优线程加2时。这里减少一个线程的具体过程为:
首先,从该DNS服务器所运行的所有线程中选定一个线程作为待关闭的目标线程,并停止向该目标线程分配任务;然后,当该目标线程处理完所有任务后,将该目标线程予以关闭。
从上述技术方案可以看出,本实施例提供了一种基于机器学习的DNS线程管理方法,该方法应用于基于Linux操作系统搭建的DNS服务器,具体为每隔预设时长获取DNS服务器中所有线程所处理请求的请求数量;利用预设的线程控制模型对请求数量进行计算,得到最优线程数;如果当前线程数小于最优线程数,增加一个线程;如果当前线程数大于最优线程数,减少一个线程。通过对DNS服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了DNS服务器的效率。
上述的线程控制模型的获取首先需搭建一个测试环境。该环境包括多个开启不同线程的DNS服务器,并模拟用户进行请求查询。如,若本申请规定最小开启2个线程,最多31个,则需要搭建30个开启不同线程数量的DNS服务器,这些DNS服务器所运行的线程数量分别是2、3、4....30和31;且每个DNS服务器运行在相同的环境下,如同一物理机器或虚拟机上,且使用的相同的操作系统,本实施例中采用Linux操作系统,也可以用其他操作系统,如windows、unix等,这里不做限制。
在搭建好上述测试环境后,通过如下步骤获取:
S2001:向每台DNS服务器发送查询请求。
此时,针对每台DNS服务器,模拟用户进行查询请求。举例说明,在linux系统下,可以使用dnsperf命令模拟用户进行DNS查询请求。
S2002:获取DNS服务器的处理数据。
该处理数据包括处理请求数量、请求处理时间和系统丢包率。上述数据可以通过查询DNS服务器的服务器日志和系统监控日志获取,通过查询服务器日志可以获取除去请求数量和请求处理时间,通过查询系统监控日志则可以获取丢包率。
举例说明:以5分钟为统计时间间隔,统计这5分钟内日志有多少行,行数即处理的请求数量,假设为n;每行日志中必须记录下处理这条请求花费的时间,假设为t,则n条请求就有n个请求花费的时间,可以构成一个集合T={t1,t2,t3,t4....tn};另外,查看linux系统的监控日志,可以得知linux系统在这段时间内接收到的UDP包总数量以及丢弃的UDP包数量,则UDP丢包率=丢弃数量/总数量。
另外,在得到上述服务数据后,为了增加处理效率,还可以对其进行数据清洗和归一化处理。具体为:
首先进行数据清洗处理。例如,如果UDP丢包率高于100%,则说明统计有误,相应的时间的统计数据不再使用。
然后进行数据归一化处理,针对上面的请求处理时间及丢包率,将二者归一化为一个标准数据。举例说明,针对上面所描述的每个5分钟统计时间段,首先将T集合进行排序,然后将最大和最小的20%的数据去掉,然后剩下的值取平均数,记为
Figure 67841DEST_PATH_IMAGE001
Figure 528910DEST_PATH_IMAGE002
其中p是UDP丢包率,s称为服务性能指标。之后计算所有时间段的s,假设有m个时间段,得到一个关于s的集合S={s1,s2,s3....sm}。将S进行排序,从大到小每33.33%的数据归一成一个类别,分别记为3,2,1三个类别,其中类别3指的是值最大的那33.33%的s值。这样就得到了一个s值与类别值之间的对应关系。
S2003:根据上述处理数据和预选的特征值进行训练。
在得到上述处理数据后,进一步预选相应的特征值,该特征值分别为DNS服务器的核数,处理器请求数据,上述目标变量,还有类别值。在确定这些数据后,以这些数据作为训练样本代入预设的函数中进行训练,即利用监督学习的方法对上述数据进行计算,从而训练得到上述线程控制模型。另外,训练方法还可以选用决策树、SVM等对模型进行训练。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例二
图2为本发明实施例提供的一种基于机器学习的DNS线程管理装置的结构框图。
参照图2所示,本实施例提供的DNS线程管理装置应用于DNS服务器,该DNS服务器搭建在运行Linux操作系统的物理服务器上,该DNS线程管理装置具体包括请求数量获取模块10、最优线程计算模块20、第一线程维护模块30和第二线程维护模块40。
请求数量获取模块用于获取DNS服务器上所有线程所处理请求的请求数量。
在DNS服务器启动时,仅开启数量较少的线程并绑定相应的CPU。在DNS服务器处理请求的过程中,检测其上所有线程所有正在处理的请求的数量,即请求数量。
具体来说,可以控制每个线程实时统计自己处理的请求数量,然后每隔一段时间上报自己通过统计得到的请求数量,或者是通过向每个线程发送相应的查询指令的方式获取该请求数量。
最优线程计算模块用于利用线程控制模型对请求数量进行计算,得到最优线程数。
在得到上述所有线程处理的处理数量后,利用预设的线程控制模型对其进行计算,通过计算得到最优线程数,即如果该DNS服务器的线程总数为该最优线程数或者在该最优线程数的预设范围之内时,该DNS的效率较高。
假设某时刻发现过去5分钟处理的请求数为10000,则调用上述模型进行计算,将(2,10000),(3,10000),(4,10000)....分别代入模型进行计算,得到一系列对应的目标变量值,可能为1,2,2,2,2,.....若中间任何时候目标变量取值为3,则停止计算;若目标变量取值一直小于3,则一直计算直到(31,10000)。
记录下目标变量取值为3的线程数,记为L,即最优线程数;若无目标变量为3的样本,则L=31,即最优线程数为该DNS所能启动的最大线程数。
第一线程维护模块用于当前线程数小于最优线程数时,增加一个线程。
在该DNS服务器所运行的当前线程数小于最优线程数,或者小于最优线程数为预设差值时,增加一个线程。例如,当该当前线程数据小于最优线程或者小于最优线程减去2时,增加一个线程。该模块包括线程新增单元和线程绑定单元。
线程新增单元用于为DNS服务器启动一个新线程;线程绑定单元则用于将该新线程与DNS服务器所在的物理服务器的一个CPU进行绑定。这里的CPU可以是实际的CPU,也可以是一个完整CPU所模拟的一个虚拟CPU。
第二线程维护模块用于当前线程数大于最优线程数时,减少一个线程。
在该DNS服务器所运行的当前线程数大于最优线程数,或者大于最优线程数为预设差值时,增加一个线程。例如,当该当前线程数据大于最优线程或者大于最优线程加2时。该模块包括分配控制单元和线程关闭单元。
分配控制单元用于从该DNS服务器所运行的所有线程中选定一个线程作为待关闭的目标线程,并停止向该目标线程分配任务;线程关闭单元则用于当该目标线程处理完所有任务后,将该目标线程予以关闭。
从上述技术方案可以看出,本实施例提供了一种基于机器学习的DNS线程管理装置,该装置应用于基于Linux操作系统搭建的DNS服务器,具体为每隔预设时长获取DNS服务器中所有线程所处理请求的请求数量;利用预设的线程控制模型对请求数量进行计算,得到最优线程数;如果当前线程数小于最优线程数,增加一个线程;如果当前线程数大于最优线程数,减少一个线程。通过对DNS服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了DNS服务器的效率。
另外,本实施例所提供的DNS线程管理装置还包括一个模型训练模块(未示出),该模块用于通过对数据的训练得到上述线程控制模型。
这里需搭建一个测试环境。该环境包括多个开启不同线程的DNS服务器,并模拟用户进行请求查询。如,若本申请规定最小开启2个线程,最多31个,则需要搭建30个开启不同线程数量的DNS服务器,这些DNS服务器所运行的线程数量分别是2、3、4....30和31;且每个DNS服务器运行在相同的环境下,如同一物理机器或虚拟机上,且使用的相同的操作系统,本实施例中采用Linux操作系统,也可以用其他操作系统,如windows、unix等,这里不做限制。
该模型训练模块包括运行控制单元、数据获取单元和训练实施单元。
运行控制单元用于向上述所搭建的测试环境中的每台DNS服务器发送查询请求。
此时,针对每台DNS服务器,模拟用户进行查询请求。举例说明,在linux系统下,可以使用dnsperf命令模拟用户进行DNS查询请求。
数据获取单元用于获取DNS服务器的处理数据。
该处理数据包括处理请求数量、请求处理时间和系统丢包率。上述数据可以通过查询DNS服务器的服务器日志和系统监控日志获取,通过查询服务器日志可以获取除去请求数量和请求处理时间,通过查询系统监控日志则可以获取丢包率。
举例说明:以5分钟为统计时间间隔,统计这5分钟内日志有多少行,行数即处理的请求数量,假设为n;每行日志中必须记录下处理这条请求花费的时间,假设为t,则n条请求就有n个请求花费的时间,可以构成一个集合T={t1,t2,t3,t4....tn};另外,查看linux系统的监控日志,可以得知linux系统在这段时间内接收到的UDP包总数量以及丢弃的UDP包数量,则UDP丢包率=丢弃数量/总数量。
另外,该模块还包括数据处理单元,该单元用于在得到上述服务数据后,为了增加处理效率,对其进行数据清洗和归一化处理。具体为:
首先进行数据清洗处理。例如,所UDP丢包率高于100%,则说明统计有误,相应的时间的统计数据不再使用。
然后进行数据归一化处理,针对上面的请求处理时间及丢包率,将二者归一化为一个标准数据。举例说明,针对上面所描述的每个5分钟统计时间段,首先将T集合进行排序,然后将最大和最小的20%的数据去掉,然后剩下的值取平均数,记为
Figure 912749DEST_PATH_IMAGE001
̅,然后计算:
Figure 685533DEST_PATH_IMAGE003
其中p是UDP丢包率,s称为服务性能指标。之后计算所有时间段的s,假设有m个时间段,得到一个关于s的集合S={s1,s2,s3....sm}。将S进行排序,从大到小每33.33%的数据归一成一个类别,分别记为3,2,1三个类别,其中类别3指的是值最大的那33.33%的s值。这样就得到了一个s值与类别值之间的对应关系。
训练实施单元用于根据上述处理数据和预选的特征值进行训练。
在得到上述处理数据后,进一步预选相应的特征值,该特征值分别为DNS服务器的核数,处理器请求数据,上述目标变量,还有类别值。在确定这些数据后,利用监督学习的方法对上述数据进行计算,从而训练得到上述线程控制模型。另外,训练方法还可以选用决策树、SVM等对模型进行训练。
实施例三
本实施例还提供一种服务器,该服务器运行有Linux操作系统,并配置有相应的DNS服务器,该DNS服务器设置有上一实施例中所提供的DNS线程管理装置,该装置用于为每隔预设时长获取DNS服务器中所有线程所处理请求的请求数量;利用预设的线程控制模型对请求数量进行计算,得到最优线程数;如果当前线程数小于最优线程数,增加一个线程;如果当前线程数大于最优线程数,减少一个线程。通过对DNS服务器的线程数的动态调整,既可以避免在流量高峰状态时出现线程不足,也可以避免在流量低谷期间造成计算资源浪费,从而提高了DNS服务器的效率。
置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (9)

1.一种基于机器学习的DNS线程管理方法,应用于基于Linux操作系统搭建的DNS服务器,其特征在于,所述DNS线程管理方法包括步骤:
每隔预设时长获取所述DNS服务器中所有线程所处理请求的请求数量;
利用预设的线程控制模型对所述请求数量进行计算,得到最优线程数;
如果当前线程数小于所述最优线程数,增加一个线程;
如果所述当前线程数大于所述最优线程数,减少一个线程;
其中,所述线程控制模型的获取,包括:
搭建测试环境,所述测试环境包括多个开启不同线程的DNS服务器;
向所述多个开启不同线程的DNS服务器中的每台DNS服务器发送查询请求;
获取所述多个开启不同线程的DNS服务器中的每台DNS服务器的处理数据,其中,所述处理数据包括处理请求数量、请求处理时间和系统丢包率;
对获取的每台DNS服务器的处理数据进行数据清洗和归一化处理;
其中,所述归一化处理包括,将经过数据清洗后的处理数据的请求处理时间和系统丢包率,归一化为数据服务性能指标;所述归一化处理具体包括,通过公式:
Figure 225125DEST_PATH_IMAGE001
对经过数据清洗后的处理数据进行求解,获得每台DNS服务器的服务性能指标,其中,s为服务性能指标,P为系统丢包率,
Figure 831687DEST_PATH_IMAGE002
为处理数据筛选后的请求处理时间的平均值;
对每台DNS服务器的s值进行从大到小排序,将经过排序的s值等量划分为等量的类别3,类别2和类别1,其中类别3为s值最大的类别,由此获得s值与类别值的对应关系;
将经过数据清洗和归一化处理后的处理数据和预选的特征值作为训练样本代入预设的函数进行训练,从而获得所述线程控制模型,其中,所述特征值包括类别值和目标变量值;
其中,将DNS服务器的处理请求数和不同线程数目输入所述线程控制模型;在所述线程控制模型输入的线程数目所对应的输出为对应于类别3的目标变量值3时,该线程数目为最优线程数。
2.如权利要求1所述的DNS线程管理方法,其特征在于,所述处理数据通过如下步骤得到:
在所述多个开启不同线程的DNS服务器中的每台DNS服务器处理所述查询请求时,获取所述多个开启不同线程的DNS服务器中的每台DNS服务器的处理数据。
3.如权利要求1所述的DNS线程管理方法,其特征在于,所述增加一个线程,包括:
启动一个新线程;
将所述新线程与所述DNS服务器的一个CPU进行绑定。
4.如权利要求1所述的DNS线程管理方法,其特征在于,所述减少一个线程,包括:
停止向当前线程中选定的目标线程分配任务;
在所述目标线程执行完所有任务后,关闭所述目标线程。
5.一种基于机器学习的DNS线程管理装置,应用于基于Linux操作系统搭建的DNS服务器,其特征在于,所述DNS线程管理装置包括:
请求数量获取模块,用于每隔预设时长获取所述DNS服务器中所有线程所处理请求的请求数量;
最优线程计算模块,用于利用预设的线程控制模型对所述请求数量进行计算,得到最优线程数;
第一线程维护模块,用于如果当前线程数小于所述最优线程数,增加一个线程;
第二线程维护模块,用于如果所述当前线程数大于所述最优线程数,减少一个线程;
其中,所述线程控制模型的获取,包括:
搭建测试环境,所述测试环境包括多个开启不同线程的DNS服务器;
向所述多个开启不同线程的DNS服务器中的每台DNS服务器发送查询请求;
获取所述多个开启不同线程的DNS服务器中的每台DNS服务器的处理数据,其中,所述处理数据包括处理请求数量、请求处理时间和系统丢包率;
对获取的每台DNS服务器的处理数据进行数据清洗和归一化处理;
其中,所述归一化处理包括,将经过数据清洗后的处理数据的请求处理时间和系统丢包率,归一化为数据服务性能指标;所述归一化处理具体包括,通过公式:
Figure 90630DEST_PATH_IMAGE001
对经过数据清洗后的处理数据进行求解,获得每台DNS服务器的服务性能指标,其中,s为服务性能指标,P为系统丢包率,
Figure 297489DEST_PATH_IMAGE002
为处理数据筛选后的请求处理时间的平均值;
对每台DNS服务器的s值进行从大到小排序,将经过排序的s值等量划分为等量的类别3,类别2和类别1,其中类别3为s值最大的类别,由此获得s值与类别值的对应关系;
将经过数据清洗和归一化处理后的处理数据和预选的特征值作为训练样本代入预设的函数进行训练,从而获得所述线程控制模型,其中,所述特征值包括类别值和目标变量值;
其中,将DNS服务器的处理请求数和不同线程数目输入所述线程控制模型;在所述线程控制模型输入的线程数目所对应的输出为对应于类别3的目标变量值3时,该线程数目为最优线程数。
6.如权利要求5所述的DNS线程管理装置,其特征在于,还包括处理数据模块,其中,所述处理数据模块包括:
数据获取单元,用于在所述多个开启不同线程的DNS服务器中的每台DNS服务器处理所述查询请求时,获取所述多个开启不同线程的DNS服务器中的每台DNS服务器的处理数据。
7.如权利要求5所述的DNS线程管理装置,其特征在于,所述第一线程维护模块包括:
线程新增单元,用于启动一个新线程;
线程绑定单元,用于将所述新线程与所述DNS服务器的一个CPU进行绑定。
8.如权利要求5所述的DNS线程管理装置,其特征在于,所述第二线程维护模块包括:
分配控制单元,用于停止向当前线程中选定的目标线程分配任务;
线程关闭单元,用于在所述目标线程执行完所有任务后,关闭所述目标线程。
9.一种服务器,其特征在于,所述服务器配置有基于Linux操作系统的DNS服务器,其中,所述DNS服务器设置有如权利要求5~8任一项所述的DNS线程管理装置。
CN201810068774.6A 2018-01-24 2018-01-24 一种基于机器学习的dns线程管理方法、装置和服务器 Active CN108446170B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810068774.6A CN108446170B (zh) 2018-01-24 2018-01-24 一种基于机器学习的dns线程管理方法、装置和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810068774.6A CN108446170B (zh) 2018-01-24 2018-01-24 一种基于机器学习的dns线程管理方法、装置和服务器

Publications (2)

Publication Number Publication Date
CN108446170A CN108446170A (zh) 2018-08-24
CN108446170B true CN108446170B (zh) 2021-06-22

Family

ID=63191139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810068774.6A Active CN108446170B (zh) 2018-01-24 2018-01-24 一种基于机器学习的dns线程管理方法、装置和服务器

Country Status (1)

Country Link
CN (1) CN108446170B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109840142B (zh) * 2018-12-15 2024-03-15 平安科技(深圳)有限公司 基于云监控的线程控制方法、装置、电子设备及存储介质
CN109885385B (zh) * 2018-12-21 2023-07-07 山东中创软件商用中间件股份有限公司 一种应用服务器线程池的自调优方法、装置及设备
CN110069340B (zh) * 2019-04-01 2022-09-16 北京百度网讯科技有限公司 线程数评估方法及装置
CN110569238B (zh) * 2019-09-12 2023-03-24 成都中科大旗软件股份有限公司 一种基于大数据的数据治理方法、系统、存储介质和服务端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103543987A (zh) * 2012-07-11 2014-01-29 Sap股份公司 用于高效并行运行的反馈驱动调节
CN104657219A (zh) * 2015-02-27 2015-05-27 西安交通大学 一种用于异构众核系统下的应用程序线程数动态调整方法
CN106548210A (zh) * 2016-10-31 2017-03-29 腾讯科技(深圳)有限公司 机器学习模型训练方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103543987A (zh) * 2012-07-11 2014-01-29 Sap股份公司 用于高效并行运行的反馈驱动调节
CN104657219A (zh) * 2015-02-27 2015-05-27 西安交通大学 一种用于异构众核系统下的应用程序线程数动态调整方法
CN106548210A (zh) * 2016-10-31 2017-03-29 腾讯科技(深圳)有限公司 机器学习模型训练方法及装置

Also Published As

Publication number Publication date
CN108446170A (zh) 2018-08-24

Similar Documents

Publication Publication Date Title
CN108446170B (zh) 一种基于机器学习的dns线程管理方法、装置和服务器
Xue et al. Practise: Robust prediction of data center time series
CN108234524B (zh) 网络数据异常检测的方法、装置、设备及存储介质
US20190065738A1 (en) Detecting anomalous entities
CN106649831B (zh) 一种数据过滤方法及装置
US20170213037A1 (en) Security risk scoring of an application
KR20190022431A (ko) 랜덤 포레스트 모델의 훈련 방법, 전자장치 및 저장매체
CN107578263B (zh) 一种广告异常访问的检测方法、装置和电子设备
Al-Haidari et al. Evaluation of the impact of EDoS attacks against cloud computing services
Zhang et al. Identifying, analyzing, and modeling flashcrowds in bittorrent
CN105260913A (zh) 用于互联网广告投放的ctr预估方法、dsp服务器、系统
WO2014206131A1 (en) Method and apparatus for report generation
CN107392020A (zh) 数据库操作分析方法、装置、计算设备及计算机存储介质
CN111882349B (zh) 一种数据处理方法、装置及存储介质
CN108463813B (zh) 一种进行数据处理的方法和装置
Arslan et al. Automatic performance analysis of cloud based load testing of web-application & its comparison with traditional load testing
CN102546235A (zh) 云计算环境下面向web应用的性能诊断方法和系统
JP5768722B2 (ja) 検証試験のためのプログラム、情報処理方法及び情報処理装置
CN111277451B (zh) 一种业务评估方法、装置、终端设备和介质
CN109858632B (zh) 一种确定阈值的方法及装置
CN116760726A (zh) 一种基于编解码算法的供应商作弊检测方法
Zou et al. Autocvss: An approach for automatic assessment of vulnerability severity based on attack process
Minku et al. Using unreliable data for creating more reliable online learners
US11218487B1 (en) Predictive entity resolution
CN108881272B (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
GR01 Patent grant
GR01 Patent grant