Excepciones comunes
Cuando se produce un error durante la llamada al método de cliente de caché, este último produce una instancia de la clase DataCacheException. La propiedad ErrorCode contiene el tipo de error.
Cada API de cliente de caché puede experimentar uno de varios errores comunes:
El código de aplicación debe estar diseñado para anticiparse a estos errores. La información siguiente proporciona detalles adicionales sobre cada error t puede ayudarle a controlar correctamente cada situación.
Timeout
Cuando se produce un tiempo de espera, se genera un objeto DataCacheException con el código de error Timeout. Un tiempo de espera indica que el cliente de caché no obtuvo respuesta del servidor dentro de los parámetros de tiempo de espera configurados. Esta situación puede deberse a diversas causas, por ejemplo, problemas de red entre el cliente y el servidor.
Aunque se produzca un error de tiempo de espera, es importante tener en cuenta que el servidor puede haber procesado satisfactoriamente la operación solicitada. Por ejemplo, considere una aplicación que tiene un cliente de caché con requestTimeout
establecido en 10.000 milisegundos. La aplicación llama a la API Agregar para agregar un elemento de caché nuevo. Si la llamada tarda más de diez segundos, la aplicación recibe un error de tiempo de espera. Sin embargo, el servidor podría haber completado la operación de agregar y luego no haber podido responder al cliente antes de que transcurriera el tiempo de espera. En el controlador de errores, la aplicación debe considerar esta posibilidad. Si el controlador de errores simplemente intenta agregar el objeto de nuevo, puede dar lugar a otra excepción con el código de error KeyAlreadyExists.
Según los requisitos de diseño de la aplicación, puede ampliar o reducir la duración de los tiempos de espera de cliente de caché. Para obtener más información acerca de cómo configurar la duración de tiempo de espera, vea Configuración de tiempos de espera de clientes de caché.
RetryLater
El código de error RetryLater indica que el clúster de caché no está disponible temporalmente para completar una solicitud. Por ejemplo, este error puede experimentarse si un administrador está configurando el clúster de caché.
Con este tipo de error, es importante observar el valor de la propiedad SubStatus del objeto DataCacheException. Esta propiedad proporciona detalles adicionales que explican la razón del error. Por ejemplo, si el clúster de caché se detiene, el objeto DataCacheException producido tendrá la propiedad ErrorCode establecida en RetryLater y la propiedad SubStatus establecida en CacheServerUnavailable. Tenga en cuenta que aparecerá este mismo valor de SubStatus si la cuenta de Windows asociada a la solicitud no estaba permitida en el clúster de caché o si el firewall de los hosts de caché no se configuraron correctamente.
El código de error RetryLater también puede producirse cuando uno o varios de los servidores de destino tienen poca memoria disponible. En esta situación, la propiedad SubStatus se establece en Throttled. Hay varios factores que pueden contribuir a un servidor de caché limitado.
Compruebe las opciones de caché mediante el comando
get-cacheconfig
de Windows Powershell. Busque las memorias caché que tienenEvictionType
establecido enNone
en lugar deLRU
. Si la expulsión está deshabilitada, el clúster de caché no puede expulsar los elementos en caché cuando el servidor tiene poca memoria.Use el Administrador de tareas de Windows o el Monitor de rendimiento para buscar otros procesos en los servidores de caché que puedan estar usando la memoria disponible.
Examine el uso que la aplicación hace de la memoria caché. La frecuencia promedio de la inserción de objetos, su tamaño y sus valores de tiempo de espera contribuyen a la cantidad total de memoria necesaria en el clúster de caché.
Considere el uso de regiones personalizadas. Una región reside en un único servidor de caché, por lo que los elementos de una región no se pueden diseminar por todos los hosts de caché. Si una o varias regiones grandes residen en un único servidor de caché, ese servidor podría estar en estado limitado aunque los otros servidores de caché tengan memoria disponible.
ConnectionTerminated
El código de error ConnectionTerminated indica que se anuló la conexión entre el cliente de caché y el clúster de caché. Existe una variedad de causas posibles para este error, incluidos los errores de red o el cierre de los servidores de caché. Al igual que con los errores de tiempo de espera, el error ConnectionTerminated no refleja el éxito o el error de la operación solicitada. El controlador de errores debe prever ambas posibilidades.
Vea también
Conceptos
Introducción al control de excepciones
2012-03-05