我们正在解决一个与
.NET Core API
端点相关的性能问题:
- 在轻载下,端点始终在小于
500MS
内返回。 - 当我们从三个浏览器发出请求时,每秒一个请求,在不到一分钟内(第三个浏览器开始调用),响应时间会变得越来越慢,直至达到
50,000MS
或更差。 - 每个额外的浏览器都增加了API使用的线程数,例如:40个线程的基础上,第二个浏览器访问端点会增加到52个线程,第三个则增加到70个及以上。
- 当一个端点负载过大时,整个API的返回速度都会变慢(所有端点)。这是我认为线程耗尽的主要原因,以及上述第3点。
目前代码如下:
public IActionResult GetPresentationByEvent(int eventid)
{
return Authorized(authDto =>
{
var eventList = _eventService.GetPresentationByEvent(eventid);
return Ok(eventList)
})
}
我的理论是,return Authorized(authDto =>
会阻塞线程直到它返回,导致线程耗尽。
public async Task<IActionResult> GetPresentationByEvent(int eventid)
{
return Authorized(async authDto =>
{
Task<List<whatever>> eventList = _eventService.GetPresentationByEvent(eventid);
return Ok(eventList)
}
}
Authorized
是第三方库的一部分,所以我不能轻易地测试这个。想知道这是否看起来像一个可能的问题/解决方案。