Gestire il servizio cache distribuita in SharePoint Server

 

**Si applica a:**SharePoint Server 2013, SharePoint Server 2016

**Ultima modifica dell'argomento:**2017-12-05

Riepilogo: informazioni su come configurare e gestire il servizio cache distribuita in SharePoint Server 2013 e SharePoint Server 2016

Per eseguire attività di gestione e operative sul servizio cache distribuita in SharePoint Server, un amministratore deve eseguire procedure specifiche in un ordine prestabilito. In questo articolo viene descritto come eseguire varia attività di gestione e operative sul servizio cache distribuita.

Importante

È possibile che il servizio cache distribuita si ritrovi in uno stato non funzionante o irreversibile se le procedure descritte in questo articolo non vengono eseguite con precisione. In casi estremi, potrebbe risultare necessario ricreare la server farm. Windows Server AppFabric rappresenta un prerequisito per la cache distribuita. Non amministrare il Servizio di memorizzazione nella cache di AppFabric dalla finestra Servizi in Strumenti di amministrazione nel Pannello di controllo. Non utilizzare le applicazioni nella cartella denominata AppFabric per Windows Server nel menu Start.

Importante

Non usare nomi di account di servizio che contengono il simbolo $.

Contenuto dell'articolo:

  • Avviare e arrestare il servizio cache distribuita

  • Modificare l'allocazione di memoria del servizio cache distribuita

  • Aggiungere o rimuovere un server in un cluster di cache distribuita

  • Eseguire un arresto normale del servizio di cache distribuita tramite uno script di PowerShell

  • Modificare l'account di servizio

  • Perfezionare il servizio cache distribuita tramite uno script di PowerShell

  • Ripristinare un host della cache

Avviare e arrestare il servizio cache distribuita

Un amministratore che esegue attività di manutenzione e operative potrebbe avere la necessità di avviare e arrestare il servizio cache distribuita. Tra le attività necessarie vi sono le seguenti:

  • Modifica della configurazione predefinita della server farm al momento dell'installazione. Il servizio cache distribuita viene avviato in tutti i server SharePoint al momento dell'installazione. Un amministratore potrebbe avere la necessità di arrestare il servizio cache distribuita in alcuni server nella farm.

  • Aggiornamento del server quando è presente un solo server di cache distribuita nella farm di SharePoint Server.

L'arresto della cache causa una perdita di dati parziale. La cache dei feed dipende dal servizio cache distribuita. I tag e le attività sui documenti vengono salvati solo nella cache dei feed e non sono salvati in modo permanente nei database del contenuto. Quando il servizio cache distribuita viene arrestato, i tag e le attività sui documenti vanno perduti. All'avvio del servizio cache distribuita, il ripopolamento della cache dei feed viene eseguito al momento dell'esecuzione del processo timer corrispondente. Un modo per conservare tag e attività sui documenti consiste nell'utilizzare il metodo descritto in Eseguire un arresto normale del servizio di cache distribuita tramite uno script di PowerShell più avanti in questo articolo. Quando si utilizza il metodo di arresto normale del servizio cache distribuita, tutti i dati della cache vengono spostati da un server a un altro prima dell'arresto del servizio cache distribuita.

Nota

Se gli host della cache fanno parte di un cluster di cache, non avviare o arrestare il servizio cache distribuita come descritto qui, ma vedere Aggiungere o rimuovere un server in un cluster di cache distribuita più avanti in questo articolo.

Per avviare e arrestare il servizio cache distribuita tramite Amministrazione centrale

  1. In Amministrazione centrale fare clic su Gestione applicazioni.

  2. In Applicazioni di servizio fare clic su Gestisci servizi nel server.

  3. Nella pagina Servizi nel server individuare il servizio Cache distribuita.

  4. Se il servizio cache distribuita è avviato e si desidera arrestarlo, fare clic su Arresta in Azione. Se il servizio cache distribuita è arrestato e si desidera avviarlo, fare clic su Avvia in Azione.

Per avviare il servizio cache distribuita tramite SharePoint 2016 Management Shell

Al prompt dei comandi di SharePoint Management Shell eseguire il comando seguente:

$instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
$serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername}
$serviceInstance.Provision()

Per arrestare il servizio cache distribuita tramite SharePoint 2016 Management Shell

Al prompt dei comandi di SharePoint Management Shell eseguire il comando seguente:

$instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
$serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername}
$serviceInstance.Unprovision()

Modificare l'allocazione di memoria del servizio cache distribuita

