Windows 上的 .net Core 与 Linux

问题描述 投票:0回答:4

ASP.Net Core 在 Windows 和 Linux Docker 容器上运行。考虑到 Linux 主机比 Windows 主机便宜,如果不需要完整的 .Net 框架,那么在 IIS/Windows 上运行应用程序与在 Nginx/Linux 上运行应用程序有什么好处?

asp.net iis nginx .net-core
4个回答
40
投票

Roberto Prevato 的一项研究表明,在 Linux 上运行它会更好(!),至少对于 ASP.NET Core 来说是这样。

结果与从发电负载获得的结果一致 通过有线连接到互联网的计算机:相同的 ASP.NET Core 在 Linux 和 Docker 中部署的应用程序比在 Linux 和 Docker 中部署的应用程序要快得多 部署在 Windows 主机中(均在应用程序服务计划内)。这些 新的测试表明,托管的应用程序具有更强的主导地位 Linux,尤其是在为更大的身体提供响应时。

他得到的结果的简短总结:

每秒请求数(越高越好):

Scenario Linux Windows +% Hello World 646.6 432.85 +49.38% 1KB 623.05 431.95 +44.24% 10KB 573.6 361.9 +58.5% 50KB 415.5 210.05 +97.81% 100KB 294.35 143.25 +105.48%

响应时间(越低越好):

Scenario Linux Windows -% Hello World 168.85 242.2 -30.28% 1KB 171.25 249.8 -31.45% 10KB 184.2 292.7 -37.07% 50KB 233.3 542.85 -57.02% 100KB 365.05 817.35 -55.34%
    

3
投票
没有明确的好处。这与为什么要在其他平台上运行rails、jboss 的论点相同。由于您运行的是同一个应用程序,因此无需考虑太多因素。您可能希望拥有 Windows 中的一些功能,例如 dns 缓存。如果您更喜欢使用网络侦听器,而不是 kestrel,但这在很大程度上取决于您正在做什么。

如果您真的关心您的http传输,或者.net将使用哪个时区数据库,那么您可以做出这样的决定。对于大多数用户来说,并没有什么大的好处。如果您希望使用 AD 登录,那么您几乎必须使用 Windows 和 IIS,因为您需要一台属于活动目录域的服务器。

请记住,Linux 确实有免费选项,但大多数付费企业对 Linux 的支持通常是相同的,甚至比 Windows 更贵。


0
投票
最近进行的大多数性能测试都会有所不同。 50% 的 RPS 差异是显而易见的。肯定存在一些小差异,例如本机 AD 支持,尽管 openAD 会在 Linux 上为有设置经验的人提供便利。鉴于性能测试结果,以及 Linux 提供更简单且通常更安全的生产部署这一事实,我很好奇人们可能“需要”选择 Windows 的原因是什么。同服务器 Sharepoint 集成? :)

我知道这是一个老问题,但它仍然非常相关,并且缺乏公认的答案促使我插话。

0
投票
这并不是真正的答案,而是对不仅在这里而且在互联网上发布的基准提出质疑。

使用 IIS(仅在 Windows 中可用),进程内托管模型可提供更好的性能。

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/in-process-hosting?view=aspnetcore-8.0

另一种进程外托管模型,其中 IIS 或其他 Web 服务器(Apache、Nginx)与 Kestrel 结合用作反向代理,吞吐量较低。

因此,在这些基准测试中,很可能直接使用 Kestrel。但在生产环境中,Web 服务器几乎总是被用作进程内代理或反向代理,因为 Web 服务器比轻量级 Kestrel 具有更多的安全功能。

最好在更接近生产环境的地方执行基准测试。我还没有对 Windows/IIS 进程内与 Linux/Nginx 反向代理进行任何基准测试。据我所知,目前还没有这方面的工作。

© www.soinside.com 2019 - 2024. All rights reserved.