Linux 缓存服务 NSCD 使用总结与实践 - Name Service Cache Daemon

发布于:2024-10-24 编辑:匿名 来源:网络

一、简介 NSCD(Name Service Cache Daemon)是一个系统缓存服务,用于缓存常见的名称服务信息,如用户、组、主机名和服务。它可以提高系统的性能,减少对名称服务的频繁查询和网络流量,从而加快系统的响应速度。

NSCD 在许多 Linux 发行版中默认安装,可以使用 systemctl status nscd 命令检查其运行状态。如果需要启动、停止或重新启动 NSCD,可以使用 systemctl start nscd、systemctl stop nscd 或 systemctl restart nscd 命令。

如果在/etc/Hosts中指定了IP解析域名,在实际请求过程中发现没有生效,那么就需要考虑系统中是否存在nscd进程。开启nscd的hosts缓存服务后,会首先搜索nscd缓存表。

如果在缓存表中没有找到并且/etc/hosts中也不存在,那么就会正常发起dns查询。 2. 安装一些发行版。

nscd 是系统内置的(GNB Lib C 库)。如果不是内置或者使用的是最小安装系统,可以直接从软件源安装。

Distro 安装命令 CentOS/RedHatyum install -y nscd Debian/Ubuntuapt-get install -y nscd Arch/Manjaro pacman -Sy glibc Gentoo USE="nscd"emerge --ask glibc Gentoo 必须加上 nscd 的 USE 标记,否则 nscd 包默认不携带。3、nscd.conf参数含义说明。

默认配置文件路径位于/etc/nscd.conf 中。使用grep和sed过滤掉空行和注释后,可以看到默认的配置。

这里,注释掉了每一行的含义: Code Language: shell copy $ grep -vE '^$|^#' /etc/nscd.conf|sed -nr 's/^\s*//gpdebug-level 0paranoia noenable-cache passwd yespositive-time-to-live passwd negative-time-to-live passwd 20suggested-size passwd check-files passwd yespersistent passwd yesshared passwd yesmax-db-size passwd auto-propagate passwd yesenable-cache group yespositive-time-生存组 负生存时间组 60 建议大小组 检查文件组 yespersistent 组 yesshared 组 yesmax-db-size 组自动传播组yesenable-cache 主机 yespositive-time-to-live 主机 yes-time-to-live 主机 负-time-to-live 主机 20suggested-size 主机 check-files 主机 yespersistent 主机 yesshared 主机 yesmax-db-size 主机启用缓存服务 yespositive-time-to-live 服务0 负生存时间服务 20 建议大小服务 检查文件服务 yes 持久服务 yes 共享服务 yes 最大数据库大小服务启用缓存网络组 yes 正生存时间网络组 0 负生存时间网络组 20 建议大小网络组检查文件网络组是持久网络组是共享网络group yesmax-db-size netgroup 这些参数的详细说明可以通过man nscd.conf查看。下面是一些常用参数的解释: 参数说明 debug-level 调试级别,0 表示不输出任何信息 paranoia paranoid 模式,启用 paranoid 模式会导致 nscd 周期性重启。

enable-cache 启用缓存。 Positive-time-to-liveTTL 缓存时间,默认 s。

负生存时间 如果名称服务找不到条目,??则会将其添加到缓存中并标记为“不存在”。此选项设置从缓存中删除不存在的条目后的时间。

密码和主机缓存默认为20秒,组缓存默认为60秒。 suggest-size 设置用于存储缓存项的哈希的大小。

由于这是一个散列,正常应该大于预期缓存的最大条目数,并且应该是素数。默认为条目。

check-files 定期检查 /etc/passwd、/etc/group 或 /etc/hosts(分别用于 passwd、组和主机缓存)的修改时间,如果自上次检查后文件已更改,则使缓存无效。 persist 保留缓存内容,以便在 nscd 重新启动时可以提供服务。

设置偏执模式时很有用。共享 用于服务 nscd 数据库的内存映射与客户端共享,以便客户端可以直接在其中搜索,而不必在每次执行查找时通过套接字询问守护进程。

