Konfigurera .NET-skräpinsamling
För bra prestanda är det viktigt att konfigurera .NET-skräpinsamling för siloprocessen på rätt sätt. Den bästa kombinationen av inställningar baserat på teamets resultat är att ange gcServer=true
och gcConcurrent=true
. Du kan konfigurera dessa värden i C#-projektet (.csproj) eller en app.config. Mer information finns i Smak av skräpinsamling.
.NET Core och .NET 5+
Den här metoden stöds inte med SDK-formatprojekt som kompileras mot hela .NET Framework
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
</PropertyGroup>
.NET Framework
SDK-formatprojekt som kompileras mot det fullständiga .NET Framework bör fortfarande använda det här konfigurationsformatet, överväg en exempelfil för app.config XML:
<configuration>
<runtime>
<gcServer enabled="true"/>
<gcConcurrent enabled="true"/>
</runtime>
</configuration>
Detta är dock inte lika lätt att göra om en silo körs som en del av en Azure Worker-roll, som som standard är konfigurerad för att använda arbetsstation GC. Det finns ett relevant blogginlägg som beskriver hur du ställer in samma konfiguration för en Azure Worker-roll i läget Server skräpinsamling i Azure.
Viktigt!
Server skräpinsamling är endast tillgänglig på datorer med flera processorer. Även om du konfigurerar skräpinsamlingen antingen via filen .csproj eller via skripten i det refererade blogginlägget får du inte fördelarna gcServer=true
med om silo körs på en (virtuell) dator med en enda kärna. Mer information finns i GC Inställningar. IsServerGC-kommentarer.