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基础结构,并与测试协调以在不同值之间循环。

09-10 06:33
查看更多