1、介绍:
nscd(Name Service Cache Daemon)是一种能够缓存 passwd、group、hosts 的本地缓存服务,分别对应三个源 /etc/passwd
、/etc/hosts
、/etc/resolv.conf
。其最为明显的作用就是加快 DNS 解析速度,在接口调用频繁的内网环境建议开启。默认Linux服务器是不会对DNS解析记录进行缓存的,系统安装了nscd之后,几乎所有的DNS查询都会经过nscd,可以避免很多重复的DNS查询。
2、开启NSCD DNS缓存服务的优点和缺点:
- 优点
- 本地缓存DNS解析信息,提供解析速度。
- DNS服务挂了也没有问题,在缓存服务时间范围内,解析依旧正常。
- 缺点
- DNS解析信息会滞后,如域名解析更改需要手动刷新缓存,NSCD不适合做实时的切换的应用,目前对于依赖DNS切换的服务,建议不要开启DNS缓存。
- DNS Cache作为普通的DNS解析Cache那是没问题的,如果你使用RDS云服务器,也不建议使用DNS缓存服务。
3、nscd安装配置:
默认centos7服务器没有安装nscd服务,需要使用以下命令进行nscd服务安装
yum -y install nscd
修改/etc/nscd.conf配置文件,只进行dns缓存,内容如下:
#
# /etc/nscd.conf
#
# An example Name Service Cache config file. This file is needed by nscd.
#
# Legal entries are:
#
# logfile <file>
# debug-level <level>
# threads <initial #threads to use>
# max-threads <maximum #threads to use>
# server-user <user to run server as instead of root>
# server-user is ignored if nscd is started with -S parameters
# stat-user <user who is allowed to request statistics>
# reload-count unlimited|<number>
# paranoia <yes|no>
# restart-interval <time in seconds>
#
# enable-cache <service> <yes|no>
# positive-time-to-live <service> <time in seconds>
# negative-time-to-live <service> <time in seconds>
# suggested-size <service> <prime number>
# check-files <service> <yes|no>
# persistent <service> <yes|no>
# shared <service> <yes|no>
# max-db-size <service> <number bytes>
# auto-propagate <service> <yes|no>
#
# Currently supported cache names (services): passwd, group, hosts, services
#
# logfile /var/log/nscd.log
threads 4
max-threads 32
server-user nscd
stat-user somebody
debug-level 5
reload-count 5
paranoia no
restart-interval 3600
enable-cache hosts yes
enable-cache passwd no
enable-cache group no
enable-cache services no
positive-time-to-live hosts 5
negative-time-to-live hosts 20
suggested-size hosts 211
check-files hosts yes
persistent hosts yes
shared hosts yes
max-db-size hosts 33554432
启动nscd服务:
systemctl start nscd
4、查看nscd缓存数:
nscd缓存DB文件在/var/db/nscd
下。可以通过nscd -g
查看统计的信息,这里列出dns缓存部分:
hosts cache:
yes cache is enabled
yes cache is persistent
yes cache is shared
211 suggested size
216064 total data pool size
432 used data pool size
5 seconds time to live for positive entries
20 seconds time to live for negative entries
1 cache hits on positive entries
0 cache hits on negative entries
209 cache misses on positive entries
483 cache misses on negative entries
0% cache hit rate
4 current number of cached values
140 maximum number of cached values
4 maximum chain length searched
0 number of delays on rdlock
0 number of delays on wrlock
0 memory allocations failed
yes check /etc/hosts for changes
5、清除指定类型缓存
nscd -i passwd
nscd -i group
nscd -i hosts
除了上面的方法,重启NSCD服务同样可以达到清理Cache的目的。
参考:https://docs.ucloud.cn/uhost/public/dns_setting?id=step-1-配置冗余dns-server地址
参考:http://www.361way.com/linux-nscd-dns-cache/4265.html