tencent cloud

私有域解析 Private DNS

产品动态
产品简介
产品介绍
产品优势
使用限制
应用场景
购买指南
计费概述
增值服务优惠包说明
非标 TLD 说明
快速入门
开通 Private DNS
创建私有域
删除私有域
修改关联 VPC
操作指南
解析记录设置
修改解析记录
删除解析记录
导入解析记录
导出解析记录
跨账号关联 VPC
批量操作
反向解析及 PTR 记录说明
子域名递归解析说明
解析量统计说明
负载均衡说明
递归解析说明
访问管理
访问管理概述
可授权资源类型
访问管理策略示例
实践教程
配置 NSCD 服务实现缓存加速,提高 DNS 可用性
API 文档
History
Introduction
API Category
Making API Requests
Private DNS APIs
Data Types
Error Codes
常见问题
Private DNS 相关问题
Private DNS 是否会覆盖公共域名
PDNS 政策
隐私协议
数据处理和安全协议
相关协议
Private DNS Service Level Agreement
词汇表
文档私有域解析 Private DNS实践教程配置 NSCD 服务实现缓存加速,提高 DNS 可用性

配置 NSCD 服务实现缓存加速,提高 DNS 可用性

PDF
聚焦模式
字号
最后更新时间: 2025-12-10 11:46:28
VPC 内每台 CVM 机器每秒最高 DNS 峰值5000次,单机每秒请求 DNS 峰值超过阈值后,将面临限速风险,可用性 SLA 将无法保证。为了缓解此类情况,建议您从如下两个方面考虑:
扩容 CVM 数量,使得 DNS 查询请求能负载分摊到更多 CVM,从而降低每个 CVM 的 DNS 查询请求量;
CVM 主机开启 NSCD(Name Service Cache Daemon)服务进行缓存加速;
说明:
NSCD 服务开启情况下,会导致变更解析记录的生效时间更长。
本文主要介绍通过开启 NSCD 服务进行缓存加速,降低 CVM 的 DNS 查询请求数。

什么是 NSCD?

NSCD(Name Service Cache Daemon)是一个系统缓存服务,用户缓存名称服务信息,例如 passwd、group、hosts、services 以及 netgroup 等,它可以提高系统查询缓存命中率,从而减少对名称服务的查询次数和流量消耗,进而加快服务响应速度。
NSCD 常用 Linux 指令
指令
说明
yum install -y nscd
安装 nscd。
systemctl start nscd
启动 nscd。
systemctl stop nscd
停止 nscd。
systemctl restart nscd
重新启动 nscd。
systemctl status nscd
查询 nscd 的运营状态。
nscd -g
输出生效后的各个参数选项配置情况和缓存命中率统计。
nscd -i
使指定的缓存失效,可以指定 passwd、group、hosts、services、netgroup 等,例如:nscd -i hosts。
cat /etc/nscd.conf
查询当前 nscd 配置详情。
vi /etc/nscd.conf
修改 nscd 配置参数。

安装 NSCD

1. nscd 一般在 Linux 操作系统中默认安装的,如果不确定当前 CVM 是否已经安装了 nscd,可以执行以下命令进行检测:
systemctl status nscd #检查nscd的运行状态。
2. 如果检测结果如下,则说明没有安装 nscd。



3. 执行以下命令进行安装:
yum install -y nscd
4. 再执行命令查看 nscd 的运行状态,此时 nscd 已经安装但是处于未启动状态。




开启 NSCD 服务

1. 执行以下指令开启 nscd 服务:
systemctl start nscd
2. 再执行命令查看nscd的运行状态,nscd 已经处于运行状态。



说明:
CentOS/RedHat 操作系统安装 nscd 指令:yum install -y nscd。
Debian/Ubuntu 操作系统安装 nscd 指令:apt-get install -y nscd。
3. nscd 的默认配置文件路径在/etc/nscd.conf,可以通过执行如下指令查看 nscd 配置:
cat /etc/nscd.conf
关键配置参数说明
配置参数
说明
debug-level
-
reload-count
跟缓存主动刷新有关,此配置参数决定了请求成功缓存主动去查询并更新缓存的次数。
paranoia
偏执模式,如果开启则 nscd 会周期性的重启。
restart-interval
如果 paranoia 开启,此参数表示重启间隔时间。
enable-cache
开启缓存服务。
positive-time-to-live
请求成功响应缓存的生存时间。
negative-time-to-live
请求失败响应缓存的生存时间,建议设置为0,以免失败的缓存影响业务请求。
check-files
定期检查/etc/passwd、/etc/group、/etc/hosts等缓存文件的修改时间,如果文件从上次检查之后做过更改,则缓存失效。
persistent
开启时,nscd 在重启之后会保留之前的缓存内容,如果 paranoia 开启,建议开启此功能。
shared
用于服务 nscd 数据库的内存映射与客户端共享,默认为 yes,如果想利用 nscd -g 指令查询缓存命中率,则 shared 需要设置为 no。
max-db-size
nscd 缓存数据库的最大大小,单位为 Byte。
注意:
positive-time-to-live 无实际意义,TTL 值以 DNS 查询请求返回的 TTL 为准。
shared 参数值设置为 no 时,才能通过执行 nscd -g 查询缓存命中率。

NSCD 缓存效果检测

NSCD 关闭时拨测
1. 在 CVM 上执行如下命令对53端口 UDP 报文进行抓包:
tcpdump -i any udp and port 53
2. 然后在 nscd 的状态为关闭情况下,在 CVM 上执行多次如下指令,连续拨测三次。
ping -c 1 -n www.qq.com #对域名 www.qq.com 发一次 ping 指令
3. 查看相对应的抓包情况,能够发现53端口3次 DNS 请求查询,并且每次 DNS 请求查询都返回域名解析记录,证明 DNS 请求查询记录并未被缓存,CVM 每次都要通过53端口发送 DNS 请求查询。
NSCD 开启时拨测
1. 执行启动指令将 NSCD 服务开启,并通过状态查询指令确定 NSCD 为开启状态。
2. 在 NSCD 的状态为开启情况下,在 CVM 上执行如下指令,连续拨测6次。同时需要对 CVM 的53端口进行抓包。
ping -c 1 -n www.qq.com
3. 查看相对应的抓包情况,能够发现53端口只抓到1次 DNS 请求查询,证明 DNS 请求查询命中 NSCD 缓存,没有通过53端口发送 DNS 请求查询。
注意:
您在抓包的过程中会发现即使 ping 指令已经执行完毕,但是每隔一段时间 tcpdump 依旧可以查到相关域名 DNS 查询请求报文,这是由于 nscd 的主动刷新机制导致的,属于正常现象。可以通过将 reload-count 参数设置为0关闭主动刷新机制。
您也可以通过执行以下指令来查询缓存命中信息,在一段时间内多次执行 ping 指令后然后查看缓存命中情况。
nscd -g #输出生效后的各个参数选项配置情况和缓存命中率统计等。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