Exceptions courantes (mise en cache de Windows Server AppFabric)

Lorsqu'une erreur se produit pendant l'appel d'une méthode d'un client de cache, celui-ci lève une instance de la classe DataCacheException. La propriété ErrorCode contient le type de l'erreur.

Chaque API de client de cache risque de rencontrer l'une des erreurs les plus courantes :

Le code de votre application doit être conçu de manière à anticiper ces erreurs. Les informations suivantes fournissent des détails supplémentaires sur chaque erreur afin de vous permettre de traiter chaque situation de manière appropriée.

Timeout

Lorsqu'un délai d'expiration est dépassé, un objet DataCacheException est généré avec le code d'erreur Timeout. Un délai d'expiration signifie que le client de cache n'a pas obtenu de réponse du serveur pour les paramètres de délai d'expiration configurés. Les raisons peuvent être multiples, comme un problème réseau entre le client et le serveur.

Si cette situation se produit, il est important de garder à l'esprit que le serveur est susceptible d'avoir correctement traité l'opération demandée. Par exemple, prenons une application dont le paramètre requestTimeout du client de cache est défini sur 10 000 millisecondes. L'application appelle l'API Add pour ajouter un nouvel élément de cache. Si l'appel dure plus de dix secondes, l'application reçoit une erreur de délai d'expiration. Toutefois, le serveur peut avoir exécuté l'opération d'ajout sans avoir pu répondre au client avant la fin du délai d'expiration. Dans le gestionnaire d'erreurs, l'application doit prendre en compte cette possibilité. Si celui-ci réessaie simplement d'ajouter l'objet, une autre exception avec le code d'erreur KeyAlreadyExists risque d'être émise.

Selon les exigences de conception de l'application, vous pouvez allonger ou raccourcir la durée du délai d'expiration du client de cache. Pour plus d'informations sur la configuration de la durée du délai d'expiration, consultez la rubrique Configuration des délais d'expiration du client de cache (mise en cache de Windows Server AppFabric).

RetryLater

Le code d'erreur RetryLater indique que le cluster de cache est dans l'incapacité temporaire d'exécuter la requête. Par exemple, cette erreur peut se produire lorsqu'un administrateur configure un cluster de cache.

Pour ce type d'erreur, il est important d'observer la valeur de la propriété SubStatus de l'objet DataCacheException. Cette propriété fournit des détails supplémentaires sur les raisons de l'échec. Par exemple, si le cluster de cache cesse de fonctionner, l'exception DataCacheException qui a été générée possédera la propriété ErrorCode définie sur RetryLater et la propriété SubStatus définie sur CacheServerUnavailable. Notez que cette même valeur SubStatus serait visible si le compte Windows associé à la demande n'était pas autorisé dans le cluster de cache ou si le pare-feu sur les hôtes de cache n'était pas correctement configuré.

Le code d'erreur RetryLater peut également survenir lorsque la mémoire disponible sur un ou plusieurs serveurs cibles est insuffisante. Dans ce cas, la propriété SubStatus est définie sur Throttled. Plusieurs facteurs peuvent contribuer à la limitation d'un serveur de cache.

  • Vérifiez les paramètres de cache à l'aide de la commande Windows PowerShell get-cacheconfig. Recherchez les caches dont la propriété EvictionType est définie sur None au lieu de LRU. Si l'éviction est désactivée, le cluster de cache ne peut pas supprimer les éléments mis en cache lorsque la mémoire du serveur est insuffisante.

  • Utilisez le Gestionnaire des tâches de Windows ou l'Analyseur de performances pour rechercher les autres processus sur les serveurs de cache qui utilisent la mémoire disponible.

  • Examinez l'utilisation du cache par l'application. Le taux moyen d'objets insérés, leur taille et leur délai d'expiration contribuent à la quantité de mémoire requise sur le cluster de cache.

  • Envisagez d'utiliser des régions personnalisées. Une région réside uniquement sur un serveur de cache unique, de sorte que les éléments d'une région ne peuvent pas être disséminés entre les hôtes de cache. Si une ou plusieurs grandes régions résident sur un serveur de cache unique, celui-ci peut être dans un état limité même si les autres serveurs de cache ont de la mémoire disponible.

ConnectionTerminated

Le code d'erreur ConnectionTerminated indique l'abandon de la connexion entre le client de cache et le cluster de cache. Plusieurs causes ont pu provoquer cette erreur, notamment des erreurs réseau ou l'arrêt des serveurs de cache. À l'instar des erreurs de délai d'expiration, l'erreur ConnectionTerminated ne reflète pas la réussite ou l'échec de l'opération demandée. Le gestionnaire d'erreurs doit anticiper ces deux options.

Voir aussi

Concepts

Vue d'ensemble de la gestion des exceptions (mise en cache de Windows Server AppFabric)

  2011-12-05