Změna výchozích hodnot v nastavení WCF service throttling v .NET 4.0

Při upgradu existující WCF aplikace z .NET 3.5 do 4.0 jsem si všiml poněkud odlišného chování serverové části při vyšší zátěži. Došlo totiž ke změně výchozích hodnot parametrů v nastavení WCF throttling mechanismu. V konfiguraci se jedná o element serviceThrottling. Tato změna ovšem není popsána v MSDN dokumentaci, nastěstí je na konci stránky v Community Content odkaz na článek WCF 4: Higher Default Throttling Settings for WCF Services na MSDN blogu. Co se tedy změnilo:

Výchozí hodnoty v .NET 3.5

maxConcurrentCalls: 16
maxConcurrentInstances: 26 (dle dokumentace k ServiceThrottlingBehavior.MaxConcurrentInstances)
maxConcurrentSessions: 10

Výchozí hodnoty v .NET 4.0

maxConcurrentCalls: 16 * počet CPU
maxConcurrentInstances: maxConcurrentCalls + maxConcurrentSessions
maxConcurrentSessions: 100 * počet CPU

Definice výchozích hodnot vychází z počtu CPU (jader) a umožňuje tím lepší automatickou škálovatelnost serveru dle aktuálního hardware. V případě že nastavíte hodnotu některého parametru explictně v konfiguraci, použije se přímo tato hodnota a nedochází již k násobení počtem CPU.

Komentáře jsou uzavřeny