Asp.Net core (Full .Net framework) vs Asp.Net core (.Net Core) 性能

Posted

技术标签:

【中文标题】Asp.Net core (Full .Net framework) vs Asp.Net core (.Net Core) 性能【英文标题】:Asp.Net core (Full .Net framework) vs Asp.Net core (.Net Core) Performance 【发布时间】:2017-10-12 11:10:13 【问题描述】:

我发现与传统 Asp.Net 相比,Asp.Net 核心的主要优势之一是多倍的性能提升(每秒请求数)。我发现许多基准站点都在谈论 Asp.Net 核心性能,但我不确定性能是基于带有 .Net 核心框架的 Asp.Net 核心还是同样的性能优势适用于 asp.net 核心(完整的 .Net框架)。

任何解释/比较 asp.net core(.Net core)与 asp.net(完整框架)之间性能的想法/文章?

谢谢

【问题讨论】:

没有官方基准可以比较它,TechEmpower 仅将 Linux 上的 ASP.NET Core 与其他操作系统进行比较,github.com/aspnet/benchmarks 已经很老了,有一段时间没有更新了。但是您可以获取存储库并按照有关如何生成负载的说明进行操作。不过,您将需要两台物理服务器,一台用于服务器应用程序,一台用于生成负载,因为在同一台机器上执行这两种操作会影响基准测试结果(wrk 工具也使用相当多的资源来生成这么多的请求) 感谢@Tseng 提供指向“如何进行基准测试”的指针 我看到的关于 asp.net 核心的主要基准是 TechEmpower 纯文本基准。在这种情况下,运行在完整框架或 .net 核心框架上的 asp.net 核心之间不太可能存在性能差异,因为运行的代码可能只是 asp.net 核心代码(即 Kestrel 和 asp.net 核心实现的) 不幸的是,这不是真的。 .NET Core 在某些方面比 .NET Framework 快很多,这意味着 .NET Core 上的 ASP.NET Core 比 .NET Framework 快(在相同的场景中) .我们通常会花费更多时间来测试 .NET Core 性能并确保 .NET Framework 性能在一定程度上达到同等水平,但它并没有得到同样多的喜爱,因为我们在框架级别可以做的事情更少。 【参考方案1】:

我最近使用 ASP.NET Core 2.0 进行开发,除了出色的跨平台支持外,我对性能改进也有同样的疑问。 google搜索结果有很多比较,简述的思路是:

ASP.NET Core 2.0 比 ASP.NET 4.6 快大约 6 到 23 倍

这里有两个资源供你参考

https://www.ageofascent.com/2016/02/18/asp-net-core-exeeds-1-15-million-requests-12-6-gbps/ https://github.com/aspnet/benchmarks

【讨论】:

【参考方案2】:

ASP.Net Core 2.0 比 ASP.Net 4.6 快近 2 倍,并且还来自 ASP.Net 4.7 框架。

在比较完整的 .Net 框架与 .Net Core 的性能时,ASP.Net Core 胜出,但 .Net Framework 也有一些优势,因为一些预构建的功能适用于 asp.net 框架。

但就速度而言,ASP.Net Core(.Net Core) 甚至比 Node.js 更胜一筹

【讨论】:

【参考方案3】:

我们正在检查 asp.net core 2.0 的性能并发现:


使用 ASP.NET Core 模块在 IIS 下托管/运行的 Asp.Net 核心应用程序 在大约 60% 的情况下,性能最差,然后是全帧工作。 第二种情况:相同的应用程序自托管并使用带有 URL 重写模块的 IIS 作为反向代理,比完整固件提高了大约 20% 的性能。 固件 4.6.1。

对性能有重大影响的另一个方面是日志记录。确保被测应用程序不会将调试/信息日志写入控制台(默认情况下)。 被测日志配置不应记录信息和调试。

我们要处理的第二个问题是:使用 WCF 服务时的 Asp.net 核心性能问题。我们发现,在当前版本 2.0.5 中,性能与 Asp.Net FW 相比差了大约 70%,更重要的是,在所有测试中错误率很高 (23%)。

这里的问题在于端口耗尽。 MS 建议增加临时端口的数量。增加临时端口的数量提高了错误率,但并没有解决问题。 我们的测试设置: 带有返回一些字符串的 WEB Api 控制器的 Asp.Net core2.0 和 Asp.Net FW 应用程序 负载测试:从 5 个用户开始,每 30 秒增加 5 个。测试运行 8 分钟

读出 ASP.Net Core 2.1 RoadMap。我认为 MS 意识到了这些问题,他们将在 2.1 版本中修复主要问题。 我们正在等待它。

【讨论】:

以上是关于Asp.Net core (Full .Net framework) vs Asp.Net core (.Net Core) 性能的主要内容,如果未能解决你的问题,请参考以下文章

创建 F# ASP.NET Core Web 应用程序需要啥 Visual Studio 2017 选项?

[Asp.Net Core]IIS部署

关于asp.net的下载问题

如何在 asp.net core web api 中绑定 Json Query 字符串

在ASP.NET Core微服务架构下使用数据库切分和扩展

经验分享在ASP.NET Core中,如果禁用某个请求的模型验证?