Al momento dell'installazione di SharePoint Server, al servizio cache distribuita viene assegnato il 10% della memoria fisica totale del server. Il servizio cache distribuita utilizza la metà della memoria allocata per l'archiviazione dei dati (nota anche come dimensioni della cache) e l'altra metà per l'overhead di gestione della memoria. Con l'aumento dei dati memorizzati nella cache, il servizio cache distribuita utilizza l'intero 10% della memoria allocata.

Negli scenari seguenti vengono descritti i casi in cui è consigliabile aumentare l'allocazione di memoria per il servizio cache distribuita:

  • Aggiunta di memoria fisica al server. Poiché il servizio cache distribuita non ricalcola automaticamente l'allocazione di memoria del 10%, quando si aumenta la memoria fisica totale del server, è necessario aumentare manualmente l'allocazione di memoria del servizio cache distribuita.

  • Disponibilità di un server di cache distribuita dedicato nella server farm. Utilizzare il metodo seguente per calcolare la quantità di memoria che è possibile assegnare al servizio cache distribuita:

    1. Determinare la memoria fisica totale nel server. In questo esempio, la memoria fisica totale disponibile nel server è pari a 16 GB.

    2. Riservare 2 GB di memoria ad altri processi e servizi in esecuzione nell'host della cache. Ad esempio, 16 GB – 2 GB = 14 GB. La memoria rimanente viene allocata al servizio cache distribuita.

    3. Convertire la metà della memoria rimanente in MB. Ad esempio, 14 GB/2 = 7 GB o 7168 MB. Queste sono le dimensioni della cache del servizio cache distribuita.

    4. Utilizzare la procedura seguente per aggiornare l'allocazione di memoria corrispondentemente.

Modificare l'allocazione di memoria della cache distribuita

Utilizzare questa procedura per riconfigurare l'allocazione di memoria delle dimensioni della cache per il servizio cache distribuita.

  1. (Facoltativo) Per verificare l'allocazione di memoria esistente per il servizio cache distribuita in un server, al prompt dei comandi di SharePoint Management Shell eseguire il comando seguente:

    Use-CacheCluster
    Get-AFCacheHostConfiguration -ComputerName ComputerName -CachePort "22233"
    

    Dove:

    • ComputerName è il nome computer del server in cui viene eseguito il cmdlet di SharePoint Management Shell.
  2. Arrestare il servizio cache distribuita in tutti gli host della cache. A tale scopo, accedere a Servizi nel server in Amministrazione centrale e selezionare Interrompi per arrestare il servizio cache distribuita in tutti gli host della cache nella farm.

  3. Per riconfigurare le dimensioni della cache del servizio cache distribuita, al prompt dei comandi di SharePoint Management Shell eseguire il comando seguente una sola volta in un host della cache:

    Update-SPDistributedCacheSize -CacheSizeInMB CacheSize
    

    Dove:

    • CacheSize è l'assegnazione dell'allocazione di memoria delle dimensioni della cache in MB. Nell'esempio precedente sono state calcolate dimensioni della cache di 7168 MB per un server con 16 GB di memoria totale.
  4. Riavviare il servizio cache distribuita in tutti gli host della cache. A tale scopo, accedere a Servizi nel server in Amministrazione centrale e selezionare Avvia per avviare il servizio cache distribuita in tutti gli host della cache nella farm.

Aggiungere o rimuovere un server in un cluster di cache distribuita

Un amministratore può aggiungere o rimuovere un server in un cluster di cache oppure potrebbe avere la necessità di rimuovere un server dal cluster di cache. eseguire alcune attività operative o di manutenzione sul server e quindi riaggiungere o aggiungere il server al cluster di cache. Al momento della rimozione del server, il servizio cache distribuita viene arrestato e ne viene quindi annullata la registrazione nel server. L'annullamento della registrazione del servizio cache distribuita implica che l'amministratore non vedrà il servizio cache distribuita elencato nella pagina Servizi nel server in Amministrazione centrale. In modo analogo, al momento dell'aggiunta di un server, il servizio cache distribuita viene registrato e poi avviato nel server. Con la registrazione, il servizio cache distribuita sarà elencato nella pagina Servizi nel server in Amministrazione centrale.

Usare le procedure seguenti per aggiungere e rimuovere un server da un cluster di cache. Questi cmdlet di SharePoint Management Shell vengono eseguiti nel server che deve essere aggiunto o rimosso.

Nota

Prima di eseguire le procedure descritte di seguito, verificare che il firewall consenta il traffico ICMP (ICMPv4) in entrata. Per ulteriori informazioni, vedere Firewall configuration considerations.

Aggiungere un server al cluster di cache e avviare il servizio cache distribuita tramite SharePoint 2016 Management Shell

