3

当我使用命令“kill -s SIGUSR1 cat /var/run/dnsmasq.pid”时,日志中的输出如下:

Dec  2 14:23:48 dnsmasq[22548]: cache size 10000, 22230/42649 cache insertions re-used unexpired cache entries.
Dec  2 14:23:48 dnsmasq[22548]: queries forwarded 97058, queries answered locally 544818

我很困惑,缓存大小是10000,但是“已插入缓存的名称总数”是42649,为什么这两个数字不一样?如果我的内存足够大,如何使缓存大小大于 10000?

4

1 回答 1

2

克隆 repo 后

git clone git://thekelleys.org.uk/dnsmasq.git

并查看生成日志消息的源文件dnsmasq/src/cache.c, 10000 是整数结构元素daemon->cachesize。这个值已经在评论中解释过,它是允许的 DNS 缓存条目的最大数量,而不是特定的内存度量。

值 22230 是变量cache_live_freed, 42649 是变量cache_inserted,两者都从零开始,并且在缓存重新加载时都重置为零。

变量cache_inserted在任何成功提交缓存条目时递增,无论插入是新的还是替换过期的内容。还有一个不成功或不完整的提交这样的事情,它不会被这个变量计算在内。

变量cache_live_freed具有相当复杂的含义,但基本上可以归结为替换过期的缓存条目。

于 2017-11-19T22:18:06.013 回答