max-db-size 用于配置 nscd 缓存数据库的最大大小,单位为 Byte。auto-propagate会自动将缓存数据的变化广播给其他进程,以保证缓存数据的一致性。

等待请求的线程数。 logfile 日志文件路径。

server-user是运行用户,即使用哪个用户来运行nscd服务。 4. nscd 命令选项说明 1. -d, --debug 在当前终端下以调试模式运行,可以看到输出的调试日志。

nscd 进程将在当前终端中运行。如果后台已经有nscd服务,可以使用systemctl stop nscd来暂停它。

2. -f, --config-file=NAME 指定nscd的配置文件路径: 代码语言:shell copy nscd -f /etc/nscd.conf 3、 -F, --foreground 在前台运行,不会输出信息被打印到屏幕上。代码语言:shell copy nscd -F。

当然,如果你想后台运行,也可以使用 nohup & 或 screen 来实现,但是 nscd 默认已经被 systemd 控制了,所以不需要做任何额外的事情。这里我们只是展示一下各个参数的作用。

4. -g, --statistics 输出当前配置统计信息,生效后输出各参数选项的配置和缓存命中率统计信息。代码语言:shell copy nscd -g 我这里只配置了hosts缓存: 代码语言:shell copy $ grep -vE '^$|^#' /etc/nscd.conf|sed -nr 's/^\s*/ / gp'debug-level 4paranoia nologfile /var/log/nscd.logenable-cache 主机 yespositive-time-to-live 主机 negative-time-to-live 主机建议大小的主机 check-files 主机 nopersistent 主机 yesshared 主机 yesmax-db - sizehosts 可以看到输出信息参数值全部正确:5、-i、--invalidate=TABLE使指定的缓存失效,后面可以是:passwd、group、hosts、services、netgroup。

例如,要使hosts缓存失效: 代码语言:shell copy nscd -i ports6, -K, --shutdown 终止nscd进程。该选项不会影响systemd管理的nscd服务进程。

代码语言:shell copy nscd -K7, -t, --nthreads=NUMBER 指定要运行的线程数。代码语言:shell copy nscd -t <线程数> 通过/etc/nscd.conf配置文件中的threads选项指定。

5、实际使用:以缓存主机为例。其他表缓存参数没有区别。

/etc/nscd.conf 配置如下: 代码语言:shell copy debug-level 4paranoia nologfile /var/log/nscd.logenable-cache 主机 yespositive-time -to-live 主机 negative-time-to-live 主机建议- sizehosts check-fileshostsnoperstatichostsyessharedhostsyesmax-db-sizehosts 重启nscd服务: 代码语言:shell copy systemctl restart nscd.service 首先验证缓存是否可以命中。对于第一个 ping,nscd 没有相关的缓存条目,因此将其添加到缓存中。

第二次 ping 时,从缓存中获取结果。 1. check-files 在上面的配置中,check-files是关闭的,即当我们修改hosts文件时,不会触发缓存更新。

域名缓存到nscd后,尝试修改/etc/hosts,再次访问域名。发现/etc/hosts不会被访问。

这时我们启用配置文件的check-files选项,重启nscd服务,并清除hosts。缓存: 代码语言: shell copy $cat /etc/nscd.confdebug-level 4paranoia nologfile /var/log/nscd.logenable-cache 主机 yespositive-time-to-live 主机 negative-time-to-live 主机建议大小的主机check-fileshosts yespersistenthosts yessharedhosts yes$ systemctl restart nscd$ nscd -ihosts 再次尝试查看 /etc/hosts 是否会被访问:结果符合预期。

以qq.com为例,nscd进程会监控/etc/hosts。当修改被触发时,旧的缓存条目将被清除。

下次访问时会找到缓存的qq.com域名。然后先去/etc/hosts找到地址并添加到缓存中。

2、dig和nslookup这两个命令处理逻辑不会读取/etc/hosts,也不会去nscd缓存。相反,他们会直接将 dns 查询发送到 /etc/resolv.conf 中配置的 NS。

但实际访问域名时,会使用nscd缓存。缓存不会搜索/etc/hosts。

