Azure 应用服务上的服务器垃圾收集

Server Garbage Collection on Azure App Service

是否可以在 Azure 应用服务上使用 Server Garbage Collection

我在web.config(D:\home\site\wwwroot\web.config)中设置了gcServer如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <gcServer enabled="true" />
  </runtime>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath=".\MyApplication.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
  </system.webServer>
</configuration>

但是GCSettings.IsServerGC仍然returns错误。

根据this,可以看到备注:

If server garbage collection is not enabled, workstation garbage collection is in effect (with or without concurrent collection). Server garbage collection is available only on multiprocessor computers.

默认情况下,如果您的网络应用程序服务计划是多处理器的,如 B2、S2,它将自动启用 gcServer。

但是如果你的web app服务计划是B1,S1,它只有一个核心,它会启用工作站。

这是测试示例:

我有一个包含以下代码的页面:

string result;

        if (GCSettings.IsServerGC == true)
            result = "server";
        else
            result = "workstation";

        Response.Write(result);

然后我将 Web 应用程序发布到不同的应用程序服务计划。(B1,B2)

结果如下: