linux

CentOS7 开启 NSCD 缓存服务减少DNS集群请求压力

发布时间:3年前热度: 2722 ℃评论数:

一、介绍:

    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          //清除缓存


NSCD、DNS缓存、centos7

手机扫码访问