次の方法で共有


.NET ガベージ コレクションを構成する

パフォーマンスの向上には、サイロ プロセスの .NET ガベージ コレクションを正しい方法で構成することが重要です。 チームの調査結果によると、設定の最適な組み合わせは、gcServer=truegcConcurrent=true の設定です。 これらの値は、C# プロジェクト (.csproj) または app.config で構成できます。詳細については、「ガベージ コレクションのフレーバー」を参照してください。

.NET Core および .NET 5+

この方法は、完全な.NET Framework に対してコンパイルされる SDK 形式のプロジェクトではサポートされていません

<PropertyGroup>
    <ServerGarbageCollection>true</ServerGarbageCollection>
    <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
</PropertyGroup>

.NET Framework

完全な .NET Framework に対してコンパイルされる SDK 形式のプロジェクトでは、引き続きこの構成スタイルを使用する必要があります。app.config の XML ファイルの例を考えてみましょう。

<configuration>
    <runtime>
        <gcServer enabled="true"/>
        <gcConcurrent enabled="true"/>
    </runtime>
</configuration>

ただし、既定でワークステーション GC を使用するように構成されている Azure Worker ロールの一部としてサイロが実行されている場合は、簡単には実行できません。 Azure Worker ロールに同じ構成を設定する方法についての、Azure でのサーバー ガベージ コレクション モードに関する関連するブログ投稿を参照してください。

重要

サーバー ガベージ コレクションは、マルチプロセッサ コンピューターでのみ使用できます。 したがって、アプリケーション .csproj ファイルまたは紹介したブログ記事のスクリプトを使用してガベージ コレクションを構成した場合でも、サイロが単一コアの (仮想) マシンで実行されている場合は、gcServer=true の利点は得られません。 詳細については、GCSettings.IsServerGC の「注釈」を参照してください。