Compartir vía


Expulsión

Los clústeres de caché de Microsoft AppFabric 1.1 para Windows Server usan la expulsión para controlar la cantidad de memoria que usan los Servicios de almacenamiento en caché en los hosts de caché. La expulsión tiene lugar durante dos escenarios:

  • La memoria física disponible en el servidor es críticamente baja.

  • El uso de memoria en el Servicio de almacenamiento en caché supera el límite máximo para el host de caché.

La expulsión no tiene por qué ser un problema. Si tiene un volumen inusualmente elevado de actividad en el clúster de caché, la expulsión puede quitar los elementos usados hace más tiempo e impedir que problemas de memoria provoquen limitaciones. Para obtener más información acerca de la limitación, consulte Límite. No obstante, las ejecuciones de expulsión habituales indican falta de memoria o un problema de configuración con el host de caché o con una o varias memorias caché.

Para obtener más información sobre la expulsión, vea Caducidad y expulsión.

Diagnóstico de problemas de expulsión

Desde un punto de vista de la aplicación, la expulsión hace que las aplicaciones no puedan encontrar elementos en la memoria caché que, de otro modo, estarían en ella. Esto significa que las aplicaciones deben volver a rellenar estos elementos, lo cual podría afectar adversamente a su rendimiento.

Para evaluar la frecuencia de ejecuciones de la expulsión, puede usar el Monitor de rendimiento para registrar dos contadores o cuatro contadores.

Contador Descripción

Almacenamiento en caché de AppFabric:Host | Total de ejecuciones de expulsión

El número total de ejecuciones de expulsión desde que se inició el servicio de almacenamiento en caché de AppFabric.

Almacenamiento en caché de AppFabric:Host | Total de bytes de tamaño de datos

El tamaño total de datos almacenados en caché en bytes.

Almacenamiento en caché de AppFabric:Host | Total de objetos expulsados

El número de objetos expulsados desde que se inició el servicio de almacenamiento en caché de Almacenamiento en caché de AppFabric.

Almacenamiento en caché de AppFabric:Host | Total de memoria desalojada

La cantidad de memoria en bytes expulsados desde que se inició el servicio de Almacenamiento en caché de AppFabric.

Debido a que los contadores de expulsión son acumulables desde el inicio del Servicio de almacenamiento en caché, debe observar cambios en este valor con el tiempo.

También hay dos eventos relacionados con ejecuciones de expulsión. Estos eventos tienen lugar en el registro Operativo de AppFabric.

Id. de evento Descripción

118

Memoria disponible del servicio baja.

115

El servicio ha pasado el estado limitado.

El evento 118 indica que el Servicio de almacenamiento en caché ha superado el nivel de memoria de límite máximo. Esto desencadena una ejecución de expulsión para tratar de devolver los niveles de memoria al nivel de memoria de límite mínimo. El evento 115 indica que el servidor tiene poca memoria y ha pasado al estado limitado. Esto desencadena una ejecución de expulsión para tratar de resolver el estado limitado. Para obtener más información acerca de la limitación, consulte Límite.

Nota

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

Resolución de problemas de expulsión

Si la ejecución de expulsión tiene lugar porque el servidor tiene poca memoria, es probable que el servidor también se encuentre en estado limitado. Para obtener más información acerca de cómo resolver la limitación, consulte Límite.

Si las ejecuciones de expulsión tienen lugar cuando el servidor no está limitado, revise los parámetros de configuración con el comando Get-CacheHostConfig de Windows PowerShell. Por ejemplo, considere la siguiente configuración del host de caché.

Get-CacheHostConfig -HostName CacheServer1 -CachePort 22233

HostName        : CacheServer1
ClusterPort     : 22234
CachePort       : 22233
ArbitrationPort : 22235
ReplicationPort : 22236
Size            : 100 MB
ServiceName     : AppFabricCachingService
HighWatermark   : 90%
LowWatermark    : 80%
IsLeadHost      : False

En el ejemplo anterior, el tamaño de memoria reservada para el servicio de almacenamiento en caché en CacheServer1 es de solo 100 MB. El nivel de límite máximo es 90%. Esto significa que, cuando la memoria usada en este host de caché llegue al noventa por ciento de 100 megabytes, el servicio de almacenamiento en caché tendrá poca memoria y se desencadenará una expulsión. En este ejemplo, el problema es que la memoria para el servicio de almacenamiento en caché se estableció en un valor inusualmente bajo. La solución consiste en aumentar la cantidad de memoria de almacenamiento en caché en el host de caché de CacheServer1. El siguiente ejemplo detiene el clúster de caché y cambia el tamaño a 1000 MB.

Stop-CacheCluster
Set-CacheHostConfig -CacheSize 1000 -HostName CSD1516217 -CachePort 22233
WarningAdvertencia
No debe aumentar la cantidad de memoria disponible para el servicio de almacenamiento en caché a menos que también tenga la memoria física disponible para admitir el aumento.

Nota

El CacheSize se combina con HighWatermark para determinar cuándo desencadenar ejecuciones de expulsión. No garantiza que el caché de memoria permanecerá en dicho nivel o por debajo del mismo. Si sesea un ejemplo, vea el tratamiento de las memorias caché sin expulsión en la próxima sección.

Consideraciones sobre la memoria caché sin expulsión

De manera predeterminada, las nuevas memorias caché habilitan la expulsión; no obstante, se puede crear una memoria caché que no lo haga. Si la expulsión no está habilitada para una memoria caché, las ejecuciones de expulsión no quitarán ningún elemento de dicha memoria caché. Esto supone varias consecuencias:

  • Si la presión de memoria está provocada por una memoria caché sin expulsión, las ejecuciones de expulsión no solucionarán el problema. En tal caso, las ejecuciones de expulsión tendrán lugar repetidamente.

  • Si la presión de memoria está provocada por una memoria caché sin expulsión, las ejecuciones de expulsión quitarán elementos de otras memorias caché que habiliten la expulsión.

Para determinar qué memoria caché habilita la expulsión, puede usar el comando Get-CacheConfig de Windows PowerShell. Se puede usar un script sencillo para mostrar cada memoria caché, su configuración de expulsión y su tamaño.

$cache = Get-Cache
foreach($cache in $caches) { Write-Host $cache.CacheName (Get-CacheConfig $cache.CacheName).EvictionType (Get-CacheStatistics $cache.CacheName).Size }

En el ejemplo siguiente se muestra la salida de ejemplo de este script.

Cache1 None 20481960
Cache2 LRU 20706360
default LRU 4099920

En la salida del ejemplo anterior, se puede ver que Cache1 ha deshabilitado la expulsión (None en lugar de LRU) y que actualmente tiene un tamaño de 20481960 bytes.

Vea también

Conceptos

Solución de problemas del servidor

  2012-03-05