dnsmasq统计信息与dnsmasq.conf中的缓存大小不匹配



当我使用命令"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?

克隆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的含义相当复杂,但基本上是替换过期的缓存项。

最新更新