我有一个带有这个pseduo代码的ASP.NET页面:
while (read)
{
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}
Run Code Online (Sandbox Code Playgroud)
请求此页面的任何客户端都将开始下载二进制文件.此时一切正常,但客户端的下载速度没有限制,因此将上述代码更改为:
while (read)
{
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
Thread.Sleep(500);
}
Run Code Online (Sandbox Code Playgroud)
速度问题现在已经解决,但是在测试中有100个并发客户端一个接一个地连接(每个新连接之间延迟3秒),当客户端数量增加时CPU使用率增加,并且当70到80个并发客户端CPU达到100%时CPU使用率增加并且任何新连接都被拒绝.其他机器上的数字可能不同,但问题是为什么Thread.Sleep()是如此CPU密集型,有没有办法加速客户端没有CPU上升?
我可以在IIS级别执行此操作,但我需要从应用程序内部进行更多控制.