服務器我使用如下主機連接到服務器從客戶端的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