我正在 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中,它耗尽了所有内核。有谁知道为什么会这样?我用谷歌搜索过它,发现人们报告了相反的问题(即在 Kestrel 下更慢(,但不是这个。
我正在 IIS 下运行InProcess
的应用程序。IIS 版本为 10,操作系统为 Windows 10 1903。这台机器有 16 个内核和 32 个逻辑进程。我正在通过环回使用庞巴迪进行测试(即庞巴迪与应用程序在同一台机器上运行(。
问题是由于我在 Windows 10 上运行该应用程序。它消失了,当我将应用程序移动到Windows Server 2016时,IIS的性能开始与Kestrel的性能相匹配。