Eccezioni comuni

Quando si verifica un errore durante una chiamata del client della cache, il client della cache genera un'istanza della classe DataCacheException. La proprietà ErrorCode contiene il tipo di errore.

In ogni API del client della cache è possibile che si verifichi uno o più dei seguenti errori comuni:

Il codice dell'applicazione deve essere progettato in modo da anticipare questi errori. Le informazioni seguenti forniscono ulteriori dettagli sui singoli errori, per consentire di gestire in modo appropriato le varie situazioni possibili.

Timeout

Quando si verifica un timeout, viene generato un oggetto DataCacheException con il codice di errore Timeout. Un timeout indica che il client della cache non ha ottenuto alcuna risposta dal server nei limiti di tempo stabiliti dalle impostazioni di timeout configurate. Questa situazione può verificarsi per diverse cause, ad esempio problemi di rete tra il client e il server.

È importante sottolineare che, anche se si verifica un errore di timeout, il server potrebbe avere comunque elaborato correttamente l'operazione richiesta. Si consideri, ad esempio, un'applicazione con un client della cache con requestTimeout impostato su 10000 millisecondi. L'applicazione chiama l'API Aggiungi per aggiungere un nuovo elemento della cache. Se la chiamata impiega più di dieci secondi, l'applicazione riceve un errore di timeout. Il server potrebbe avere, tuttavia, completato l'operazione di aggiunta, trovandosi quindi impossibilitato a rispondere al client prima del timeout. Nel gestore errori, le applicazioni dovrebbero tenere in considerazione questa possibilità. Se il gestore errori si limita a tentare di aggiungere nuovamente l'oggetto, questo potrebbe generare un'altra eccezione con il codice errore KeyAlreadyExists.

A seconda dei requisiti di progettazione dell'applicazione, è possibile allungare o abbreviare la durata dei timeout del client della cache. Per ulteriori informazioni su come configurare la durata del timeout, vedere Configurazione dei timeout del client della cache.

RetryLater

Il codice di errore RetryLater indica che il cluster di cache non è temporaneamente in grado di completare una richiesta. Questo errore può verificarsi, ad esempio, durante la configurazione del cluster di cache da parte di un amministratore.

Con questo tipo di errore è importante osservare il valore della proprietà SubStatus dell'oggetto DataCacheException. Questa proprietà fornisce ulteriori dettagli che spiegano i motivi dell'errore. Ad esempio, se si arresta il cluster di cache, nella DataCacheException generata la proprietà ErrorCode è impostata su RetryLater e SubStatus su CacheServerUnavailable. Questo stesso valore SubStatus viene visualizzato se l'account Windows associato alla richiesta non è consentito nel cluster della cache o se il firewall negli host della cache non sono configurati correttamente.

Il codice di errore RetryLater può essere visualizzato anche quando uno o più server di destinazione non contengono memoria disponibile sufficiente. In tale situazione, la proprietà SubStatus viene impostata su Throttled. Esistono diversi fattori che possono determinare a limitare un server della cache.

  • Controllare le impostazioni della cache con il comando get-cacheconfig di Windows PowerShell. Cercare le cache con EvictionType impostato su None anziché su LRU. Se l'eliminazione è disabilitata, il cluster della cache non è in grado di eliminare gli elementi memorizzati nella cache quando nel server non è presente memoria disponibile sufficiente.

  • Utilizzare Gestione attività Windows o Monitoraggio prestazioni per verificare se altri processi nei server della cache stanno utilizzando la memoria disponibile.

  • Esaminare l'utilizzo della cache da parte dell'applicazione. La percentuale media di oggetti inseriti, la relativa dimensione e i relativi valori di timeout contribuiscono alla quantità totale di memoria richiesta nel cluster della cache.

  • Valutare l'utilizzo di aree personalizzate. Un'area risiede in un solo server della cache, pertanto gli elementi di un'area non possono essere distribuiti in tutti gli host della cache. Se una o più aree di grandi dimensioni risiedono in un singolo server della cache, tale server potrebbe trovarsi in uno stato limitato anche se in altri server della cache è presente memoria disponibile.

ConnectionTerminated

Il codice di errore ConnectionTerminated indica che la connessione tra il client della cache e il cluster di cache si è interrotta. Esistono diverse possibili cause per questo problema, inclusi errori di rete o arresto dei server di cache. Come nel caso degli errori di timeout, l'errore ConnectionTerminated non fornisce indicazioni sull'esito positivo o negativo dell'operazione richiesta. Il gestore errori deve prevedere entrambe le possibilità.

Vedere anche

Concetti

Panoramica della gestione delle eccezioni

  2012-03-05