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. [DB] 大数据概述

    什么是大数据 电商推荐系统 大量订单如何存储(十年) 大量的订单如何计算(不关心算法) 天气预报 大量的天气数据如何存储 大量天气数据如何计算 核心问题 数据的存储:分布式文件系统(HDFS) 数据的 ...

  2. 使用CSS设置边框和背景

    一.设置边框 1.边框样式 属性 说明 border-width 设置边框的宽度 boder-style 设置边框的样式 border-color 设置边框的颜色 a.border-width属性 自 ...

  3. QT windows 应用程序 exe ,设置详细信息并解决中文乱码问题

    原博主:https://blog.csdn.net/xiezhongyuan07/article/details/87691490 1.新创建一个.rc文件,随意命名,例如叫app.rc 并编辑 1 ...

  4. cent7 配 yum源

    今天笔记配置CentOS 7本地镜像为yum源,废话不多说,上去就是干! 1:挂镜像: ? 1 2 3 4 #创建目标挂载目录 mkdir /media/CentOS7 #将镜像挂载到目标目录 mou ...

  5. Spark 集群安装部署

    安装准备 Spark 集群和 Hadoop 类似,也是采用主从架构,Spark 中的主服务器进程就叫 Master(standalone 模式),从服务器进程叫 Worker Spark 集群规划如下 ...

  6. SQL注入和XSS攻击

    SQL注入 定义:黑客通过在请求的数据中填入特殊字符,影响服务器数据库操作程序正常执行,从而达到攻击的目的. 形式: 拼接SQL: 登录验证:前台输入 username:yan password:12 ...

  7. 面试官问我:如何在 Python 中解析和修改 XML

    摘要:我们经常需要解析用不同语言编写的数据.Python提供了许多库来解析或拆分用其他语言编写的数据.在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML. 本文分享 ...

  8. 上传靶机实战之upload-labs解题

    前言 我们知道对靶机的渗透可以提高自己对知识的掌握能力,这篇文章就对上传靶机upload-labs做一个全面的思路分析,一共21个关卡.让我们开始吧,之前也写过关于上传的专题,分别为浅谈文件上传漏洞( ...

  9. leetcode中Java关于Json处理的依赖

    leetcode的java代码提供的main函数中,往往有关于json的依赖...我找了许久才找到他们用的是这个json实现 <dependency> <groupId>com ...

  10. node.js学习(5)读写文件(同步异步)

    1 导入文件系统库 # 同步的 读文件 写文件 # 异步 需要用异步处理耗时