【发布时间】:2018-01-20 20:59:59
【问题描述】:
我正在计算我的 C# web api 的性能。我写了一个很简单的HelloWorld回复:
public class HelloWorldController : ApiController
{
public HttpResponseMessage Get()
{
return new HttpResponseMessage()
{
Content = new StringContent("HelloWorld")
};
}
}
我使用JMeter 进行了测试,我设置了 1000 个用户请求,它运行良好(CPU 使用率高达 100%)。但问题是,当 api 的操作时间较长时,响应变得更糟,每个响应只有 3 个(CPU 使用率
public HttpResponseMessage Get()
{
Thread.Sleep(1000);
return new HttpResponseMessage()
{
Content = new StringContent("HelloWorld")
};
}
在谷歌之后,我想出了使用异步的想法,但我仍然遇到了同样的问题。我不知道问题是什么或我的代码实现。下面是我的示例实现。
public async Task<HttpResponseMessage> Get()
{
return new HttpResponseMessage()
{
Content = new StringContent(await LongOperationAsync())
};
}
private string LongOperation()
{
//long operation here
Thread.Sleep(1000);
return "HelloWorld";
}
private Task<string> LongOperationAsync()
{
return Task.Factory.StartNew(() => LongOperation());
}
有人知道问题是什么或对此问题有任何想法吗?
【问题讨论】:
-
你认为
Thread.Sleep(1000);实际上在这里做什么?
标签: c# asynchronous iis asp.net-web-api async-await