【发布时间】:2011-04-29 07:50:08
【问题描述】:
如果 ASP.NET 应用程序(使用 ASP.NET 线程池,同步请求处理)长时间运行(> 30 分钟),则在 windows server 2008 64 位、IIS 7.0 和 .NET 4.0 下。 Web 应用程序没有页面,主要目的是以块(~5 MB)读取大文件(> 1 GB)并将它们传输到客户端。代码:
while (reading)
{
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}
单生产者 - 实现了单消费者模式,因此每个请求都有两个线程。我在这里不使用任务库,但请告诉我在这种情况下它是否比传统的线程创建更有优势。使用 HTTP 处理程序 (.ashx) 代替 (.aspx) 页面。在压力测试下,CPU 利用率不是问题,但是对于单个工作进程,在 210 个并发客户端之后,新连接会遇到超时。这可以通过网络园艺解决,因为我不使用会话状态。我不确定我是否遗漏了任何重大问题,但请告诉我您认为应该考虑哪些其他因素?
例如,由于“连接超时”,IIS 可能会关闭长时间运行的 TCP 连接,因为正常 ASP.NET 页面的处理时间不到 5 分钟,所以我应该增加该值。
我很欣赏你的想法。
【问题讨论】:
-
我问了一个问题:stackoverflow.com/questions/4007863/…,但仍未得到答复。
-
不幸的是,stackoverflow 不允许从第一天起就对问题设置赏金。你在这里看到一些编辑后这里是一些与编辑无关的答案。任何新的答案都有更多被接受的机会。
-
在 WAWS 上,您可以使用 Azure WebJobs。
标签: asp.net configuration iis-7 long-running-processes