Al prompt dei comandi di SharePoint Management Shell eseguire il comando seguente:

Add-SPDistributedCacheServiceInstance

Rimuovere un server dal cluster di cache tramite SharePoint 2016 Management Shell

Al prompt dei comandi di SharePoint Management Shell eseguire il comando seguente:

Remove-SPDistributedCacheServiceInstance

Importante

Questa procedura arresterà il servizio cache, e i dati memorizzati nella cache non salvati in modo permanente andranno perduti. Se si desidera mantenerli, utilizzare la procedura di arresto normale descritta nella sezione successiva.

Eseguire un arresto normale del servizio di cache distribuita tramite uno script di PowerShell

In una farm di SharePoint Server 2016, esiste un cluster di cache quando il servizio cache distribuita è eseguito da uno o più host della cache. In una farm di SharePoint Server 2016 esiste una sola cache che si estende al cluster di cache. Per un amministratore potrebbe essere necessario spostare i contenuti memorizzati nella cache in un altro host della cache quando si applicano gli aggiornamenti al server. Per evitare la perdita dei dati dovuta allo spostamento dei contenuti memorizzati nella cache, è necessario eseguire un arresto normale del server tramite lo script di PowerShell nella procedura seguente. La procedura di arresto normale consente di trasferire tutti i dati memorizzati nella cache dall'host in cui viene eseguita tale procedura a un altro host nella farm. L'esecuzione del processo di trasferimento richiede 15 minuti o più, a seconda del numero di elementi esistenti nella cache.

Per eseguire un arresto normale del servizio cache distribuita tramite uno script di PowerShell

Utilizzare il seguente script di PowerShell per eseguire l'arresto normale del server di cache distribuita al fine di spostare i contenuti memorizzati nella cache in un altro host della cache. Assicurarsi di specificare il nodo corretto per l'arresto e modificare lo script in base alle esigenze per denominare i parametri corretti per l'organizzazione.

Nota

Non è necessario rimuovere l'host della cache da un cluster di cache se si usa lo script di PowerShell nella procedura seguente per eseguire l'arresto normale.

  1. Verificare che siano soddisfatti i requisiti minimi seguenti:

  2. Copiare le seguenti dichiarazioni di variabili e incollarle in un editor di testo come Blocco note. Impostare valori dei parametri specifici della propria organizzazione. Salvare il file assegnandogli il nome GracefulShutdown.ps1.

    Nota

    È possibile utilizzare un nome diverso, ma in tal caso sarà necessario effettuare il salvataggio come file di testo con codifica ANSI e con estensione ps1.

    ## Settings you may want to change for your scenario ##
    $startTime = Get-Date
    $currentTime = $startTime
    $elapsedTime = $currentTime - $startTime
    $timeOut = 900
    
    try
    {
        Write-Host "Shutting down distributed cache host."
     $hostInfo = Stop-CacheHost -Graceful -CachePort 22233 -ComputerName sp2016App.contoso.com
    
     while($elapsedTime.TotalSeconds -le $timeOut-and $hostInfo.Status -ne 'Down')
     {
         Write-Host "Host Status : [$($hostInfo.Status)]"
         Start-Sleep(5)
         $currentTime = Get-Date
         $elapsedTime = $currentTime - $startTime
         $hostInfo = Get-CacheHost -HostName SP2016app.contoso.com -CachePort 22233
     }
    
     Write-Host "Stopping distributed cache host was successful. Updating Service status in SharePoint."
     Stop-SPDistributedCacheServiceInstance
     Write-Host "To start service, please use Central Administration site."
    }
    catch [System.Exception]
    {
     Write-Host "Unable to stop cache host within 15 minutes." 
    }
    

    Dove sp2016App.contoso.com è il nome di dominio del computer del server di cache distribuita in uso.

  3. Aprire Management Shell di SharePoint

  4. Passare alla directory in cui è stato salvato il file.

  5. Al prompt dei comandi di PowerShell digitare il comando seguente:

    ./GracefulShutdown.ps1
    

    Per ulteriori informazioni sugli script di PowerShell e sui file .ps1, vedere l'argomento relativo all'esecuzione di script di Windows PowerShell.

Modificare l'account di servizio

