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

站长声明

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

标签:

相关文章

  • 用GPT-4这样的大模型玩狼人杀,人类因为太蠢被投票判死,真正的逆向图灵测试

    用GPT-4这样的大模型玩狼人杀,人类因为太蠢被投票判死,真正的逆向图灵测试

    在这篇文章中,我们看到了人工智能如何与经典的社交推理游戏互动《狼人杀》结合创造了一个有趣的实验。 视频展示了亚里士多德、克利奥帕特拉等以历史人物为模型的人工智能 NPC 与人类玩家互动的场景。 人类玩家因答案不够复杂而被淘汰,颠覆了传统的图灵测试。 本文探讨了 AI

    06-17

  • 杭州出台25条措施加快生物医药产业高质量发展

    杭州出台25条措施加快生物医药产业高质量发展

    日前,杭州市人民政府办公厅发布《关于加快生物医药产业高质量发展若干措施的通知》。 该措施自2020年11月15日起实施,有效期至2020年12月31日。 该措施重点支持药品、高端医疗器械、先进制药装备、新型服务外包、数字医学、医学美容。 措施全文如下: 关于加快生物医药产业高

    06-18

  • 14nm写入上海市政府工作报告:今年实现量产

    14nm写入上海市政府工作报告:今年实现量产

    1月27日,上海市第十五届人民代表大会第二次会议正式开幕。 上海市市长应勇作政府工作报告。 报告中回顾了2017年上海发展现状,部署了全年重点工作和任务。 上海作为国家集成电路产业的重要集聚区,在年度政府工作报告中多处提及集成电路。 应勇在回顾一年来的工作时表示,“

    06-06

  • 海外呼叫中心服务:连接全球市场的桥梁

    海外呼叫中心服务:连接全球市场的桥梁

    .wp-block-column h3{margin-left:0} 1.引言 在全球化背景下,越来越多的企业开始寻求拓展海外市场。 随着国际贸易的日益频繁和跨境电商的兴起,海外呼叫中心服务作为连接企业与海外客户的重要桥梁,正逐渐受到越来越多企业的关注。 本文将对海外呼叫中心服务的定义、重要性、

    06-17

  • 库克谈苹果可持续发展计划:我们必须做得好,别人才想效仿 - Feel Good Weekly

    库克谈苹果可持续发展计划:我们必须做得好,别人才想效仿 - Feel Good Weekly

    Feel Good简介 苹果:我们的可持续发展计划必须好到让人想“复制” MINI推出首款电动自行车 lululemon:更多中国消费者正在积极探索“Good Condition”最新快闪店“雀巢咖啡,使用后可以回收。 无畏:为旅程提供气候标签的第一步苹果:我们必须可持续“复制”最“绿色”的秋季

    06-21

  • 猫生活领先品牌Pidan完成B+轮融资,兴旺投资独家领投,

    猫生活领先品牌Pidan完成B+轮融资,兴旺投资独家领投,

    据7月5日消息,近日,猫生活领先品牌Pidan完成B+轮融资,兴旺投资独家领投。 Pidan品牌起源于法国巴黎。 以其高品质、高设计的宠物产品多次荣获德国红点奖。 Pidan独创混合猫砂品类,在天猫猫砂品类中排名第一。 Pidan瞄准“猫市场”,将自己定位为全品类宠物生活方式品牌。

    06-17

  • Village Fund将于今晚在纽约证券交易所上市,沈南鹏称值得长期投资

    Village Fund将于今晚在纽约证券交易所上市,沈南鹏称值得长期投资

    中式快餐连锁乡村基金今晚将在纽交所上市,成为首家中式餐饮企业。 红杉资本中国基金创始人兼高管合伙人沈南鹏在接受新浪财经独家采访时表示,他被乡村基金的“深刻印象”所吸引。 它的快速增长才刚刚开始,值得他长期投资。   Village Base是一家以美味川菜为主,与当地风

    06-18

  • 二氧化硅龙头确辰硅化主板挂牌,盈科资本IPO再获丰收

    二氧化硅龙头确辰硅化主板挂牌,盈科资本IPO再获丰收

    12月7日,确辰硅化(83.SH)在上交所正式挂牌上市。 截至目前,盈科资本年度IPO项目总数已达14个,其中科创板6个、创业板4个、主板3个、港交所1个。 同期IPO数量继续保持行业领先地位。 作为全球前三、亚洲第一的二氧化硅行业领军企业,确成硅化现已形成从原料硫酸、水玻璃到

    06-18

  • 南芯半导体完成数千万元A轮融资,顺为资本领投

    南芯半导体完成数千万元A轮融资,顺为资本领投

    据投资界1月23日消息,高性能模拟芯片半导体公司南芯半导体完成数千万元A轮融资处于A轮融资中。 本轮融资由顺为资本领投,兴业资本海逸、紫米科技跟投。 南芯也是顺为资本投资的第一家芯片设计公司。   南芯半导体成立于2001年,主要从事集成电路芯片的研究、设计、开发和销

    06-18

  • 春华资本宣布收购美赞臣大中华区业务

    春华资本宣布收购美赞臣大中华区业务

    春华资本宣布与利洁时签署最终协议,收购利洁时美赞臣大中华区业务,并将拥有美赞臣品牌在大中华区市场的永久权益此次独家使用权将从业务创新、运营完善、渠道优化、数字化转型等方面支持美赞臣未来在中国的发展。

    06-17

  • 英伟达需要警惕的对手来了

    英伟达需要警惕的对手来了

    市值超1.7万亿美元的AI军火商英伟达开始感受到“危机”,需要警惕各类“对手” 。 日前,有消息称孙正义计划筹集1亿美元创建一家AI芯片公司,旨在挑战英伟达。 近日,AI芯片初创公司Groq也透露出颠覆英伟达的意图。 NVIDIA在AI芯片市场上无可匹敌。 本财年,NVIDIA的销售额连

    06-18

  • 春节“医美”热潮,爱美客和昊海生科谁更赚钱?

    春节“医美”热潮,爱美客和昊海生科谁更赚钱?

    在外表经济的轨道上,医美项目逐渐成为消费主流。 随着春节假期的到来,医美的消费将迎来又一个高峰期。 “医美三剑客”中,爱美客(96.SZ)和昊海生科(66.SH)近日公布了2020年业绩报告:2020年,爱美客预计实现净利润18.10亿元至1.900元亿元,同比增长43%-50%;昊海生科预

    06-17