1

在 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

4

2 回答 2

1

我认为您的问题是您的负载均衡器正试图将所有流量从同一主机发送到同一服务器……这是“设计使然”……(又名:“粘性会话”)

您需要明确告诉您的负载均衡器您要禁用粘性会话并启用“循环”...(具体术语将根据您的负载均衡器技术而有所不同)

于 2012-05-30T15:47:15.590 回答
0

基于this other question,我认为您需要

ServicePointManager.DnsRefreshTimeout = 0;

request.KeepAlive = false;

您可以ServicePointManager通过 web.config 进行设置。请参阅MSDN 文档

此外,还有另一个类似的设置enableDnsRoundRobin看起来也可能对您有所帮助。

于 2013-06-30T07:53:27.653 回答