Compartir vía


Límite

Cuando se va agotando la memoria física en un host de caché de Microsoft AppFabric 1.1 para Windows Server, el host de caché puede pasar a un estado denominado limitación. El clúster de caché no escribirá datos en ninguna caché que resida en un host de caché limitado hasta que aumente la memoria física disponible para resolver el estado limitado.

Diagnóstico de la limitación

El síntoma más obvio de la limitación provendrá de las aplicaciones. Cuando se intente escribir en la memoria caché se generarán errores DataCacheException. Para obtener más información acerca de la excepción, consulte RetryLater (Limitado). Para confirmar que la limitación ha tenido lugar en el clúster de caché, puede usar una o varias de las siguientes pruebas.

  • Use el comando Get-CacheClusterHealth de Windows PowerShell. Compruebe si algunos de los hosts de caché tienen cachés con porcentajes en la categoría Throttled.

  • Habilite el registro Operativo en el Visor de eventos en cada host de caché y busque el Evento 116, que indica "El servicio en estado limitado".

  • Use el Monitor de rendimiento para realizar un seguimiento de Memoria | MBytes disponibles en cada host de caché. Cuando pasa a ser menos del 15% de la memoria física total, el host de caché entra en el estado limitado. La limitación también tiene lugar cuando la memoria del host de caché pasa al 4% del valor de CacheSize.

Tenga en cuenta que un servidor en estado limitado también mostrará más ejecuciones de expulsión. Para obtener más información acerca de los problemas de expulsión, consulte Expulsión.

Nota

Para obtener más información acerca de las herramientas descritas anteriormente, consulte Herramientas de seguimiento de estado (Almacenamiento en caché de AppFabric 1.1).

Resolución de la limitación

Antes de decidir cómo solucionar la limitación, es importante conocer mejor por qué ha tenido lugar. En la tabla siguiente se proporciona una posible causa y la solución recomendada.

Causa de la limitación Descripción y resolución

Otros procesos usan demasiada memoria.

Es posible que otros procesos del host de caché utilicen grandes cantidades de memoria. Esto puede provocar estados de baja memoria en función de la cantidad de memoria reservada para el servicio de almacenamiento en caché. Puede detectar este problema usando el contador Proceso | Bytes privados en el Monitor de rendimiento para ver la memoria usada para cada proceso. Si el Servicio de almacenamiento en caché, DistributedCacheService.exe, no es el proceso que más memoria consume, busque otros que consuman un elevado porcentaje de memoria. Una solución es mover los procesos problemáticos a otros servidores que no sean hosts de caché. También se puede agregar más memoria física al equipo.

Nota

Aunque puede usar Set-CacheHostConfig para definir el tamaño de caché para un host de caché, este límite solo determina cuándo desencadenar ejecuciones de expulsión. No garantiza que la memoria del servicio de almacenamiento en caché permanecerá en dicho nivel. Para obtener más información, consulte Expulsión.

El servicio de almacenamiento en caché usa demasiada memoria.

Este problema puede identificarse usando el Administrador de tareas o el Monitor de rendimiento para ver la memoria usada por el servicio de almacenamiento en caché, DistributedCacheService.exe. Es posible que una o varias de las memorias caché hayan deshabilitado la expiración y/o expulsión. Esto puede contribuir al estado de baja memoria. Puede encontrar las memorias cachés en el clúster de caché mediante el comando Get-Cache -MaxRegions 0 de Windows PowerShell. Puede ver la configuración de cada caché con el comando Get-CacheConfig. Para obtener más información sobre la caducidad y expulsión, vea Caducidad y expulsión. También es posible que las demandas del clúster de caché superen la capacidad. Puede agregar más memoria física a los hosts de caché o agregar hosts de caché adicionales al clúster.

Memoria de .NET sin recolectar.

Aunque la recolección de elementos no utilizados de .NET se realiza automáticamente, en ocasiones puede suceder que la memoria sin recolectar entre una recolección y otra contribuya a los estados de baja memoria del host de caché. En este escenario, use el comando Invoke-CacheGC de Windows PowerShell en el host de caché limitado para forzar un ciclo completo de recolección de elementos no utilizados. Si continúan los estados de baja memoria, entonces es que la memoria de .NET sin recolectar no era un factor importante.

Regiones personalizadas.

La aplicación puede crear regiones personalizadas con el método CreateRegion. Estas regiones siempre existen como unidad en un host de caché específico. Si la aplicación coloca grandes cantidades de datos en una única región, es posible que un host de caché quede limitado aunque haya memoria disponible en otros hosts de caché. Una solución es agregar más memoria a cada host de caché del clúster, pues no podrá estar seguro de qué host de caché será elegido para la región personalizada. La otra solución es rediseñar la aplicación para que almacene menos datos en la región o cree y use varias regiones.

Tablas hash de etiquetas

Diversos métodos de Almacenamiento en caché de AppFabric le permiten almacenar elementos en la memoria caché con etiquetas asociadas. El uso de etiquetas crea tablas hash internas que no se quitan más tarde aunque se quiten los elementos asociados. No se trata de una fuga de memoria, pero contribuye al consumo total de memoria por parte del servicio de Almacenamiento en caché de AppFabric. Si una aplicación usa etiquetas que cambian con el tiempo, esto podría contribuir a reducir la memoria.

Vea también

Conceptos

Solución de problemas del servidor

  2012-03-05