首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高nscd的缓存命中率?

如何提高nscd的缓存命中率?
EN

Unix & Linux用户
提问于 2013-10-24 16:20:52
回答 4查看 12.4K关注 0票数 4

我的目标是:让nscd在多余的内存中维护一个相当大的DNS缓存,因为我可以使用它。

描述:

我有一个user服务器,它具有广泛分散但重复次数高的用户群。它有足够的内存,所以我想通过缓存查找来提高响应时间,但根据nscd -g,我的缓存命中率只有6% (这意味着nscd很可能会为缓存引入更多的延迟保存,或者查看缓存中永远找不到的条目,而不是通过网络阻止):

代码语言:javascript
复制
hosts cache:

            yes  cache is enabled
            yes  cache is persistent
            yes  cache is shared
            211  suggested size
         216064  total data pool size
           2328  used data pool size
          36000  seconds time to live for positive entries
             20  seconds time to live for negative entries
           4455  cache hits on positive entries
              0  cache hits on negative entries
          17357  cache misses on positive entries
          42348  cache misses on negative entries
              6% cache hit rate
             17  current number of cached values
             40  maximum number of cached values
              3  maximum chain length searched
              0  number of delays on rdlock
              0  number of delays on wrlock
              0  memory allocations failed
            yes  check /etc/hosts for changes

6%命中率的一个很大的贡献者可能是这样一个事实,那就是它只缓存了17个条目。执行strings /var/db/nscd/hosts显示,它创建的主机缓存项主要用于我们内部网络上的计算机。有这些缓存是很好的,因为每天重新发布的网站可能会加快,但我的目标是加快最终用户体验,而不作出任何真正的配置改变。

这是nscd.conf的相关部分:

代码语言:javascript
复制
    threads                 10
    server-user             nscd
    debug-level             0
    paranoia                no
    [.....snip......]
    enable-cache            hosts           yes
    positive-time-to-live   hosts           36000
    negative-time-to-live   hosts           20
    suggested-size          hosts           10657
    check-files             hosts           yes
    persistent              hosts           yes
    shared                  hosts           yes
    max-db-size             hosts           33554432

基本上,尽管我已经将主机缓存上的正TTL设置为高得令人难以置信,但我还是需要了解我的主机缓存是如何如此小的。我确信,是少量的实际缓存条目导致了命中率如此之低。

我假设是因为命中率是6%,但我的正TTL相当大,这意味着我当前的工作负载正在执行DNS主机查找,但它们只是没有保存。我不知道为什么这些没有被保存,也不知道下一步要检查什么。我原以为现在会有一个相当大的DNS缓存。

即使命中率保持较低(即:客户端没有像我想象的那样经常重复),我仍然希望那些DNS查找会被缓存,但是查看“缓存值的当前数量”,这似乎也没有发生。

EN

回答 4

Unix & Linux用户

回答已采纳

发布于 2013-12-08 01:38:27

您的even服务器的哪个部分甚至正在进行DNS查找?大多数for服务器配置显式地禁用每个传入用户的反向DNS查找,以提高速度(因为DNS在一般情况下是缓慢的)。

正如Patrick指出的,nscd正在做正确的事情,尊重积极的TTL价值观。是的,您可以重写它(unbound可以让您轻松地做到这一点,只需修改server.cache-min-ttl,并警告您出于同样的原因将其增加到1小时以上)。但是,您的查询可能主要是rDNS,这通常会有较长的TTL。

此外,由于您的maximum number of cached values是如此之低,我想指出,您几乎没有任何流量。

如果您确实关心用户经常重复的地方,我建议您在nscd之外登录,而不再担心它。

编辑(2013/12/09):nscd -g托管来自dev.gentoo.org的统计数据(评论中没有块):

代码语言:javascript
复制
nscd configuration:
 4h  8m 43s  server runtime
hosts cache:
        yes  cache is enabled
         no  cache is persistent
         no  cache is shared
        422  suggested size
    1108744  total data pool size
     966632  used data pool size
        600  seconds time to live for positive entries
         20  seconds time to live for negative entries
      67878  cache hits on positive entries
       2479  cache hits on negative entries
       9464  cache misses on positive entries
       4276  cache misses on negative entries
         83% cache hit rate
       6951  current number of cached values
       7641  maximum number of cached values
         33  maximum chain length searched
          1  number of delays on rdlock
          0  number of delays on wrlock
          0  memory allocations failed
        yes  check /etc/hosts for changes
票数 3
EN

Unix & Linux用户

发布于 2014-01-04 22:35:27

这个参数:

是的缓存是共享的

允许应用程序在nscd的缓存中访问,并且不会记录此类活动。这是预期的、最有效的行为。

将其设置为“否”,您将看到您的命中率大幅上升,但速度要慢一些。

请参阅:http://alpacapowered.wordpress.com/2013/03/08/nscd-dns-caching-and-postfix/comment-page-1/#comment-1374

票数 3
EN

Unix & Linux用户

发布于 2013-12-10 14:35:21

这可能有点离题,但与使用nscd不同,您可以切换到sssd (我认为它是后续的)。

我正在SUSE LinuxEnterpriseServer11.3(完全支持)上使用它,我很高兴我做了这个切换。与nscd相比,它有更多更细粒度的配置选项,而且还有远远超出nscd所能实现的功能。

至少我想值得一看:https://fedorahosted.org/sssd/

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/97448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档