Sdílet prostřednictvím


Obecné výjimky (ukládání do mezipaměti technologie Windows Server AppFabric)

Když dojde k chybě během volání metody klienta mezipaměti, vrátí klient mezipaměti instanci třídy DataCacheException. Vlastnost ErrorCode obsahuje typ chyby.

V rozhraní API klienta mezipaměti může dojít k některé z obvyklých chyb:

Kód aplikace by měl být navržen tak, aby tyto chyby předpokládal. Pomocí následujících podrobných informací o jednotlivých chybách byste měli být schopni vyřešit každou situaci.

Timeout

Dojde-li k vypršení časového limitu, je vrácen objekt DataCacheException s kódem chyby Timeout. Vypršení časového limitu znamená, že klient paměti neobdržel odpověď ze serveru během nakonfigurovaného časového limitu. Příčiny mohou být různé, například potíže se sítí mezi klientem a serverem.

I když dojde k chybě vypršení časového limitu, je důležité vědět, že server mohl požadovanou operaci úspěšně zpracovat. Vezměme si například aplikaci s klientem mezipaměti, pro kterého je parametr requestTimeout nastaven na hodnotu 10 000 milisekund. Aplikace provede volání rozhraní API Add za účelem přidání nové položky mezipaměti. Pokud volání trvá déle než deset sekund, aplikace obdrží chybu vypršení časového limitu. Server však mohl operaci přidání dokončit, ale neodpověděl klientovi před vypršením časového limitu. Tuto možnost musí aplikace v obslužné rutině chyby brát v úvahu. Pokud se obslužná rutina chyby pokusí pouze o opakované přidání objektu, může dojít k jiné výjimce s kódem chyby KeyAlreadyExists.

V závislosti na požadavcích na návrh aplikace lze časové limity klienta mezipaměti prodloužit nebo zkrátit. Další informace o konfiguraci časových limitů naleznete v tématu Konfigurace časových limitů klienta mezipaměti (ukládání do mezipaměti technologie Windows Server AppFabric).

RetryLater

Kód chyby RetryLater označuje, že cluster mezipamětí dočasně nemůže požadavek provést. K této chybě například dojde, pokud správce zrovna provádí konfiguraci clusteru mezipamětí.

U tohoto typu chyby je důležitá také hodnota vlastnosti SubStatus objektu DataCacheException. Tato vlastnost obsahuje další podrobné informace o důvodech chyby. Pokud je například zastavena činnost clusteru mezipamětí, bude u vráceného objektu DataCacheException vlastnost ErrorCode nastavena na hodnotu RetryLater a vlastnost SubStatus na hodnotu CacheServerUnavailable. Stejná hodnota vlastnosti SubStatus by byla zobrazena, pokud by účet systému Windows přidružený této žádosti nebyl povolen v clusteru mezipamětí nebo pokud by brána firewall na hostitelích mezipamětí nebyla správně nakonfigurována.

Kód chyby RetryLater se může také zobrazit, pokud jeden nebo více cílových serverů má nedostatek dostupné paměti. V takové situaci je vlastnost SubStatus nastavena na hodnotu Throttled. K omezení serverů mezipamětí může přispět několik faktorů.

  • Pomocí příkazu get-cacheconfig prostředí Windows Powershell zkontrolujte nastavení mezipaměti. Hledejte mezipaměti, jejichž typ EvictionType je nastaven na hodnotu None a nikoli na hodnotu LRU. Pokud je vyřazování zakázáno, potom cluster mezipamětí nemůže vyřazovat položky uložené v mezipaměti v případě nedostatku paměti na serveru.

  • Chcete-li vyhledat další procesy na serverech mezipamětí, které by mohly používat dostupnou paměť, použijte Správce úloh systému Windows nebo nástroj Sledování výkonu.

  • Zkontrolujte, jak aplikace využívá mezipaměť. Celkové množství potřebné paměti v clusteru mezipamětí je ovlivňováno průměrnou přenosovou rychlostí vkládaných objektů, jejich velikostí a hodnotami jejich časového limitu.

  • Zvažte použití vlastních oblastí. Oblast se nachází pouze na jednom serveru mezipamětí, položky v oblasti proto nelze šířit na všechny hostitele mezipamětí. Pokud se na jednom serveru mezipamětí nachází jedna nebo více velkých oblastí, může být daný server v omezeném stavu i v případě, že ostatní servery mezipamětí mají dostatek paměti.

ConnectionTerminated

Kód chyby ConnectionTerminated označuje, že bylo přerušeno spojení mezi aktivním klientem mezipaměti a clusterem mezipamětí. Tato chyba může mít různé příčiny, mezi které patří chyby sítě nebo vypnutí serverů mezipaměti. Podobně jako v případě vypršení časového limitu chyba ConnectionTerminated nevypovídá nic o tom, zda byla požadovaná operace provedena či nikoli. Obslužná rutina chyby by měla předpokládat obě možnosti.

Další odkazy

Koncepty

Základní informace o zpracování výjimek (ukládání do mezipaměti technologie Windows Server AppFabric)

  2011-12-05