一、介绍:
nscd(Name Service Cache Daemon)是一种能够缓存 passwd、group、hosts 的本地缓存服务,分别对应三个源 /etc/passwd、/etc/hosts、/etc/resolv.conf。其最为明显的作用就是加快 DNS 解析速度,在接口调用频繁的内网环境建议开启。默认Linux服务器是不会对DNS解析记录进行缓存的,系统安装了nscd之后,几乎所有的DNS查询都会经过nscd,可以避免很多重复的DNS查询。
二、开启NSCD DNS缓存服务的优点和缺点:
1、优点
本地缓存DNS解析信息,提供解析速度。
DNS服务挂了也没有问题,在缓存服务时间范围内,解析依旧正常。
2、缺点
DNS解析信息会滞后,如域名解析更改需要手动刷新缓存,NSCD不适合做实时的切换的应用,目前对于依赖DNS切换的服务,建议不要开启DNS缓存。
DNS Cache作为普通的DNS解析Cache那是没问题的,如果你使用RDS云服务器,也不建议使用DNS缓存服务。
三、 安装配置
yum install -y nscd
systemctl enable nscd
systemctl start nscd
有需要的话还可以配置一下nscd, /etc/nscd.conf
#设置日志文件
logfile debug-file-name
#设置debug记录的级别,默认是0
debug-level value
#程序启动时,等待进去请求的处理线程数,至少5个
threads number
#最大线程数,默认32
max-threads number
#nscd程序以哪个用户运行,如果设置了该选项,nscd将作为该用户运行,
#而不是作为root。如果每个用户都使用一个单独的缓存(-S参数),将忽略该选项。
server-user user
#哪个用户可以请求统计用户
stat-user user
#在一个缓存项被删除之前允许使用的次数,默认是5
reload-count unlimited | number
#是否启用偏执模式,启用会导致nscd周期性重启,默认是no
paranoia <yes|no>
#如果启用偏执模式,设置的定期重启nscd的时间间隔,默认是3600秒
restart-interval time
#开启或者关闭服务缓存,默认是no
enable-cache service <yes|no>
#为成功请求的元素设置缓存TTL,单位是秒,值越大缓存命中率越高,
#降低平均响应时间,但会增加缓存的一致性问题
positive-time-to-live service value
#为失败查询元素设置缓存TTL,单位是秒,应保持小值,减小缓存一致性问题
negative-time-to-live service value
#内部的散列表大小,value应该保持一个素数以达到优化效果。默认值是211
suggested-size service value
#启用或者禁用检查文件是否属于指定的服务,这些文件是/etc/passwd、/etc/group、
#/etc/hosts、/etc/services、/etc/netgroup等
check-files service <yes|no>
#设置缓存在服务器重启后,仍旧能提供缓存服务,在使用偏执模式时有用,默认是no
persistent service <yes|no>
#为客户端共享nscd数据库在内存中做的映射,使客户端可以直接搜索,
#而不用每次都查询守护进行,默认是no
shared service <yes|no>
#该数据库的最大大小,单位是bytes,默认是33554432
max-db-size service bytes
#此选项仅使用于passwd和group服务
auto-propagate service <yes|no>
四、常规命令
nscd -g //查看命中数
nscd -i hosts //清除缓存