• jvm dns缓存问题解决方式


    在主机名解析为 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秒缓存,兼顾运维和性能;
     
    参考文档:http://www.verisigninc.com/assets/stellent/030957.pdf
  • 相关阅读:
    ctags的基本操作总结
    iOS开发使用Unwind Segue进行返回
    Swoole源代码学习记录(十二)——ReactorThread模块
    HDU 2189 ( 悼念512汶川大地震遇难同胞——来生一起走 )
    WEB开发面试题
    UVA 11762
    shell EOF注意点
    Oracle EBS 从Web界面进入责任时,提示不存在可用的有效责任
    LeetCode--Reverse Integer
    atitit.web 推送实现方案集合
  • 原文地址:https://www.cnblogs.com/langke93/p/2794439.html
Copyright © 2020-2023  润新知