JVM如何设置DNS缓存失效时间

来源:互联网 发布:tensorflow应用领域 编辑:程序博客网 时间:2024/06/06 01:22

JVM为了提高效率,会将第一次的DNS结果缓存起来。而且你不重新启动JVM缓存永远不失效。


所以你的服务器一旦有了DNS更新的话,你只能重新启动服务来重新更新缓存。那么有没有什么办法可以设置一个缓存失效时间呢?JVM提供了两个启动参数:

设置解析成功的域名记录JVM中缓存的有效时间,这里修改为1秒钟有效,0表示禁止缓存,-1表示永远有效

-Dsun.net.inetaddr.ttl=1 

设置解析失败的域名记录JVM中缓存的有效时间,这里修改为1秒钟有效,0表示禁止缓存,-1表示永远有效

-Dsun.net.inetaddr.negative.ttl=1


这里边有两个极端:

第一个极端就是永久不失效,那么带来的结果是对DNS更新的响应时间为无穷大,但是因为没有额外的DNS查询开销,可以使系统的吞吐量达到最大。

第二个极端就是永远失效,意味着每次都需要进行DNS查询,这样带来的结果是对DNS更新的响应时间缩短为无穷小,意味着只要DNS服务器有更新,自己的服务器也会立马感知此次更新,但是因为每次操作都需要DNS额外的查询开销,将使系统做有用功的比例减少,吞吐量将受到一定的影响。

所以就需要平衡对DNS更新的响应时间和系统的吞吐量。一般业界用秒级别作为失效时间(比如一秒或三秒)。这样在保证吞吐量的同时,也保证了对DNS更新的敏感性。


原文:http://blog.csdn.net/hongchangfirst/article/details/77448253

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst




原创粉丝点击