如果 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 分钟内处理完毕,所以我应该增加该值。
我很欣赏你的想法。