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

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

Linux主机解析顺序的更多相关文章

  1. 使用nsswitch控制linux dns解析顺序

    参考:1.DNS原理入门参考:http://www.ruanyifeng.com/blog/2016/06/dns.html 2.http://cn.linux.vbird.org/linux_ser ...

  2. Linux系统解析域名的先后顺序【转帖】

    Linux系统解析域名的先后顺序 gd_WWW已经在本地(/etc/hosts)进行指向,但是竟然还能解析到外网,让我百思不得其解.经过不断查找发现域名解析与以下四个文件有关: /etc/hosts ...

  3. linux下DNS设置以及解析顺序

    1.编辑/etc/resolv.conf文件,添加如下语句: nameserver dns_ip(例如nameserver 8.8.8.8) 2.如/etc/nsswitch.conf中未包含启用DN ...

  4. Linux主机SSH免密设置解析

    为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录.但是很多时候为了操作方便,我们都通过设置SSH免密码登录.那么该如何设置?是不是免密码登录就不安全了呢? 一.被 ...

  5. linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换

    用域名获取IP地址或者用IP获取域名 #include<stdio.h> #include<sys/socket.h> #include<netdb.h> int ...

  6. Linux本地解析文件/etc/hosts说明【原创】

    windows的域名本地解析文件hosts是可以一个域名对多个IP,如果有一个IP有问题,可以去解析到其他IP Linux的本地解析文件/etc/hosts,是否也可以这样呢.下面做了个测试 先看一下 ...

  7. 如何修改Linux主机名

    Linux 下什么都比较麻烦,就连修改主机名也不例外.我们就下文说一下具体方法. Linux 安装好后,其默认的主机名是 localhost.修改 Linux 主机名需要3步. 使用 hostname ...

  8. Nagios配置—添加linux主机监控

    nagios安装请参看:Nginx平台安装Nagios监控服务 下面是我添加linux监控机的过程,如有错误或者不当的地方请指出: 测试环境: 监控主机:nagios+nagios插件+nrpe+网站 ...

  9. hadoop搭建杂记:Linux下不同linux主机之间文件copy的scp命令

    不同的Linux之间copy文件常用有3种方法: 不同的Linux之间copy文件常用有3种方法: ①ftp 就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的程序来进行文件 ...

随机推荐

  1. Davinci 可视化系统部署安装及简单使用

    Davinci 是一个目前比较热门的国内开源BI系统,功能比较完善,各种可视化效果也挺不错.主要获取数据的方式是通过编写SQL 创建数据视图来展示各种图表的. Davinci面向业务人员/数据工程师/ ...

  2. [Scala] 面向对象

    类定义 当属性是private时,scala会自动为其生成get和set方法 只希望scala生成get,不生成set,可定义为常量 不生成get和set方法,使用private[this]关键字 1 ...

  3. 还可以使用 -c 参数来显示全部内容,并标出不同之处 diff -c test2.txt test1.txt

    二.实例 在test目录下存放了两个文本文件,test1.txt  test2.txt . 比较这两个文件的异同. diff  test1.txt   test2.txt     "5c5& ...

  4. 面试阿里P6难在哪?(面试难点)

    对于很多没有学历优势的人来说,面试大厂是非常困难的,这对我而言,也是一样,出身于二本,原本以为就三点一线的生活度过一生,直到生活上的变故,才让我有了新的想法和目标,因此我这个二本渣渣也奋斗了起来,竟拿 ...

  5. SystemVerilog 编写FSM

    SystemVerilog 编写FSM 题目 SystemVerilog实现 仿真 SystemVerilog 编写FSM 好书: https://github.com/yllinux/blogPic ...

  6. Linux巡检常用命令

    # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostn ...

  7. Ansible_实施处理程序

    一.Ansible配置处理程序 1.处理程序 1️⃣:处理程序是响应由其他任务触发的通知的任务 2️⃣:仅当任务在受管主机上更改了某些内容时,任务才通知其处理程序 3️⃣:每个处理程序具有全局唯一的名 ...

  8. 配置文件修改java安全级别和站点信息

    配置文件修改java安全级别和站点信息原创Green_1001 最后发布于2015-04-22 23:00:09 阅读数 516 收藏展开 通过配置文件修改java安全级别 配置文件名称为deploy ...

  9. mysql基础之mariadb概念

    一.数据库介绍 什么是数据库(Database)? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库 ...

  10. shell应用之简单计算器

    1 #!/bin/bash 2 while : 3 do 4 read -p "请输入计算规则:" JS 5 if [ -z $JS ];then 6 exit 7 else 8 ...