如果没有找到/etc/hosts,则会正常发起dns查询。使用getent命令来测试域名实际会首先解析到系统中的哪个地址: 代码语言:shell copy getent 那么,当你发现dig和nslookup解析没有问题,但是ping、curl等实际访问域名。

它是另一个IP,如果指定/etc/hosts则没有任何作用。这时就必须考虑nscd缓存和check-files的启用状态。

3、抓包验证:首先通过nscd -ihosts清除缓存条目,然后使用getent或者其他命令访问域名触发DNS解析获取A记录(如下图的三个IP) );此时修改/etc/hosts,由于nscd.conf的check-files开启,检测到/etc/hosts文件的变化后,清除qq.com的缓存条目;此时,我们使用 ping 命令再次触发解析,nscd 没有 qq.com 缓存(前面已经清除了 qq.com 的缓存条目),读取 /etc/hosts 文件,匹配... 1.内网地址,nscd将内网地址添加到缓存中;此时第二次执行getent,将nscd缓存匹配到qq.com..1.,就不会再发起A记录的dns查询请求了。从下图中可以看到整个过程。

6.总结 NSCD的主要功能是缓存名称服务查询的结果,可以加快名称服务查询的速度。查询结果不必每次都从网络或本地DB(/var/cache/nscd)获取,因此在一定程度上是可以利用的。

减少网络和本地数据库的负载。由于此功能,如果缓存的查询结果过时或不准确,则可能会导致应用程序出现错误或安全问题。

此外,如果 nscd 服务失败,可能会导致名称服务查询失败或变慢。同时,nscd可以缓存多种名称服务数据库,包括hosts、passwd、group、services、netgroup等。

对于每个数据库,nscd可以配置其缓存大小、生存时间等参数,以满足不同的需求。总之,nscd是一个优秀的名称服务缓存守护进程,可以提高系统的名称服务性能。

但在实际应用中,需要注意配置参数,避免出现缓存不一致等问题。

