在Windows Server 2008环境中运行测试应用程序时,我遇到了DNS缓存问题。测试应用程序模拟数百个用户与Web服务的连接。 Web服务托管在Amazons Web Services后面,实际上是一个负载平衡器,后面有许多Amazon EC2实例。负载均衡器和EC2实例在正常操作下正常工作,因为普通客户端连接均匀分布。但是,当我运行测试应用程序时,所有连接都会命中一个EC2实例。我相信这可能是由托管测试应用程序缓存DNS查找的Windows环境决定的。
如何禁用DNS缓存?我认为通过停止DNS客户端服务(如此处提到的http://www.tipsandtutorials.net/how-to-turn-off-dns-caching-under-microsoft-windows.html)会很容易,但这并没有改变任何东西。是否还有其他必须要做的事情来禁用缓存?
我还能看到其他可能导致这些问题的其他内容吗?
编辑:WCF服务中是否可能存在其他级别的DNS缓存?
TIA
答案 0 :(得分:1)
我认为您的问题是您的负载均衡器正在尝试将来自同一主机的所有流量发送到同一服务器......这是“按设计”......(又名:“粘性会话”)
您需要明确告诉您的负载均衡器您要禁用粘性会话并启用“循环”...(具体术语将根据您的负载均衡器技术而有所不同)
答案 1 :(得分:0)
基于this other question,我认为您需要
ServicePointManager.DnsRefreshTimeout = 0;
和
request.KeepAlive = false;
您可以通过web.config设置ServicePointManager
设置。请参阅the MSDN documentation。
此外,还有另一个类似的设置enableDnsRoundRobin
,看起来它也可能对你有帮助。