IIS与Kestrel性能比较

mad*_*ree 18 iis performance kestrel-http-server

与Kestrel http服务器相比,IIS的性能如何?

似乎Kestrel受到异步和事件驱动的服务器框架系列的启发.与此同时,IIS具有悠久的开发历史,并且在功能方面显然更加成熟.综合考虑所有这些因素,我特意寻找内存利用率,线程利用率,请求相关比较(如每秒请求数)和流功能的比较.

Mat*_*nta 13

这是来自GitHub 仓库的XSLX文件,您可以在其中查看您正在寻找的性能比较.

在Excel上打开文件,然后选中"最新"选项卡. 在此输入图像描述

  • github 存储库中没有 xslx 文件。 (2认同)

Mil*_*vic 6

我为我当前的项目做了很多基准测试,在 IIS 和 Kestrel 上托管了 .net core 1.0 和 2.0 应用程序。测试是真实世界的 rest-api CRUD,具有身份验证/授权、日志记录、指标、速率限制等。此外,.net 核心应用程序完全由 MS 书籍完成,符合推荐的 1.0/2.0 标准。

使用相同的硬件设置,在 IIS 后面的托管持续每秒处理大约 40% 的请求。我仍然找不到能够解释性能差异的文章或顾问。

我还试图从核心基准测试权威https://github.com/aspnet/benchmarks 中找到任何类型的优化技巧,通过翻找设置和服务初始值设定项,但 IIS 仍然更快。

任何指针?

  • 那么,两年后,您对这个问题的立场是什么? (2认同)
  • 哦,当我说这不是问题时,我的意思是单独的红隼从来都不是一个选择。我让当地的 Microsoft Office 代码审查了我的内容,并得到了官方确认,Kestrel 已做好生产准备,但不建议用于公开访问的服务。由于我的服务都是公共的,因此反向代理是必须的(以及请求过滤等),所以最初,IIS 是解决问题的方法。去年我改用了linux+nginx,性能得到了显着提升。所以,我当前的堆栈是 cloudflare -> nginx -> 自定义休息网关 -> 休息 api。 (2认同)

Dee*_*101 5

截至 2016 年 11 月,直接来自ASP.NET 基准测试

在 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       
Run Code Online (Sandbox Code Playgroud)

这是 20 倍或 2000% 的加速。我了解完整的 IIS 与独立的 Kestrel,但我确实希望 ASP.NET 团队中的某个人可以深入研究这一点,因为差异是巨大的。

这也是为什么它在 Linux 上慢得多的原因。

基准结果

  • 凉爽的。但是没有人在没有任何 http 服务器的情况下使用 Kestrel 作为可以处理强大安全级别的代理。因此,Kestrel 在生产中毫无用处。 (5认同)
  • 为什么 Linux 上的 Kestrel 比 Windows 上的 rps 低? (2认同)
  • 我发现从这张图片中很难得出任何结论。在用箭头标记的两种情况下,ASP.NET 框架不同,CRL 不同,Web 服务器不同。人们只能猜测性能差异来自哪里。:(另外,有两个 Kestrel 安装具有完全相同的设置,但性能评级完全不同。看着这个,我脑海中浮现出一个巨大的“WTF”......也许我遗漏了一些东西。有没有更新的统计数据最新的框架? (2认同)