我正在开发一个大量使用 CPU 的 ASP.NET Web 服务应用程序。我注意到在 4 核服务器上,CPU 未得到充分利用。所以我想出了一个简单的服务来看看是否有可能达到 100% CPU。这里是。
调用客户端使用并发线程和重复消息攻击此服务器。每个请求需要 0.5 到 2 秒才能完成(取决于线程数)。它达到的最高 CPU 使用率是所有 4 个内核的 80%。如果我使用 4 个线程或 16 个线程、1 个客户端或 2 个客户端,我会得到相同的结果。2芯盒子也有同样的问题。
那么,是否有可能在多核 IIS 服务器上使用非无限循环的代码达到 100% 的 CPU?
public class MyHttpHandler : IHttpHandler
{
public bool IsReusable { get { return true; } }
public void ProcessRequest( HttpContext context )
{
switch( context.Request.HttpMethod )
{
case "GET":
{
string s = "";
for( int i = 0; i < 999999; ++i )
{
s = s.Substring( s.Length / 2 );
s += i.ToString();
}
context.Response.Output.WriteLine( "<html><body><h1>Web Service - " + s + "</h1></body></html>" );
context.Response.StatusCode = 200;
break;
}
default:
{
context.Response.StatusCode = 405;
break;
}
}
}
}