zoukankan      html  css  js  c++  java
  • Linux主机解析顺序

    1.介绍

      本篇文章由于因公司项目上线,需要对项目环境进行压力测试。在压测过程中,所有打压机从公网对目标项目服务器进行压力测试,发现和内网压力测试的性能结果差距10倍左右,在调整主机对DNS的解析顺序之后,解决了压测结果差距大的问题。

      故此篇文章主要从Linux服务器解析顺序开始分析,了解一下Linux服务器解析顺序,以及速度,最后在对比改变的前后性能差距有多少。

     

    2.主机的DNS解析过程

    2.1 主机的解析顺序以及速度

      主机DNS解析的步骤如下:

      • 找缓存
      • 找本机的hosts文件
      • 找DNS服务器

      在linux系统上(如centos7)上,需要一个NSCD服务来缓存DNS解析信息,在一些云平台的默认镜像中不安装此服务, 所以这里没有缓存的产生。那么解析顺序就变成了 本机hosts→ DNS服务器

      在以上三个步骤中,缓存依赖NSCD服务,该服务将DNS解析的内容缓存在内存中,主机解析直接去内存中读取对应的解析记录,且解析的顺序也是主机解析步骤的第一步,速度最快; 在第二步中查找本机的hosts文件,主机每次都会去打开本地磁盘上的文件进行对应的查找以及解析,与缓存相对应速度会慢很多;第三步在缓存以及本机hosts文件都没有对应的解析后,主机会向配置的DNS服务器发送查询解析请求,整个过程可能由于网络或者DNS服务器的响应速度而受到很大的影响,按照主机的解析顺序来看,先一步的速度都会优于下一步的速度。

     

    2.2 改变主机解析顺序

      可能在不同的环境中也有一些不同的策略,需要直接去请求DNS服务器。往往解析一个域名时,先会找/etc/hosts文件(没有安装NSCD服务),如果/etc/hosts文件没有对应,才会去找DNS,那么有什么方式,让主机先找DNS呢?

    在/etc/nsswitch.conf这个文件里定义:

    #本节中,DNS缓存的解析顺序原本是由  hosts → DNS  
    hosts:      files dns    #找到这段,改成下面这样  
    hosts:      dns files     

      这样主机就会去先找DNS,在去查找hosts。

     

    2.3 增加DNS缓存之NSCD服务

      nscd(Name Service Cache Daemon)是一种能够缓存 passwd、group、hosts 的本地缓存服务,分别对应三个源 /etc/passwd、/etc/hosts、/etc/resolv.conf。其最为明显的作用就是加快 DNS 解析速度.

      这里利用 nscd 的 hosts 缓存服务来实现 linux 下的 dns 缓存。

      NSCD(Name Service Cache Daemon)是服务缓存守护进程,它为NIS和LDAP等服务提供更快的验证。不管是什么系统,缓存是一项非常重要的机制,缓存的主旨就是提高客户端访问速度。

     

      1.开启NSCD DNS缓存服务的优点和缺点

    • 优点
      • 本地缓存DNS解析信息,提供解析速度。
      • DNS服务挂了也没有问题,在缓存服务时间范围内,解析依旧正常。
    • 缺点
      • DNS解析信息会滞后,如域名解析更改需要手动刷新缓存,NSCD不适合做实时的切换的应用,目前对于依赖DNS切换的服务,建议不要开启DNS缓存。
      • DNS Cache作为普通的DNS解析Cache那是没问题的,如果你使用RDS云服务器,也不建议使用DNS缓存服务。

     

      2.NSCD安装

    • RHEL/CentOS
      • $ yum -y install nscd  
    • Debian/Ubuntu
      • $ apt-get install nscd  

     

      3.配置DNS缓存

      这里就不解释所有配置的含义。只解释简单需求完成的配置。

      通过编辑/etc/nscd.conf文件,在其中增加如下一行可以开启本地DNS Cache(Centos7默认开启)

    enable-cache hosts yes #这个服务除了dns缓存之外还可以缓存passwd,group,servers  

     

      4.清除指定类型缓存

    $ nscd -i passwd  
    $ nscd -i group  
    $ nscd -i hosts  

     

      5.DNS缓存在服务器上的作用

      在需要通过域名与外界进行数据交互的时候,dns缓存就派上用场了,它可以减少域名解析的时间,提高效率。例如以下情况

      • 使用爬虫采集网络上的页面数据,
      • 使用auth2.0协议从其他平台(如微博或QQ)获取用户数据,
      • 使用第三方支付接口,
      • 使用短信通道下发短信等.

     

    3.压测结果对比

      由于是压测人员自定义的压测策略,这里只做了一个简单的平均时延测试,主要对比本机hosts和缓存的性能差距。

      主要过程为centos7系统的主机以36000人每秒300人次像域名地址发送登录请求.

    解析方式

    压测总人数

    每秒登录

    平均时延(ms)

    本地hosts

    36000

    300

    152

    缓存

    36000

    300

    118

    #根据公司政策,只能提供以上一些数据.

     

    作者:小家电维修

    相见有时,后会无期。

  • 相关阅读:
    Gentoo 使用genkernel之后,修改了kernel,重新编译kernel和生成initramfs
    如何让git自动在commit message中加入你需要的sob?
    Gentoo:请安装bashcompletion package
    Kernel开发 SubmittingPatches,有关ifdef和static inline & macro
    Kernel开发 Thunderbird配置 From kernel documentation
    Gentoo 添加gentoozh overlay
    linux把文件压缩成.tar.gz的命令
    redhat下装ftp服务器(vsftpd)
    GDB调试精粹及使用实例
    linux中常用的头文件
  • 原文地址:https://www.cnblogs.com/lizexiong/p/14350823.html
Copyright © 2011-2022 走看看