.NET ガベージ コレクションを構成する
パフォーマンスの向上には、サイロ プロセスの .NET ガベージ コレクションを正しい方法で構成することが重要です。 チームの調査結果によると、設定の最適な組み合わせは、gcServer=true
と gcConcurrent=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 の「注釈」を参照してください。
.NET