Al momento della prima configurazione della server farm, l'account della farm viene impostato come account di servizio per il servizio di memorizzazione nella cache di AppFabric. Il servizio cache distribuita dipende dal servizio di memorizzazione nella cache di AppFabric. Per sostituire l'account di servizio per il servizio di memorizzazione nella cache di AppFabric con un account gestito:

  1. Creare un account gestito.

  2. Impostare l'account gestito come account di servizio per il servizio di memorizzazione nella cache di AppFabric. Al prompt dei comandi di SharePoint Management Shell eseguire il comando seguente:

    $farm = Get-SPFarm
    $cacheService = $farm.Services | where {$_.Name -eq "AppFabricCachingService"}
    $accnt = Get-SPManagedAccount -Identity domain_name\user_name
    $cacheService.ProcessIdentity.CurrentIdentityType = "SpecificUser"
    $cacheService.ProcessIdentity.ManagedAccount = $accnt
    $cacheService.ProcessIdentity.Update() 
    $cacheService.ProcessIdentity.Deploy()
    

    Dove domain_name\user_name è il nome di dominio e il nome utente per l'account gestito.

Perfezionare il servizio cache distribuita tramite uno script di PowerShell

L'impostazione del servizio di cache distribuita per MaxConnectionsToServer viene spesso ottimizzata in base al numero di CPU utilizzate nel computer host. Se, ad esempio, si utilizzano core multipli e si configura l'impostazione MaxConnectionsToServer sullo stesso numero di CPU, il computer spesso utilizza una quantità eccessiva di memoria e si blocca. Problemi simili si verificano quando si regolano le impostazioni DistributedLogonTokenCache e DistributedViewStateCache. L'impostazione predefinita è 20 ms, ma spesso si rilevano delle eccezioni se la memorizzazione dei token nella cache non si verifica nell'impostazione di 20 ms. Utilizzare il seguente script di PowerShell per modificare le impostazioni del numero massimo di connessioni e timeout.

Per ottimizzare il servizio cache distribuita tramite uno script di PowerShell

  1. Verificare che siano soddisfatti i requisiti minimi seguenti:

  2. Copiare le seguenti dichiarazioni di variabili e incollarle in un editor di testo come Blocco note. Impostare valori dei parametri specifici della propria organizzazione. Salvare il file e denominarlo MaxConnections.ps1.

    Nota

    È possibile utilizzare un nome diverso, ma in tal caso sarà necessario effettuare il salvataggio come file di testo con codifica ANSI e con estensione ps1.

    Add-PSSnapin Microsoft.Sharepoint.Powershell
    
    #DistributedLogonTokenCache
    $DLTC = Get-SPDistributedCacheClientSetting -ContainerType DistributedLogonTokenCache
    $DLTC.MaxConnectionsToServer = 1
    $DLTC.requestTimeout = "3000"
    $DLTC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedLogonTokenCache $DLTC
    
    #DistributedViewStateCache
    $DVSC = Get-SPDistributedCacheClientSetting -ContainerType DistributedViewStateCache
    $DVSC.MaxConnectionsToServer = 1
    $DVSC.requestTimeout = "3000"
    $DVSC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedViewStateCache $DVSC
    
    #DistributedAccessCache
    $DAC = Get-SPDistributedCacheClientSetting -ContainerType DistributedAccessCache
    $DAC.MaxConnectionsToServer = 1
    $DAC.requestTimeout = "3000"
    $DAC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedAccessCache $DAC
    
    #DistributedActivityFeedCache
    $DAF = Get-SPDistributedCacheClientSetting -ContainerType DistributedActivityFeedCache
    $DAF.MaxConnectionsToServer = 1
    $DAF.requestTimeout = "3000"
    $DAF.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedActivityFeedCache $DAF
    
    #DistributedActivityFeedLMTCache
    $DAFC = Get-SPDistributedCacheClientSetting -ContainerType DistributedActivityFeedLMTCache
    $DAFC.MaxConnectionsToServer = 1
    $DAFC.requestTimeout = "3000"
    $DAFC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedActivityFeedLMTCache $DAFC
    
    #DistributedBouncerCache
    $DBC = Get-SPDistributedCacheClientSetting -ContainerType DistributedBouncerCache
    $DBC.MaxConnectionsToServer = 1
    $DBC.requestTimeout = "3000"
    $DBC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedBouncerCache $DBC
    
    #DistributedDefaultCache
    $DDC = Get-SPDistributedCacheClientSetting -ContainerType DistributedDefaultCache
    $DDC.MaxConnectionsToServer = 1
    $DDC.requestTimeout = "3000"
    $DDC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedDefaultCache $DDC
    
    #DistributedSearchCache
    $DSC = Get-SPDistributedCacheClientSetting -ContainerType DistributedSearchCache
    $DSC.MaxConnectionsToServer = 1
    $DSC.requestTimeout = "3000"
    $DSC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedSearchCache $DSC
    
    #DistributedSecurityTrimmingCache
    $DTC = Get-SPDistributedCacheClientSetting -ContainerType DistributedSecurityTrimmingCache
    $DTC.MaxConnectionsToServer = 1
    $DTC.requestTimeout = "3000"
    $DTC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedSecurityTrimmingCache $DTC
    
    #DistributedServerToAppServerAccessTokenCache
    $DSTAC = Get-SPDistributedCacheClientSetting -ContainerType DistributedServerToAppServerAccessTokenCache
    $DSTAC.MaxConnectionsToServer = 1
    $DSTAC.requestTimeout = "3000"
    $DSTAC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedServerToAppServerAccessTokenCache $DSTAC
    
    #DistributedFileLockThrottlerCache
    $DFLTC = Get-SPDistributedCacheClientSetting -ContainerType DistributedFileLockThrottlerCache
    $DFLTC.MaxConnectionsToServer = 1
    $DFLTC.requestTimeout = "3000"
    $DFLTC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedFileLockThrottlerCache $DFLTC
    
    #DistributedSharedWithUserCache
    $DSWUC = Get-SPDistributedCacheClientSetting -ContainerType DistributedSharedWithUserCache
    $DSWUC.MaxConnectionsToServer = 1
    $DSWUC.requestTimeout = "3000"
    $DSWUC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedSharedWithUserCache $DSWUC
    
    #DistributedUnifiedGroupsCache
    $DUGC = Get-SPDistributedCacheClientSetting -ContainerType DistributedUnifiedGroupsCache
    $DUGC.MaxConnectionsToServer = 1
    $DUGC.requestTimeout = "3000"
    $DUGC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedUnifiedGroupsCache $DUGC 
    
    #DistributedResourceTallyCache
    $DRTC = Get-SPDistributedCacheClientSetting -ContainerType DistributedResourceTallyCache
    $DRTC.MaxConnectionsToServer = 1
    $DRTC.requestTimeout = "3000"
    $DRTC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedResourceTallyCache $DRTC
    
    #DistributedHealthScoreCache
    $DHSC = Get-SPDistributedCacheClientSetting -ContainerType DistributedHealthScoreCache
    $DHSC.MaxConnectionsToServer = 1
    $DHSC.requestTimeout = "3000"
    $DHSC.channelOpenTimeOut = "3000"
    Set-SPDistributedCacheClientSetting -ContainerType DistributedHealthScoreCache $DHSC 
    
  3. Aprire Management Shell di SharePoint

  4. Passare alla directory in cui è stato salvato il file.

  5. Al prompt dei comandi di PowerShell digitare il comando seguente:

    ./MaxConnections.ps1
    

    Per ulteriori informazioni, vedere Procedure consigliate per l'uso di Windows Azure Cache/Windows Server Appfabric Cache e Impostazioni di configurazione dell'applicazione (Memorizzazione nella cache di Windows Server AppFabric). Per ulteriori informazioni sugli script di Windows PowerShell e sui file ps1, vedere l'argomento relativo all'esecuzione di script di Windows PowerShell.

