.NET Core API
我们正在对端点上的以下性能问题进行故障排除:
- 端点始终以低于
500MS
轻微负载的速度返回。 - 当我们从 3 个浏览器访问端点时,每秒一个请求,它会逐渐变慢(在添加第三个浏览器进行调用后的一分钟内,响应时间会下降
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
是第三方库的一部分,所以我不能轻易测试。想知道这是否看起来像是一个可能的问题/解决方案。