如何衡量DNS缓存效率/缓存项目?


16

我已经dnsmasq在Debian服务器上配置为仅缓存DNS服务器,并且运行良好(我发现通过dig可以改善DNS响应时间)。

但是,我想随时了解什么dnsmasq是缓存,以便可以开始考虑所达到的效率(即命中率)。

我浏览了手册页和Web,却找不到我dnsmasq在任何时候都在缓存的内容(例如,您可以为dnsmasq.lease文件保存租约)。

dnsmasq只在内存中保存DNS缓存?还是我必须做一些日志文件修改?

Answers:


22

我没有访问权限,dnsmasq但根据这个标题为dnsmasq的线程,它是否在缓存?您可以将信号USR1发送到该dnsmasq进程,使它将统计信息转储到系统日志中。

$ sudo pkill -USR1 dnsmasq

然后查阅系统日志:

$ sudo tail /var/log/syslog
Jan 21 13:37:57 dnsmasq[29469]: time 1232566677
Jan 21 13:37:57 dnsmasq[29469]: cache size 150, 0/475 cache insertions re-used unexpired cache entries.
Jan 21 13:37:57 dnsmasq[29469]: queries forwarded 392, queries answered locally 16
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.222.222#53: queries sent 206, retried or failed 12
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.220.220#53: queries sent 210, retried or failed 6

注意:我相信,它将dnsmasq保留其缓存在RAM中。

因此,如果要转储缓存,则需要-qdnsmasq调用时启用该开关。dnsmasq手册页中提到了这一点:

   -d, --no-daemon
        Debug mode: don't fork to the background, don't write a pid file, 
        don't change user id, generate a complete cache dump  on
        receipt on SIGUSR1, log to stderr as well as syslog, don't fork new 
        processes to handle TCP queries. Note that this option is for use in 
        debugging only, to stop dnsmasq daemonising in production, use -k.

   -q, --log-queries
        Log the results of DNS queries handled by dnsmasq. Enable a full 
        cache dump on receipt of SIGUSR1.

1
谢谢,这似乎可行,并产生类似于以下内容的输出:10月20日08:39:17 dnsmasq [4846]:时间1413790757 10月20日08:39:17 dnsmasq [4846]:缓存大小4096,0 / 59976缓存插入重新使用了未过期的缓存条目。10月20日08:39:17 dnsmasq [4846]:转发了13376个查询,在本地回答了1326个查询,所以我猜总缓存条目命中率为:1326/14702,大约为9%。我让它运行的时间越长,我访问的相同站点的站点越多,我猜这可能会逐渐增加。
2014年

在基于OpenWRT的路由器上使用logread | tail
2015年

1
@binaryfrost每个缓存的dns地址的内存使用情况有想法吗?可以说,如果我有500,000个缓存大小,将完整记录预计将使用多少内存?
satch_boogie

使用systemd的系统没有/ var / log / syslog,并且在journalctl输出中发出SIGUSR1后,我找不到dnsmasq的任何条目。有没有一种方法可以明确指定dnsmasq应该在哪里转储记录?
Sergiy Kolodyazhnyy

2

从手册页获取此信息的另一种方法:

DNS中也可以使用缓存统计信息作为对CHAOS类和域绑定中的TXT类型查询的答案。域名为cachesize.bind,insertions.bind,evictions.bind,misses.bind,hits.bind,auth.bind和servers.bind。使用dig实用程序进行查询的示例命令为

   dig +short chaos txt cachesize.bind
   dig +short chaos txt hits.bind
   dig +short chaos txt misses.bind

如果您的系统上有类似systemd-resolve的内容,则需要使用以下命令直接查询服务器:

   dig +short chaos txt hits.bind @serverIP
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.