Risoluzione dei problemi relativi alla rimozione (Memorizzazione nella cache di Windows Server AppFabric)

Un cluster di cache di Windows Server AppFabric utilizza la rimozione per controllare la quantità di memoria utilizzata dal Servizio di memorizzazione nella cache su un host di cache. La rimozione avviene in due scenari:

  • La memoria fisica disponibile sul server è insufficiente.

  • L'utilizzo di memoria del Servizio di memorizzazione nella cache supera il limite massimo per l'host di cache.

La rimozione non rappresenta necessariamente un problema. Se il volume di attività sul cluster di cache è insolitamente elevato, la rimozione può eliminare gli elementi utilizzati meno di recente ed evitare che i problemi di memoria causino la limitazione. Per ulteriori informazioni sulla limitazione, vedere Risoluzione dei problemi relativi alla limitazione (Memorizzazione nella cache di Windows Server AppFabric). Esecuzioni di rimozione regolari potrebbero tuttavia indicare un'insufficienza di memoria o problemi di configurazione dell'host della cache o di una o più cache.

Per ulteriori informazioni sulla rimozione, vedere Scadenza e rimozione.

Diagnosticare i problemi di rimozione

Dal punto di vista di un'applicazione, la rimozione fa in modo che le applicazioni non trovino nella cache elementi che altrimenti sarebbero presenti. Ciò significa che le applicazioni devono ripopolare tali elementi, operazione che potrebbe incidere negativamente sulle prestazioni dell'applicazione.

Per valutare la frequenza delle esecuzioni di rimozione, è possibile utilizzare Performance Monitor per registrare due contatori su quattro.

Contatore Descrizione

AppFabric Caching:Host | Totale esecuzioni di rimozione

Il numero totale di esecuzioni di rimozione a partire dall'avvio del Servizio di memorizzazione nella cache di AppFabric.

AppFabric Caching:Host | Byte totali dimensione dati

La dimensione totale, in byte, dei dati memorizzati nella cache.

AppFabric Caching:Host | Totale oggetti rimossi

Il numero totale di oggetti rimossi a partire dall'avvio del Servizio di memorizzazione nella cache di AppFabric.

AppFabric Caching:Host | Memoria totale rimossa

La quantità di memoria rimossa, in byte, a partire dall'avvio del Servizio di memorizzazione nella cache di AppFabric.

Dal momento che i contatori di rimozione sono cumulativi con inizio dall'avvio del Servizio di memorizzazione nella cache, si dovranno notare cambiamenti di questo valore con il passare del tempo.

Esistono inoltre due eventi collegati alle esecuzioni di rimozione. Tali eventi si verificano nel log Operativo di AppFabric.

ID evento Descrizione

118

Memoria disponibile insufficiente per il servizio.

115

Il servizio è entrato nello stato di limitazione.

L'evento 118 indica che il Servizio di memorizzazione nella cache ha raggiunto il limite massimo del livello di memoria. Questa condizione avvia un'esecuzione di rimozione per tentare di riportate i livelli di memoria al limite minimo. L'evento 115 indica che la memoria del server è insufficiente ed è attivo lo stato di limitazione. Questa condizione avvia un'esecuzione di rimozione per tentare di risolvere lo stato di limitazione. Per ulteriori informazioni sulla limitazione, vedere Risoluzione dei problemi relativi alla limitazione (Memorizzazione nella cache di Windows Server AppFabric).

Nota

Per ulteriori informazioni sugli strumenti descritti, vedere Strumenti di monitoraggio dello stato (Memorizzazione nella cache di Windows Server AppFabric).

Risolvere i problemi di rimozione

Se le esecuzioni di rimozione si verificano perché nel server non è presente memoria disponibile sufficiente, è probabile che anche il server si trovi nello stato di limitazione. Per ulteriori informazioni sulla risoluzione della limitazione, vedere Risoluzione dei problemi relativi alla limitazione (Memorizzazione nella cache di Windows Server AppFabric).

Se le esecuzioni di rimozione si verificano quando il server non si trova nello stato di limitazione, analizzare le impostazioni di configurazione dell'host della cache con il comando Get-CacheHostConfig di Windows PowerShell. Ad esempio, si prendano in considerazione le seguenti impostazioni dell'host della cache.

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

Nell'esempio precedente, le dimensioni della memoria riservata per il Servizio di memorizzazione nella cache in CacheServer1 erano di soli 100 MB. Il livello del limite massimo è 90%. Ciò significa che quando la memoria utilizzata su questo host della cache raggiunge il 90% dei 100 MB, non sarà disponibile memoria sufficiente per il Servizio di memorizzazione nella cache e verrà avviata un'operazione di rimozione. In questo esempio il problema è l'impostazione insolitamente bassa della memoria disponibile per il Servizio di memorizzazione nella cache. La soluzione consiste nell'aumentare la quantità di memoria per la memorizzazione nella cache nell'host della cache CacheServer1. Nell'esempio seguente il cluster di cache viene interrotto e le dimensioni vengono aumentate a 1000 MB.

Stop-CacheCluster
Set-CacheHostConfig -CacheSize 1000 -HostName CSD1516217 -CachePort 22233

Avviso

Non aumentare la quantità di memoria disponibile per il Servizio di memorizzazione nella cache a meno che non si disponga anche della memoria fisica per supportare l'aumento.

Nota

Il valore CacheSize viene associato al valore HighWatermark per determinare quando avviare le esecuzioni di rimozione. Non garantisce che la memoria della cache si mantenga su tale livello o al di sotto di esso. Per un esempio, vedere la discussione sulle cache senza rimozione nella sezione successiva.

Considerazioni sulle cache senza rimozione

Per impostazione predefinita, le nuove cache abilitano la rimozione; è tuttavia possibile creare una cache che non abiliti la rimozione. Se per una cache non viene abilitata la rimozione, le esecuzioni di rimozione non elimineranno alcun elemento da tale cache. Ciò presenta diverse implicazioni:

  • Se la pressione sulla memoria è causata da una cache senza rimozione, le esecuzioni di rimozione non risolveranno il problema. In questo caso le esecuzioni di rimozione verranno eseguite ripetutamente.

  • Se la pressione sulla memoria è causata da una cache senza rimozione, le esecuzioni di rimozione rimuoveranno elementi da altre cache in cui la rimozione è abilitata.

Per determinare per quali cache è abilitata la rimozione, utilizzare il comando Get-CacheConfig di Windows PowerShell. È possibile utilizzare uno script semplice per visualizzare le singole cache, le relative impostazioni di rimozione e le dimensioni.

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

Di seguito viene illustrato un output di esempio dello script.

Cache1 None 20481960
Cache2 LRU 20706360
default LRU 4099920

Nell'output di esempio precedente, si vede che per la Cache1 la rimozione è disabilitata (None invece di LRU) e che la sua dimensione attuale è di 20481960 byte.

Vedere anche

Concetti

Risoluzione dei problemi del server (Memorizzazione nella cache di Windows Server AppFabric)

  2011-12-05