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 |
#根据公司政策,只能提供以上一些数据.
Linux主机解析顺序的更多相关文章
- 使用nsswitch控制linux dns解析顺序
参考:1.DNS原理入门参考:http://www.ruanyifeng.com/blog/2016/06/dns.html 2.http://cn.linux.vbird.org/linux_ser ...
- Linux系统解析域名的先后顺序【转帖】
Linux系统解析域名的先后顺序 gd_WWW已经在本地(/etc/hosts)进行指向,但是竟然还能解析到外网,让我百思不得其解.经过不断查找发现域名解析与以下四个文件有关: /etc/hosts ...
- linux下DNS设置以及解析顺序
1.编辑/etc/resolv.conf文件,添加如下语句: nameserver dns_ip(例如nameserver 8.8.8.8) 2.如/etc/nsswitch.conf中未包含启用DN ...
- Linux主机SSH免密设置解析
为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录.但是很多时候为了操作方便,我们都通过设置SSH免密码登录.那么该如何设置?是不是免密码登录就不安全了呢? 一.被 ...
- linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换
用域名获取IP地址或者用IP获取域名 #include<stdio.h> #include<sys/socket.h> #include<netdb.h> int ...
- Linux本地解析文件/etc/hosts说明【原创】
windows的域名本地解析文件hosts是可以一个域名对多个IP,如果有一个IP有问题,可以去解析到其他IP Linux的本地解析文件/etc/hosts,是否也可以这样呢.下面做了个测试 先看一下 ...
- 如何修改Linux主机名
Linux 下什么都比较麻烦,就连修改主机名也不例外.我们就下文说一下具体方法. Linux 安装好后,其默认的主机名是 localhost.修改 Linux 主机名需要3步. 使用 hostname ...
- Nagios配置—添加linux主机监控
nagios安装请参看:Nginx平台安装Nagios监控服务 下面是我添加linux监控机的过程,如有错误或者不当的地方请指出: 测试环境: 监控主机:nagios+nagios插件+nrpe+网站 ...
- hadoop搭建杂记:Linux下不同linux主机之间文件copy的scp命令
不同的Linux之间copy文件常用有3种方法: 不同的Linux之间copy文件常用有3种方法: ①ftp 就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的程序来进行文件 ...
随机推荐
- [刷题] 剑指Offer 面试题7:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历结果,重建该二叉树.(假设输入的前序和中序遍历结果中都不含重复数字) 思路 构建二叉树的两个函数:Construct().ConstructCore() Cons ...
- C++ Error 个人笔记(live)
1.error: invalid conversion from 'char' to 'char*' [-fpermissive] 原因: 把一个字符型的变量赋值给了一个字符型的指针 我的原因: 把 ...
- 11.19 rpm:RPM包管理器
rpm命令的全称是Red Hat Package Manager(Red Hat包管理器),几乎所有的Linux发行版本都使用了这种形式的命令管理.安装.更新和卸载软件. 概括地说,rpm命令包含了五 ...
- Linux中级之负载均衡(lvs,nginx,haproxy)、中间件
一.负载均衡的概念 1.系统的扩展方式: scale up:向上扩展 scale out:向外扩展 2.集群类型: LB(Load Balancing).HA(high availability) ...
- 矩阵中的路径 DFS+剪枝
给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母顺序,通过相邻的单元格内的字母 ...
- 并发王者课-青铜7:顺藤摸瓜-如何从synchronized中的锁认识Monitor
在前面的文章中,我们已经体验过synchronized的用法,并对锁的概念和原理做了简单的介绍.然而,你可能已经察觉到,有一个概念似乎总是和synchronized.锁这两个概念如影相随,很多人也比较 ...
- Spring 是什么?
概述 Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好.易于测试.可重用的代码. Spring 框架是一个开源的 Ja ...
- Spring-Cloud之Feign原理剖析
Feign 主要是帮助我们方便进行rest api服务间的调用,其大体实现思路就我们通过标记注解在一个接口类上(注解上将包含要调用的接口信息),之后在调用时根据注解信息组装好请求信息,接下来基于rib ...
- java并发编程工具类JUC第三篇:DelayQueue延时队列
DelayQueue 是BlockingQueue接口的实现类,它根据"延时时间"来确定队列内的元素的处理优先级(即根据队列元素的"延时时间"进行排序).另一层 ...
- zabbix企业级的分布式开源监控解决方案 v5.0 LTS
目录 zabbix简介 服务模块 客户端守护进程 监控流程 功能拆解 安装 zabbix 5.0 LTS 参考官网 zabbix 5.0.12-1.el7 zabbix-server相关优化 1. 字 ...