Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento dokument popisuje osvědčené postupy pro návrh a konfiguraci pracovního postupu související s trvalostí pracovního postupu.
Návrh a implementace trvalých pracovních postupů
Obecně platí, že pracovní postupy provádějí práci v krátkých obdobích, které se střídají s časy, kdy je pracovní postup nečinný, protože čeká na událost. Tato událost může být například zpráva nebo časovač vypršení platnosti. Aby bylo možné uvolnit instanci pracovního postupu při nečinnosti, musí hostitel služby zachovat instanci pracovního postupu. To je možné pouze v případě, že instance pracovního postupu není v zóně bez uložení (například čeká na dokončení transakce nebo na asynchronní zpětné volání). Aby se nečinná instance pracovního postupu mohla uvolnit, měl by autor pracovního postupu používat obory transakcí a asynchronní aktivity pouze pro krátkodobé akce. Autor by měl zejména udržovat aktivity zpoždění v těchto nestálých zónách co nejkratší.
Pracovní postup lze zachovat pouze v případě, že jsou všechny datové typy používané pracovním postupem serializovatelné. Kromě toho musí být vlastní typy používané v přetrvávajících pracovních postupech serializovatelné pomocí NetDataContractSerializer, aby je bylo možné zachovat v SqlWorkflowInstanceStore.
Instanci pracovního postupu nelze obnovit v případě selhání hostitele nebo počítače, pokud nebyla zachována. Obecně doporučujeme zachovat instanci pracovního postupu v rané fázi životního cyklu pracovního postupu.
Pokud je váš pracovní postup po dlouhou dobu zaneprázdněný, doporučujeme, abyste instanci pracovního postupu pravidelně uchovávaly v průběhu jeho zaneprázdněného období. Můžete to provést přidáním Persist aktivit v celé posloupnosti aktivit, které udržují instanci pracovního postupu zaneprázdněnou. Recyklace domény aplikace, selhání hostitele nebo selhání počítače tímto způsobem nezpůsobí vrácení systému zpět na začátek období zaneprázdnění. Mějte na paměti, že přidání Persist aktivit do pracovního postupu může vést ke snížení výkonu.
Windows Server App Fabric výrazně zjednodušuje konfiguraci a použití trvalosti. Další informace najdete v tématu Windows Server App Fabric Persistence.
Konfigurace parametrů škálovatelnosti
Požadavky na škálovatelnost a výkon určují nastavení následujících parametrů:
Tyto parametry by měly být nastaveny následujícím způsobem podle aktuálního scénáře.
Scénář: Malý počet instancí pracovního postupu, které vyžadují optimální dobu odezvy
V tomto scénáři by všechny instance pracovního postupu měly zůstat načtené, když se přestanou používat. Nastavte TimeToUnload na velkou hodnotu. Použití tohoto nastavení zabraňuje přesunutí instance pracovního postupu mezi počítači. Toto nastavení použijte pouze v případě, že platí jedna nebo více z následujících možností:
Instance pracovního postupu obdrží během své životnosti jednu zprávu.
Všechny instance pracovního postupu běží na jednom počítači.
Všechny zprávy přijaté instancí pracovního postupu obdrží stejný počítač.
K povolení obnovení instance pracovního postupu po selhání hostitele služby nebo počítače použijte aktivity Persist nebo nastavte TimeToPersist na hodnotu 0.
Scénář: Instance pracovních postupů jsou nečinné po dlouhou dobu
V tomto scénáři nastavte TimeToUnload na hodnotu 0, aby se prostředky uvolnily co nejdříve.
Scénář: Instance pracovního postupu přijímají více zpráv v krátkém časovém období
V tomto scénáři nastavte TimeToUnload na 60 sekund, pokud jsou tyto zprávy přijaty stejným počítačem. Tím se zabrání rychlé sekvenci uvolňování a načítání instance pracovního postupu. To rovněž nezachovává instanci v paměti příliš dlouho.
Nastavte TimeToUnload na 0 a nastavte InstanceLockedExceptionAction na BasicRetry nebo AggressiveRetry, pokud tyto zprávy mohou být přijaty různými počítači. To umožňuje načtení instance pracovního postupu jiným počítačem.
Scénář: Pracovní postup používá aktivity zpoždění s krátkými dobami trvání
V tomto scénáři SqlWorkflowInstanceStore pravidelně zjišťuje stavy v databázi perzistence pro instance, které by se měly načíst, protože platnost aktivity Delay vypršela. SqlWorkflowInstanceStore Pokud najde časovač, jehož platnost vyprší v dalším intervalu dotazování, služba SQL Workflow Instance Store zkracuje interval dotazování. Další dotaz se pak zobrazí hned po vypršení platnosti časovače. Úložiště instancí pracovního postupu SQL tak dosahuje vysoké přesnosti časovačů, které běží déle než interval dotazování nastavený pomocí RunnableInstancesDetectionPeriod. Aby bylo možné včasné zpracování kratších zpoždění, musí instance pracovního postupu zůstat v paměti po dobu nejméně jednoho intervalu dotazování.
Nastavte TimeToPersist na hodnotu 0 pro zápis doby vypršení platnosti do databáze trvalosti.
Pokud chcete zachovat instanci v paměti alespoň po dobu jednoho intervalu dotazování, nastavte TimeToUnload na delší než nebo rovnou RunnableInstancesDetectionPeriod.
Nedoporučujeme snižovat RunnableInstancesDetectionPeriod , protože to vede ke zvýšenému zatížení databáze trvalosti. Každý hostitel služby, který používá SqlWorkflowInstanceStore, dotazuje databázi jednou za období detekce. Nastavení RunnableInstancesDetectionPeriod příliš malého časového intervalu může způsobit snížení výkonu systému, pokud je velký počet hostitelů služeb.
Konfigurace úložiště instancí pracovního postupu SQL
Úložiště instancí pracovního postupu SQL má následující parametry konfigurace:
InstanceEncodingOption
Tento parametr dává pokyn SqlWorkflowInstanceStore ke komprimaci stavu instance pracovního postupu. Komprese snižuje množství dat uložených v databázi trvalosti a snižuje síťový provoz v případě, že se databáze trvalosti nachází na vyhrazeném databázovém serveru. Při použití komprese vyžaduje výpočetní prostředky ke komprimaci a extrahování stavu instance. Ve většině případů komprese zvyšuje výkon.
InstanceCompletionAction
Tento parametr instruuje SqlWorkflowInstanceStore k zachování nebo odstranění dokončených instancí. Udržování dokončených instancí zvyšuje požadavky na úložiště databáze pro uchovávání a vede k zvětšení tabulek, což zvyšuje časy vyhledávání v tabulkách. Pokud nejsou pro ladění nebo auditování potřeba dokončené instance, je nejlepší dát pokyn SqlWorkflowInstanceStore k odstranění dokončených instancí. Odstraněné instance by se měly uchovávat pouze v případě, že uživatel vytvoří proces pro jejich případné odebrání. Mějte na paměti, že klíče korelace nelze znovu použít, pokud se dokončená instance pracovního postupu nachází v úložišti instancí.
RunnableInstancesDetectionPeriod
Tento parametr definuje maximální interval, ve kterém SqlWorkflowInstanceStore provádí dotazování databáze trvalosti na instance, které by měly být načteny, když dojde k vypršení aktivity Delay.
SqlWorkflowInstanceStore Pokud najde časovač, jehož platnost vyprší v dalším intervalu dotazování, zkracuje interval dotazování, aby další dotazování nastalo hned po vypršení platnosti časovače. Úložiště instancí pracovního postupu SQL tak dosahuje vysoké přesnosti časovačů, které běží déle než RunnableInstancesDetectionPeriod.
Nedoporučujeme snižovat RunnableInstancesDetectionPeriod, protože to vede ke zvýšenému zatížení databáze trvalosti. Každý hostitel služby, který používá SqlWorkflowInstanceStore, dotazuje databázi jednou za období detekce. Nastavení RunnableInstancesDetectionPeriod příliš malého intervalu může způsobit snížení výkonu systému, pokud je velký počet hostitelů služeb.
HostLockRenewalPeriod
Tento parametr definuje interval, pomocí kterého hostitel obnoví svůj zámek v databázi trvalosti. Zkrácení tohoto intervalu umožní rychlejší obnovení instancí pracovního postupu v případě selhání hostitele nebo počítače. Na druhou stranu krátké období prodlužování zámku zvyšuje zatížení databáze trvalosti. Každý hostitel služby, který používá SqlWorkflowInstanceStore, aktualizuje své zámky v databázi jednou za obnovovací období. Pokud počítač spouští mnoho hostitelů služeb, ujistěte se, že zatížení způsobené obnovením zámku nezmenší výkon systému. Pokud ano, zvažte zvýšení HostLockRenewalPeriod.
InstanceLockedExceptionAction
Pokud je povoleno, SqlWorkflowInstanceStore opakovaně se pokouší načíst uzamčenou instanci během příštích 30 sekund. Nastavte InstanceLockedExceptionAction na BasicRetry nebo AggressiveRetry, pokud pracovní postup přijímá více zpráv za krátkou dobu a tyto zprávy jsou přijímány různými počítači.
Vzhledem k tomu, že mechanismus opakovaného načítání nezavádí žádné výkonové režijní náklady, pokud nejsou opakování načítání prováděna, InstanceLockedExceptionAction by měl být vždy povolen.