.net - 为我的 Web 应用程序迁移到 Azure Linux 使内存使用量从 50mb 跃升至 300mb - 这正常吗?
问题描述
我一直在将很多服务迁移到 Azure Linux,因为我假设 Linux 更轻量级。现在我注意到几乎所有这些微服务都从大约 50mb 跃升至 300mb。他们中的很多人不使用大量缓存。
这正常吗?这对于 .NET 运行时而言是高昂的价格,还是包含在 Windows 基础架构上并可能共享的东西?这是静态惩罚还是 Linux 上的内存扩展更糟(不确定应该如何工作)。
请注意,我在普通的 Azure Web 应用程序上运行 - 而不是在 Docker 中。这可能与 Docker 有关吗?
要回答评论中的问题:
- 运行 C# .NET Core (ASP.NET Core MVC)
- 它们只是 Azure Web 应用程序
- 这些应用程序做的很少
- 没有单声道
- 刚刚重新编译并发布到 Azure Linux 而不是 Azure Windows Web App
除了我使用 Visual Studio 发布到 Linux Web App 而不是基于 Windows 的 Web App 之外,基本上一切都完全相同。我可以通过将它们重新发布到不同的 Web 应用程序来并排运行它们,并且使用Process.GetCurrentProcess().PrivateMemorySize64
.
更新 我刚刚上传了一个几乎是空的 ASP.NET 项目:
public class Startup
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
double size = Process.GetCurrentProcess().PrivateMemorySize64;
string size_str = Math.Round( size/ (1024*1024) ) + "mb";
await context.Response.WriteAsync( size_str );
});
});
}
}
- Vanilla Windows 64bit Azure Web 应用程序:约 53 mb
- Vanilla Linux(64 位?)Azure Web 应用程序(据我所知基于 docker):165 mb