Ripristinare un host della cache

Durante le attività di installazione, configurazione o gestione, è possibile che per il servizio cache distribuita si attivi uno stato di non funzionamento. L'indicazione di un servizio cache distribuita che non funziona correttamente risulterà nelle regole di analisi dell'integrità in Amministrazione centrale o durante l'uso di funzionalità di SharePoint Server che si basano sulla cache distribuita. Il newsfeed nel Sito personale di un utente ad esempio inizierà a segnalare errori. Gli amministratori inoltre potrebbero ricevere il messaggio di errore "cacheHostInfo è null " quando eseguono i cmdlet di SharePoint Management Shell per gestire il servizio cache distribuita.

Sono disponibili due passaggi per ripristinare un host della cache.

Nell'host della cache distribuita non funzionante, utilizzare la procedura seguente per ripristinare un host della cache distribuita.

  1. Nel prompt dei comandi di SharePoint Management Shell eseguire il cmdlet Remove-SPDistributedCacheServiceInstance.

  2. Nel prompt dei comandi di SharePoint Management Shell eseguire il cmdlet Add-SPDistributedCacheServiceInstance.

    Nota

    Se il passaggio 1 non riesce, rimuovere manualmente il servizio Cache distribuita utilizzando la procedura seguente.

    • Nel prompt dei comandi SharePoint Management Shell, digitare la seguente sintassi.

      $instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
      
      $serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername}
      
      If($serviceInstance -ne $null)
      {
      $serviceInstance.Delete()
      }
      
    • Dopo che il servizio Cache distribuita è stato eliminato manualmente, eseguire nuovamente il passaggio 2.

See also

Pianificare i feed e il servizio cache distribuita in SharePoint Server