欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux应用- 使用nscd作为本地dns缓存

程序员文章站 2024-02-20 20:15:46
...

1- 背景

公司使用阿里云主机,且首选DNS使用的也是阿里云的。但是有一个face++的业务总是会报UnKnownHostException。抓包查了一波发现虽然阿里DNS有时候会ServFail,但是这些都是请求的域名后面加了localdomain导致的,所以理论上业务不应该出现UnKnownHostException。业务端改了超时时间也增加了retry的次数,但是还是会报UnKnownHostException。感觉是请求太频繁导致的,所以,在云主机本地都启用了nscd。

2- 安装配置

  • 安装很简单
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>

3 其他命令

nscd -g                //查看命中数
nscd -i hosts          //清除缓存
相关标签: Linux应用