【发布时间】:2012-09-03 01:41:55
【问题描述】:
我有一个奇怪的问题,希望你能帮我解决。
在我们的开发服务器上,我们在具有 8GB RAM 的虚拟 x64 实例上运行带有 IIS 7.5 的 Windows 2008R2。
这里我调用了一个 WCF 方法,它使用 ThreadPool.QueueUserWorkItem 来处理大量的分层数据。这工作得很好,而且工作得相当快(读取 270 MB XML 并在 379 秒内生成 190.035 条记录)。客户端在大约 250 秒内完成调用该方法。
现在,Windows Azure 上的相同“工作流程”完全是另一种情况。尽管类似(循环配置中的大型实例),Windows Azure 会在几秒钟内停止客户端断开连接。这意味着只写入了 160.055 条记录,而且速度要慢得多 - 917 秒。这里的问题是,我错过了大约 30.000 条记录,应该现在在两个 Azure 实例上排队,但似乎 - 在客户端断开连接时 - 放弃剩余的工作。
客户端使用 HttpWebRequest 进行通信,两种解决方案都运行 .NET 4.0。
我在这里错过了什么?
在此先感谢您提供有关此问题的任何帮助。
【问题讨论】:
-
看来我可能已经回答了我自己的问题。因为 Azure 平台太慢(延迟和 SQL Azure),我需要将 HttpWebRequest 的 Timeout 从两分钟提高到三十分钟。我将尝试再次启用 ThreadPool,看看我是否自己解决了:-) 干杯..
标签: performance iis azure threadpool