我計算出我的C#web API的性能。我寫了一個非常簡單的HelloWorld
響應:異步長操作與HttpResponseMessage
public class HelloWorldController : ApiController
{
public HttpResponseMessage Get()
{
return new HttpResponseMessage()
{
Content = new StringContent("HelloWorld")
};
}
}
我通過使用JMeter我組1000級的用戶請求測試它完美地工作(CPU使用率高達100%)。但問題是,當api的運行時間稍長時,響應會變得更糟,每個響應只有3個響應(CPU使用率爲< 7%)。它爲1000個用戶請求花了小費。
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);'實際上在這裏做什麼? – DavidG