我正在ASP.NET Core 3.1上进行一些性能测试。我创建了一个虚拟Web应用程序,该应用程序仅返回静态分配的结构,如下所示:
[Route("api/[controller]")]
[ApiController]
public class DummyController : ControllerBase
{
private static State _state = new State();
public State Get()
{
return _state;
}
}
在IIS下运行时,此应用程序支持的请求/秒速度是在Kestrel下可以实现的速度的一半。在IIS下,它无法耗尽CPU容量,而在Kestrel中,它可以最大化所有内核。有人知道为什么会这样吗?我已经在Google上进行了搜索,发现有人报告相反的问题(例如,在Kestrel下运行速度较慢),但事实并非如此。
我正在IIS下运行应用程序InProcess
。 IIS版本为10,操作系统为Windows 101903。该计算机具有16个内核和32个逻辑进程。我正在通过环回使用bombardier进行测试(即bombardier与该应用程序在同一台计算机上运行)。
答案 0 :(得分:0)
问题是由于我在Windows 10上运行该应用程序而导致的。当我将应用程序移至Windows Server 2016时,IIS的性能开始与Kestrel的性能相匹配。