JVM(Java传输客户端)缓存DNS条目AWS的IP地址



NoNodeAvailableException可能与ELB的IP地址频繁更改,但JVM(Java传输客户端)缓存ELB的DNS条目的IP地址有关。

问题是AWS上的ELB的IP可能会偶尔更改,而我们无法控制。当它更改时,我们的系统失败,并显示一个错误,称没有找到节点,原因是IP是缓存的,并且仍在尝试使用相同的IP查找,这导致了问题。为此,我得到了一个解决方案,即设置"networkaddress.cache.ttl"="0",这将告诉JVM不要缓存IP。

我的问题是我如何模拟这种情况,因为更改IP不在我的控制范围内,有人能建议我从代码(不是修复部分,而是测试部分)

我建议使用0以外的值,否则每次连接时都会向网络中发送大量DNS请求,在某些情况下还会导致额外的延迟。使用介于560之间的数字是有意义的。

如果您正在验证修复程序,您可以使用wireshark等工具来监控网络,并验证与服务器的持续连接是否正在对名称进行DNS请求和响应。如果你想编写一个自动测试,那么你必须建立某种DNS基础设施,并与你的测试协调,在不同的值之间循环。

最新更新