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

Quando esaurisce la memoria fisica, l'host della cache di Windows Server AppFabric può entrare in uno stato denominato limitato. Il cluster di cache non scriverà dati in nessuna cache residente su un host della cache limitato finché non verrà aumentato il livello di memoria fisica disponibile per risolvere lo stato di limitazione.

Diagnosticare i sintomi di limitazione

Il sintomo più palese della limitazione deriva dalle applicazioni: i tentativi di scrivere nella cache genereranno errori di DataCacheException. Per ulteriori informazioni sull'eccezione, vedere RetryLater (Throttled) (Memorizzazione nella cache di Windows Server AppFabric). Per confermare che la limitazione è diventata un problema sul cluster di cache, è possibile utilizzare uno o più tra i test elencati di seguito.

  • Utilizzare il comando Get-CacheClusterHealth di Windows PowerShell. Verificare se sugli host della cache vi sono cache con percentuali comprese nella categoria Throttled.

  • Abilitare il registro operativo nel Visualizzatore eventi su ogni host della cache e cercare l'Evento 116 che specifica "Servizio in modalità limitata".

  • Utilizzare Performance Monitor per tenere traccia della Memoria | MByte disponibili su ciascun host della cache. Quando la percentuale di memoria fisica totale scende sotto il 15%, l'host della cache entra in modalità limitata. La limitazione si verifica anche quando la memoria dell'host della cache rientra nel 4% dell'impostazione di CacheSize.

Si noti che un server in modalità limitata mostrerà anche un numero maggiore di esecuzioni di rimozione. Per ulteriori informazioni sui problemi di rimozione, vedere Risoluzione dei problemi relativi alla rimozione (Memorizzazione nella cache di Windows Server AppFabric).

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

Risoluzione della limitazione

Prima di decidere su una soluzione alla limitazione, è importante capire il motivo per cui è insorto il problema. Nella tabella seguente sono elencate le possibili cause con le soluzioni consigliate.

 

Causa della limitazione Descrizione e soluzione

Altri processi utilizzano una quantità di memoria eccessiva.

È possibile che altri processi sull'host della cache stiano utilizzando grandi quantità di memoria. Ciò potrebbe risultare in condizioni di memoria insufficiente, a seconda della quantità di memoria riservata per il Servizio di memorizzazione nella cache. È possibile rilevare questo problema utilizzando il contatore Processo | Byte privati in Performance Monitor per visualizzare la memoria utilizzata da ciascun processo. Se il Servizio di memorizzazione nella cache, DistributedCacheService.exe, non è la causa principale di consumo della memoria, cercare altri processi che consumano un'alta percentuale della memoria. Una soluzione consiste nello spostare i processi problematici su altri server che non siano host della cache. È anche possibile aggiungere ulteriore memoria fisica alla macchina.

noteNota
Benché sia possibile utilizzare Set-CacheHostConfig per impostare le dimensioni della cache di un host, tale limite determina solo quando attivare le esecuzioni di rimozione, ma non garantisce che la memoria del Servizio di memorizzazione nella cache si mantenga a quel livello. Per ulteriori informazioni, vedere Risoluzione dei problemi relativi alla rimozione (Memorizzazione nella cache di Windows Server AppFabric).

Il Servizio di memorizzazione nella cache utilizza una quantità di memoria eccessiva

Questo problema può essere identificato utilizzando Gestione attività o Performance Monitor per visualizzare la memoria utilizzata dal Servizio di memorizzazione nella cache, DistributedCacheService.exe. È possibile che per una o più cache siano state disabilitate la scadenza e/o la rimozione. Ciò può contribuire a una condizione di memoria insufficiente. Per individuare le cache nel cluster utilizzare il comando Get-Cache -MaxRegions 0 di Windows PowerShell. È possibile esaminare queste impostazioni per ogni cache con il comando Get-CacheConfig. Per ulteriori informazioni su scadenza e rimozione, vedere Scadenza e rimozione. È inoltre possibile che la domanda sul cluster di cache superi la sua capacità. È possibile aggiungere ulteriore memoria fisica agli host della cache oppure ulteriori host della cache al cluster.

Memoria .NET non raccolta.

Benché il processo di Garbage Collection nella memoria .NET avvenga automaticamente, a volte è possibile, tra una raccolta e l'altra, che la memoria non raccolta contribuisca a condizioni di memoria insufficiente sull'host della cache. In questo scenario, utilizzare il comando Invoke-CacheGC di Windows PowerShell sull'host della cache limitato per forzare un ciclo completo di Garbage Collection. Se le condizioni di memoria insufficiente persistono, la memoria .NET non raccolta non era il fattore determinante.

Regioni personalizzate.

Un'applicazione può creare regioni personalizzate con il metodo CreateRegion. Un'area esiste sempre su un solo host di cache. Se l'applicazione inserisce grandi quantità di dati in un'unica regione, è possibile che un host della cache si trovi in uno stato limitato anche se in altri host della cache è presente memoria disponibile. Una soluzione consiste nell'aggiungere ulteriore memoria a ciascun host della cache nel cluster, poiché non è possibile stabilire con sicurezza quale host della cache verrà selezionato per la regione personalizzata. L'altra soluzione consiste nel riprogettare l'applicazione in modo che archivi una quantità minore di dati nella regione o che crei e utilizzi più regioni.

Tag di tabelle hash

Diversi metodi di memorizzazione nella cache di AppFabric consentono di memorizzare elementi nella cache con tag associati. L'utilizzo di tag consente di creare tabelle hash interne che non verranno rimosse in un secondo momento, neanche dopo aver eliminato gli elementi associati. Non si tratta di una perdita di memoria, ma contribuisce all'utilizzo di memoria complessivo da parte del Servizio di memorizzazione nella cache di AppFabric. Se un'applicazione utilizza tag che cambiano nel tempo, ciò potrebbe contribuire alla pressione sulla memoria.

Vedere anche

  2011-12-05
Mostra: