linux本身是没有dns缓存的,想使用dns缓存的话需要安装nscd服务
nscd(Name Service Cache Daemon)是一种能够缓存 passwd、group、hosts 的本地缓存服务,分别对应三个源 /etc/passwd、/etc/hosts、/etc/resolv.conf。其最为明显的作用就是加快 DNS 解析速度,在接口调用频繁的内网环境建议开启。
$ yum install nscd
安装后,nscd 的缓存文件路径为/var/db/nscd/。
nscd 的配置文件默认路径为/etc/nscd.conf。
开启 nscd 的 hosts 缓存服务后,每次内部接口请求不会都发起 dns 解析请求,而是直接命中 nscd 缓存散列表,从而获取对应服务器 ip 地址,这样可以在大量内部接口请求时减少接口的响应时间。
https://www.fanhaobai.com/2017/06/nscd-dns-cache.html
https://blog.csdn.net/heshan307/article/details/52444722
在需要通过域名与外界进行数据交互的时候,dns缓存就派上用场了,它可以减少域名解析的时间,提高效率.例如以下情况:
使用爬虫采集网络上的页面数据,
使用auth2.0协议从其他平台(如微博或QQ)获取用户数据,
使用第三方支付接口,
使用短信通道下发短信等.
首先要看网络和dns服务器的能力,dns解析越慢,dns缓存的优势就越大.比如我们在北京用的dns服务器202.106.0.20和google的dns服务器8.8.8.8速度会差不少.
如果dns服务器比较稳定,那它对效率的影响就是一个常数.这个常数有多大呢?
我简单试了一下.在局域网内进行压力测试,压一个nginx下的静态页面,使用202.106.0.20这个dns服务器,不用dns缓存.平均一分钟可以访问27万次.压一个简单的php页面,平均一分钟可以访问22万次.加上nscd服务后,静态页面平均一分钟可以访问120万次,要快4倍多.php页面平均一分钟可以访问50万次,快一倍多.
如果是做搜索引擎或是一些代理服务类的项目,比如短信通道,数据推送服务,这个性能提升还是比较可观的.但在一般的项目中,一台服务器每分钟发22万次请求的情况是很少见的,所以这个性能提升也微呼其微.
但在追求极限的道路上,每一小步都至关重要噢~
https://blog.51cto.com/shenliyang/1387576
Linux下DNS缓存实现通常有两种方式
一种是普通服务器下用DNS缓存程序NSCD(name service cache daemon)负责管理DNS缓存。
一种是由Bind或dnsmasq软件架设的域名服务器会自带dns cache
如何清空DNS缓存
一、Linux下清空DNS缓存
如果是清除NSCD上的Cache,可重新启动NSCD服务来达成清除DNS Cache的效果。
如果是清除BIND服务器上的CACHE
查看bind DNS Cache
#rndc -dumpdb
如果你的DNS服务器是用dnsmasq实现的
$ sudo /etc/init.d/dnsmasq restart
注:DNSmasq是一个轻巧的,容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的DNS服务。
二、windows下如何清空dns:
清空dns 缓存内容。
ipconfig /flushdns
查看dns缓存内容。
ipconfig/displaydns
windows下的DNS Cache 是由DNS Client后台进程控制的,你可以在控制面板 ->服务中将其关闭,
这样windows就不会进行DNS缓存,每次都将直接查询DNS Server。
三、Mac OSX下如何清空DNS缓存:
bash-2.05a$lookupd-flushcache