Linux 缓存服务 NSCD 使用总结与实践 - Name Service Cache Daemon

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 证监会:加强对拟上市公司投资的离职系统员工监管

    证监会:加强对拟上市公司投资的离职系统员工监管

    投资圈(ID:pedaily)4月20日消息:近日,有媒体报道中证建投系统离职员工证监会对拟上市公司的惊人投资,引起各方关注。 证监会对此高度重视,坚持防范违法违规“创富”,维护市场“三公”秩序,加强监管队伍廉洁建设。 坚持问题导向、举一反三,对在审企业进行全面排查,对

    06-17

  • 今晚,4500万人与周杰伦“时光倒流”

    今晚,4500万人与周杰伦“时光倒流”

    ,应该是一场激情的爱情约会。 但当晚19点35分,还没等两人晒出甜蜜合照,他们的朋友圈就被一个许久没有出专辑的男人入侵了。 你谈你的爱情,我看我的青春。 天晴在等待烟雨,粉丝在等待“地表最强妖天伦”。 数千人在视频号直播间回忆青春。 当34岁的周杰伦带着八块锋利的巧

    06-21

  • 为打造平价时尚服装市场,919氢仓获得青松基金等两轮合计数千万元融资,

    为打造平价时尚服装市场,919氢仓获得青松基金等两轮合计数千万元融资,

    据投资界(ID:pedaily)6月4日消息,平价时尚服装市场品牌“氢仓”宣布,先后获得青松基金天使轮和个人投资者战略轮共计数十轮投资。 融资数百万元。 据其创始人&CEO席一舟介绍,本轮融资将主要用于供应链建设、门店扩张和团队建设。 “公司将重点打造江苏、安徽、四川等地

    06-18

  • 鹤壁市长郭浩:中国5G产业创新创业大赛推动高质量发展

    鹤壁市长郭浩:中国5G产业创新创业大赛推动高质量发展

    4月2日下午,“中国5G产业创新创业大赛”作为5G产业前沿创新的重要舞台,已日益突出和影响。 吸引力持续增强,为推动高质量发展提供更多活力。 ”鹤壁市市长郭浩在中国5G产业创新创业大赛全国总决赛颁奖典礼暨鹤壁市旗滨区重点产业座谈会上表示。 “最近几年。 鹤壁积极适应新

    06-17

  • 北京理工大学与珠海学院联合成立集成电路技术现代产业学院

    北京理工大学与珠海学院联合成立集成电路技术现代产业学院

    7月4日,集成电路技术现代产业学院成立暨揭牌仪式在珠海高新区举行。 这所产业学院由北京理工大学珠海学院(信息学院)、广东中兴电子股份有限公司、珠海英思科技有限公司联合创办。 图片珠海高新区 珠海高新专区新闻显示,北理工珠海学院院长赵显礼表示,集成电路发展关系产

    06-06

  • 2024年北京车展,看这26款新车就够了

    2024年北京车展,看这26款新车就够了

    时隔4年,2024年北京车展终于又来了。 4年的时间并不算长,但对于汽车行业来说已经是一个巨大的变化。 如果说去年的上海车展让世界看到了中国新能源汽车的快速发展,那么今年的北京车展则证明了一件事情:世界新能源汽车潮流就在这次北京车展。 可以说,这种四年积累的潜力,

    06-21

  • 视联科技获凤凰卫视战略投资

    视联科技获凤凰卫视战略投资

    》据4月26日消息,视联科技近日完成新一轮战略融资。 本轮投资由凤凰卫视集团旗下凤凰创新产业基金投资,此次获得的融资将主要用于人工智能产品的落地,加快业务拓展和服务体系升级。

    06-18

  • 阿里云智能总裁张建锋:创新是丽水绿色发展之路

    阿里云智能总裁张建锋:创新是丽水绿色发展之路

    “创新是我们的第一动力,也是丽水绿色发展的路径。 ” 6月9日,阿里云智能总裁、阿里巴巴达摩院特朗张建锋在国家数字生态系统创新发展峰会上致辞时表示。 阿里云智库总裁、阿里巴巴达摩院院长张建锋总结称,自2016年丽水市政府与阿里巴巴集团签署战略协议以来,在双方共同努

    06-17

  • 小度迎新期待:百度集团CIO李莹轮流担任CEO

    小度迎新期待:百度集团CIO李莹轮流担任CEO

    10月7日最新消息,百度小度公司迎来新任CEO,百度集团副总裁、百度集团CIO李莹博士,直接向李彦宏汇报工作。 业内人士分析,这轮新一轮干部轮换对小度来说意义重大。 李莹在担任百度集团CIO期间,打造了以人工智能和知识管理为核心的智能工作平台,为百度AI基础技术和产品应

    06-17

  • 诺和诺德斥资7亿美元使用蛋白质组学药物

    诺和诺德斥资7亿美元使用蛋白质组学药物

    年底,Ventus Therapeutics宣布与诺和诺德达成全球*许可协议。 根据该协议,诺和诺德将获得Ventus专有的NOD样受体pyrin结构域相关蛋白3(NLRP3)外周抑制剂的开发和商业化权利。 诺和诺德将向Ventus预付 10,000 美元,并提供研发 (R&D) 资金。 Ventus还可能收到总计 6.33 亿美

    06-17

  • 中国南车香港上市获批, A+H股IPO拟募资20亿美元

    中国南车香港上市获批, A+H股IPO拟募资20亿美元

    据悉,中国最大的铁路机车装备制造商中国南车车辆股份有限公司首次公开发行股票(IPO)计划已经香港联交所批准。 获批后,连同在上海IPO,拟募集资金规模将达20亿美元,约1亿港元。   新闻 人士表示,总部位于北京的中国南车股份有限公司计划在香港IPO发行最多20亿股,并将于

    06-18

  • 以旧换新平台有德汇获人保远望基金近亿元B+轮融资

    以旧换新平台有德汇获人保远望基金近亿元B+轮融资

    据投资界12月29日消息,全品类以旧换新平台有德汇今日宣布完成近百笔融资获得人保财险、人保财险的B+轮融资。 人保远望基金是与启迪科技合作设立的。 据悉,本轮资金将用于拓展线下市场、升级后端渠道。   优德火此前已获得多轮融资:  获得龙腾资本天使轮投资;   再

    06-18