微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在适用于Linux的Azure App Services中运行.NET Core API的性能问题

如何解决在适用于Linux的Azure App Services中运行.NET Core API的性能问题

我尝试将一些构建于.NET Core 3.1上的Web API移植到Azure应用服务(在Linux上)。早些时候,所有这些API都托管在Azure App Services(在Windows上)中,但是由于与它们相关的巨大成本优势,我想将它们移植到Linux环境中。

但是,在移植它们并运行了一些性能套件之后,我发现Linux和Windows App Service之间存在一些严重的性能差异。我曾期望Linux App Service中的性能会提高或保持不变,但令我感到沮丧的是性能实际上下降了。以下是一些结果:

+-----------------------------------------------+-----------+--------+---------+
| Operation                                     | User Load | Linux  | Windows |
+-----------------------------------------------+-----------+--------+---------+
| Cosmos DB Read                                | 50        | 600 ms | 60 ms   |
+-----------------------------------------------+-----------+--------+---------+
| Simple Ping                                   | 50        | 30 ms  | 20 ms   |
+-----------------------------------------------+-----------+--------+---------+
| 15 parallel calls to Azure Feature Management | 50        | 510 ms | 160 ms  |
+-----------------------------------------------+-----------+--------+---------+

是什么原因导致Linux性能下降?是.NET Core,在Windows中性能要比Linux更好。如果是这样,这是否会在.NET 5或其他后续版本中获得地址?

解决方法

至少对于CosmosDB,使用.NET SDK时,对于Windows有documented performance preference

我们建议使用Windows 64位主机处理以提高性能。 SQL SDK包含一个本地ServiceInterop.dll,用于解析和优化 本地查询。仅Windows支持ServiceInterop.dll x64平台。对于Linux和其他不受支持的平台, ServiceInterop.dll不可用,进行了另一个网络调用 到网关以获取优化的查询。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。