服务器我使用如下主机连接到服务器从客户端的IP地址: -的Java:落后DNS负载均衡
HttpPost post = new HttpPost(serverUrl);
post.setEntity(new StringEntity(jsonRequestString, ContentType.APPLICATION_JSON));
HttpResponse response = httpClient.execute(post);
int ret = response.getStatusLine().getStatusCode();
我使用org.apache.http.*
包。现在,服务器位于DNS负载均衡器后面,并具有绑定到主机名的8个唯一IP地址。但是我相信JVM的一次运行中的所有请求都会转到相同的IP地址。
- 有没有办法打印DNS解析后返回的实际IP?
- JVM是否执行本地DNS缓存?
编辑:
设置networkaddress.cache.ttl
和networkaddress.cache.negative.ttl
为0时不能正常工作。要么我没有设置它们是正确的。
public static void main(String[] args) throws Exception {
java.security.Security.setProperty("networkaddress.cache.ttl", "0"); // no
// cache
java.security.Security.setProperty("networkaddress.cache.negative.ttl", "0"); // no
while (true) {
System.out.println(InetAddress.getByName("google.com"));
Thread.sleep(100);
}
}
输出:
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
google.com/216.58.197.78
........
........
您的操作系统也可能会缓存这是出了JVM的控制。 –
已经检查过,每秒都会ping。它每次ping到不同的ips –
@MangatRaiModi:每次往返时,ICMP ping都没有将主机名解析为IP。所以我想,而不是RR的DNS负载均衡,你有其他东西(例如网络负载均衡器使用LLCP或绑定...) – rkosegi