domingo, 29 de junio de 2014

Dos simples maneras de revisar si la cantidad de RAM asignada a tu Distributed Cache es la correcta

Ejecutando la siguiente consulta de powershell

Use-CacheCluster
Get-AFCacheHostStatus | % {
    $ServerName = $_.HostName
    Get-AFCacheStatistics -ComputerName $_.HostName -CachePort $_.PortNo | Add-Member -MemberType NoteProperty -Name 'ServerName' -Value $ServerName -PassThru
} | Format-List -Property *

La misma retornará las estadísticas de la cache.

image

Cómo puedes ver esta consulta te da estadísticas de la cache, las más importantes son:

Size: tamaño en bytes

Item Count: cantidad de items en cada cache

RequestCount: la cantidad de Request que hizo Sharepoint

MissCount: esta es la más importante. En el primer host, hay un 42% de miss de cache (request count y miss count), en el segundo host es de 32%.

Un misscount ocurre cuando:

  • El item no esta en la cache
  • Difiere la versión de la cache y la base de datos

Cómo recomendación si pasa de 50% deberías a empezar a monitorear en detalle la cache.

Importante: un porcentaje alto no siempre implica un problema de cache, ej: cada vez que reiniciamos nuestro servidor, habrá un alto miss de cache, porque se deberá repopular la cache. Se recomienda detener el host de forma “graceful” antes de reiniciar el host.

Stop-SPDistributedCacheServiceInstance -Graceful;

Trata de monitorear la cache por un tiempo, si reiniciar el servidor y revisa estos valores.

Otra manera de revisar el estado de nuestra cache, es utilizando contadores de performance (Cache Miss Percentage).

http://msdn.microsoft.com/en-us/library/ff637725(v=azure.10).aspx

Tip Adicional: también revisa que no haya timeouts entre los servidores de WFE y los host de cache. Una manera simple es ejecutando el siguiente comando para ver el tiempo de timeout configurado

$set = Get-SPDistributedCacheClientSetting -ContainerType DistributedDefaultCache
$set.requestTimeout
$set.channelOpenTimeOut

A continuación revisa la latencia entre tus servidores de WFE y los host cache. Ej: mediante psping (http://blogs.msdn.com/b/igorpag/archive/2013/12/15/azure-network-latency-test-and-sql-server-optimization.aspx)

Y en el caso que tengas una latencia alta configura el timeout a un valor razonable (si es un valor grande, no tiene mucho sentido la cache, lo cual deberías revisar tu infraestructura y reducir la latencia). Ej: 100 ms

$set = Get-SPDistributedCacheClientSetting -ContainerType DistributedDefaultCache
$set.requestTimeout = "100"
$set.channelOpenTimeOut = "100"
Set-SPDistributedCacheClientSetting -ContainerType DistributedDefaultCache $set

El container type puede ser cualquier de los siguientes:

  • DistributedDefaultCache

  • DistributedAccessCache

  • DistributedActivityFeedCache

  • DistributedBouncerCache

  • DistributedLogonTokenCache

  • DistributedServerToAppServerAccessTokenCache

  • DistributedSearchCache

  • DistributedSecurityTrimmingCache

  • DistributedActivityFeedLMTCache

  • DistributedViewStateCache

No hay comentarios:

Publicar un comentario