与Kestrel http服务器相比,IIS的性能如何?
似乎Kestrel受到异步和事件驱动的服务器框架系列的启发。与此同时,IIS具有悠久的开发历史,并且在功能方面显然更加成熟。考虑到所有这些因素,我特意寻找内存利用率,线程利用率,请求相关比较(如每秒请求数)和流功能的比较。
这是来自GitHub仓库的XSLX file,您可以在其中查看您正在寻找的性能比较。
我为我当前的项目做了很多基准测试,在IIS和Kestrel上托管.net核心1.0和2.0应用程序。测试是真实的rest-api CRUD,包括身份验证/授权,日志记录,指标,速率限制等。此外,.net核心应用程序完全由MS书籍完成,符合推荐的1.0 / 2.0标准。
使用相同的硬件设置,IIS后面的托管服务每秒可以提供大约40%的请求。我仍然无法找到能够解释性能差异的文章或顾问。
我还试图从核心基准测试机构https://github.com/aspnet/benchmarks找到任何类型的优化技巧,通过浏览设置和服务初始化程序,但仍然,IIS只是更快。
有什么指针吗?
截至2016年11月,直接来自ASP.NET benchmarks。
在Windows Server 2012上,管道深度为16:
stack on RT requests/sec
ASP.NET 4.6 IIS CLR 57,792
ASP.NET 5 Kestrel CoreCLR 1,188,521
这是20倍或2000%的加速。我理解一个完整的IIS vs standalong Kestrel,但我希望ASP.NET团队中的某个人可以深入研究这个,因为差异是巨大的。
这就是为什么它在Linux上的速度要慢得多。
以下是asp.net团队的一些初步的Kestrel基准测试。虽然不像你想要的那样详尽,但你会发现他们发布了一些关于RPS的信息。我相信随着他们越来越接近发布,会有更多。您可以通过简单的谷歌搜索在互联网上找到IIS基准测试: