美文网首页
JVM DNS 缓存配置

JVM DNS 缓存配置

作者: leeehao | 来源:发表于2018-11-06 12:42 被阅读0次

    https://www.verisign.com/assets/stellent/030957.pdf

    在主机名解析为 IP 地址后,资源 IP 地址将保存在 JVM 的高速缓存中。如果改变了资源的 IP 地址,则需要重新启动应用服务器,使 Identity Manager 能够检测所做更改 (ID-3635)。这是 Sun JDK(1.3 及更高版本)中的设置,可以使用 sun.net.inetaddr.ttl 属性(通常在 jre/lib/security/java.security 中设置)控制

    //设置解析成功的域名记录JVM中缓存的有效时间,JVM默认是永远有效,这样一来域名IP重定向必须重启JVM,这里修改为5秒钟有效,0表示禁止缓存,-1表示永远有效
    java.security.Security.setProperty("networkaddress.cache.ttl", "5");

    //设置解析失败的域名记录JVM中缓存的有效时间,JVM默认是10秒,0表示禁止缓存,-1表示永远有效

    java.security.Security.setProperty("networkaddress.cache.negative.ttl","2");

    还有两种方式设置dns缓存
    1.在JAVA_OPTS里设置
    -Dsun.net.inetaddr.ttl=3 -Dsun.net.inetaddr.negative.ttl=1
    2.修改property
    System.setProperty("sun.net.inetaddr.ttl", "3");
    System.setProperty("sun.net.inetaddr.negative.ttl", "1");

    一般情况下我们不需要完全取消JVM的DNS缓存,只需要调小有效时间,经过一些测试发现一下结论:
    1)1个域名对应一个IP和一个域名对应12个IP,DNS查询响应时间差别极少,后者占用cpu稍高一点点;
    2)在高并发时,不做DNS缓存时的CPU耗用比做了3s缓存的CPU耗用要高3/4倍,实时DNS请求相当耗用CPU;
    3)3s和30s缓存有效时间对dns查询响应时间的影响差别不大,cpu内存占用都比较接近;
    4)建议使用3秒缓存,兼顾运维和性能;

    https://www.cnblogs.com/langke93/archive/2012/11/29/2794439.html

    相关文章

      网友评论

          本文标题:JVM DNS 缓存配置

          本文链接:https://www.haomeiwen.com/subject/uhxuxqtx.html