本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

在 SharePoint Server 2013 中管理分散式快取服務

 

適用版本:SharePoint Server 2013

上次修改主題的時間:2016-12-16

摘要:了解如何在 SharePoint Server 2013 中設定及管理分散式快取服務。

若要在SharePoint Server 2013分散式快取服務執行管理及操作工作,以系統管理員必須執行特定的排序程序。本文說明如何進行數個管理及操作上的分散式快取服務的工作。

重要事項 重要事項:
若未遵守本文列示的程序進行,最後可能會導致分散式快取服務變成無法運作或無法復原的狀態。在最糟的情況下,您可能還必須重新建立伺服器陣列。Windows Server AppFabric 是分散式快取的先決條件。請勿從 [控制台] 中 [系統管理工具] 的 [服務] 視窗來管理 [AppFabric 快取服務]。請勿使用 [開始] 功能表上名為 [AppFabric for Windows Server] 之資料夾中的應用程式。
重要事項 重要事項:
請不要使用含有符號 $ 的服務帳戶名稱。

若要深入了解規劃、 安裝及設定SharePoint Server 2013伺服器陣列中的分散式快取服務請參閱模型規劃與使用分散式快取服務

模型:規劃分散式快取服務

本文內容:

執行維護和操作工作的管理員可能會需要啟動及停止分散式快取服務。其中包括下列工作:

  • 在安裝時變更伺服器陣列的預設設定。安裝時,會在所有 SharePoint 伺服器上啟動分散式快取服務。管理員可能會想要停止伺服器陣列中某些伺服器的分散式快取服務。

  • 更新伺服器,而且 SharePoint Server 2013 伺服器陣列中只有一部分散式快取伺服器。

停止快取會導致部分資料遺失。摘要快取相依於分散式快取服務。標記和文件活動只會儲存至摘要快取。標記和文件活動不會留存在內容資料庫中。當分散式快取服務停止時,標記和文件活動即遺失。當分散式快取服務啟動,就會在摘要快取重新填入計時器工作執行時,進行重新填入。如需詳細資訊,請參閱在 SharePoint Server 2013 中管理摘要快取及上次修改時間快取的重新填入。維護標記和文件活動的方法之一,就是使用本文稍後的分散式快取服務的正常關機所說明的方法。使用分散式快取服務的正常關機方法時,會先將所有快取資料從一部伺服器移到另一部伺服器,然後才停止分散式快取服務。

注意事項 附註:
如果您的快取主機隸屬於快取叢集,請勿以此處說明的方法啟動或停止分散式快取服務。請改為參閱本文稍後的在分散式快取叢集中新增或移除伺服器

  1. 在管理中心中,按一下 [應用程式管理]。

  2. 按一下 [服務應用程式] 中的 [管理伺服器上的服務]。

  3. 在「伺服器上的服務」頁面上,尋找 [分散式快取] 服務。

  4. 如果分散式快取服務已啟動,而您想要停止該服務,請按一下 [動作] 下的 [停止]。如果分散式快取服務已停止,而您想要啟動該服務,請按一下 [動作] 下的 [開始]。

在 SharePoint 管理命令介面 命令提示字元中執行下列命令:

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

在 SharePoint 管理命令介面 命令提示字元中執行下列命令:

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

SharePoint Server 2013 安裝之後,會將伺服器上百分之 10 的總實體記憶體分派給分散式快取服務。分散式快取服務會將一半的記憶體配置用於資料儲存 (又稱為快取大小),將另一半的記憶體配置用於記憶體管理額外負荷。當快取的資料成長時,分散式快取服務就會使用完整百分之 10 的配置記憶體。

您應該在下列狀況增加分散式快取服務的記憶體配置:

  • 當您新增實體記憶體至伺服器時。分散式快取服務不會自動重新計算那百分之 10 的記憶體配置,因此要增加伺服器上的總實體記憶體時,必須手動增加分散式快取服務的記憶體配置。

  • 當您的伺服器陣列有專用分散式快取伺服器時。請使用下列方法來計算可以將多少記憶體分派給分散式快取服務:

    1. 判斷伺服器上的總實體記憶體。就此例而言,我們會使用 16 GB 作為伺服器上可用的總實體記憶體。

    2. 保留 2 GB 記憶體給在快取主機上執行的其他程序和服務。例如,16 GB – 2 GB = 14 GB。這些剩餘的記憶體會配置給分散式快取服務。

    3. 將一半的剩餘記憶體轉換成 MB。例如,14 GB/2 = 7 GB 或 7168 MB。這就是分散式快取服務的快取大小。

    4. 依據情況,使用下列程序來更新記憶體配置。

使用此程序來重新設定分散式快取服務快取大小的記憶體配置。

  1. (選用) 若要查看伺服器上分散式快取服務的現有記憶體配置,請在 SharePoint 管理命令介面 命令提示字元中執行下列命令:

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

    其中:

    • 電腦名稱 為執行 SharePoint 管理命令介面 Cmdlet 的伺服器上電腦名稱。

  2. 停用所有快取主機上的分散式快取服務。若要停止分散式快取服務,請前往管理中心的 [伺服器上的服務],並 [停止] 伺服器陣列上所有快取主機的分散式快取服務。

  3. 若要重新設定分散式快取服務的快取大小,請僅在任何快取主機上於 SharePoint 管理命令介面 命令提示字元中執行下列命令一次:

    Update-SPDistributedCacheSize -CacheSizeInMB CacheSize
    

    其中:

    • 快取大小 是所分派的快取大小記憶體配置 (MB)。在前面的範例中,針對總記憶體為 16 GB 的伺服器,計算出來的快取大小為 7168 MB。

  4. 重新啟動所有快取主機上的分散式快取服務。若要重新啟動分散式快取服務,請前往管理中心的 [伺服器上的服務],然後 [啟動] 伺服器陣列所有快取主機上的分散式快取服務。

管理員可以在快取叢集中新增或移除伺服器,或者可能會想要將伺服器從快取叢集中移除、在伺服器上執行一些操作或維護工作,然後再將伺服器重新加入或新增至快取叢集。在移除伺服器時,分散式快取服務會停止,然後從伺服器取消登錄。取消登錄分散式快取服務的意思,就是管理員將不會看到分散式快取服務列示在管理中心的「伺服器上的服務」頁面上。同樣地,新增伺服器時,會登錄分散式快取服務,然後在伺服器上啟動。登錄分散式快取服務的意思,就是管理員將會看到分散式快取服務列示在管理中心的「伺服器上的服務」頁面上。

使用下列程序可在快取叢集中新增和移除伺服器。這些 SharePoint 管理命令介面 Cmdlet 會在所要新增或移除的伺服器上執行。

注意事項 附註:
執行下列程序之前,請先確保防火牆允許輸入 ICMP (ICMPv4) 流量通過。如需詳細資訊,請參閱<防火牆設定考量>。

在 SharePoint 管理命令介面 命令提示字元中執行下列命令:

Add-SPDistributedCacheServiceInstance 

在 SharePoint 管理命令介面 命令提示字元中執行下列命令:

Remove-SPDistributedCacheServiceInstance 
重要事項 重要事項:
此程序會停止的快取服務並保存快取的資料將會遺失。如果您想要保留的快取的資料,用於下一節所述的正常關機程序。

SharePoint Server 2013伺服器陣列中的快取叢集存在時執行分散式快取服務的一或多個快取主機。SharePoint Server 2013伺服器陣列中存在一個快取,並將快取跨越快取叢集。系統管理員可能需要將的快取的內容移至另一個快取主機時將更新套用至伺服器。若要防止移動快取的內容相關聯的資料遺失您需要執行下列程序中使用Windows PowerShell指令碼之伺服器的正常關機。正常關機程序會將所有快取的資料傳輸從快取主機上的正常關機程序在其執行伺服器陣列中的另一個快取主機。傳輸程序需要 15 分鐘以上才能執行快取中有多少個項目。

使用下列Windows PowerShell指令碼來執行分散式快取伺服器的正常關機移動至另一個快取主機的快取的內容。確定您指定要關閉之正確節點變更指令碼視您的組織名稱正確的參數。

注意事項 附註:
有不需要在從快取叢集移除快取主機如果下列程序中使用Windows PowerShell指令碼來執行正常關機。
若要使用Windows PowerShell指令碼來執行分散式快取的正常關機
  1. 確認您是否符合下列基本需求:

  2. 複製下列變數宣告,並將它們貼到 [記事本] 之類的文字編輯器。設定您的組織特定的參數值。儲存檔案並命名 GracefulShutdown.ps1。

    注意事項 附註:
    您可以使用不同的檔案名稱,但是必須將檔案儲存為副檔名為 .ps1 的 ANSI 編碼文字檔。
    ## Settings you may want to change for your scenario ##
    $startTime = Get-Date
    $currentTime = $startTime
    $elapsedTime = $currentTime - $startTime
    $timeOut = 900
    
    try
    
    {
    
    Use-CacheCluster
    Get-AFCacheClusterHealth
    
    Write-Host "Shutting down distributed cache host."
    $hostInfo = Stop-CacheHost -Graceful -CachePort 22233 -HostName sp2013App.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
    #Get-AFCacheClusterHealth
    $hostInfo = Get-CacheHost -HostName SP2013app.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."
    } 
    

    其中sp2013App.contoso.com是您使用的分散式快取伺服器電腦的網域名稱。

  3. 在 [開始] 功能表上,按一下 [所有程式]。

  4. 按一下 [Microsoft SharePoint 2013 產品]。

  5. 按一下 [SharePoint 2013 管理命令介面]。

  6. 變更至您儲存檔案的目錄。

  7. 在 Windows PowerShell 命令提示字元處,輸入下列命令:

    ./GracefulShutdown.ps1
    

    如需 Windows PowerShell 指令碼和 .ps1 檔案的其他資訊,請參閱執行 Windows PowerShell 指令碼

第一次設定伺服器陣列時,會將伺服器陣列帳戶設為 AppFabric 快取服務的服務帳戶。分散式快取服務相依於 AppFabric 快取服務。若要將 AppFabric 快取服務的服務帳戶變更為受管理帳戶,請執行下列操作:

  1. 建立受管理的帳戶。如需詳細資訊,請參閱在 SharePoint 2013 中設定自動變更密碼

  2. 將受管理帳戶設為 AppFabric 快取服務的服務帳戶。在 SharePoint 管理命令介面 命令提示字元中執行下列命令:

    $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()
    			 
    

    其中 Domain_name\user_name 是受管理帳戶的網域名稱和使用者名稱。

MaxConnectionsToServer的分散式快取服務設定通常是根據可用在主機電腦上的 Cpu 數目而調整。如果使用多個核心與再將MaxConnectionsToServer設定設為相同的 Cpu 數目的執行個體之電腦通常會使用太多記憶體,和凍結。類似問題發生時調整DistributedLogonTokenCacheDistributedViewStateCache設定。預設值為 20 毫秒但時權杖快取不會發生 20ms年設定中所找到通常例外狀況。使用下列Windows PowerShell指令碼來變更的最大連線和逾時設定。

若要使用Windows PowerShell指令碼來微調分散式快取服務
  1. 確認您是否符合下列基本需求:

  2. 複製下列變數宣告,並將它們貼到 [記事本] 之類的文字編輯器。設定您的組織特定的參數值。儲存檔案並命名 MaxConnections.ps1。

    注意事項 附註:
    您可以使用不同的檔案名稱,但是必須將檔案儲存為副檔名為 .ps1 的 ANSI 編碼文字檔。
    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
    
    

  3. 在 [開始] 功能表上按一下 [所有程式]。

  4. 按一下 [Microsoft SharePoint 2013 產品]。

  5. 按一下 [SharePoint 2013 管理命令介面]。

  6. 變更至您儲存檔案的目錄。

  7. 在 Windows PowerShell 命令提示字元處,輸入下列命令:

    ./MaxConnections.ps1
    

    如需詳細資訊,請參閱使用 Windows Azure 快取/Windows Server Appfabric 快取的最佳作法應用程式組態設定 (Windows Server AppFabric 快取)。如需 Windows PowerShell 指令碼和.ps1 檔案的其他資訊,請參閱執行 Windows PowerShell 指令碼

安裝、設定或維護活動期間,分散式快取服務可能會進入非運作狀態。分散式快取服務非運作的證據會顯示在管理中心的狀況規則中,或是當使用者使用仰賴分散式快取的 SharePoint Server 2013 功能時。例如使用者「我的網站」上的新聞摘要會開始報告錯誤。另外,管理員在執行 SharePoint 管理命令介面 Cmdlet 管理分散式快取服務時,可能會收到「cacheHostInfo 為 Null 」的錯誤訊息。

有兩個步驟以修復的快取主機。

非運作分散式快取主機上,使用下列程序還原分散式快取主機。

  1. 在SharePoint 管理命令介面命令提示字元處執行Remove-SPDistributedCacheServiceInstance cmdlet。

  2. 在SharePoint 管理命令介面命令提示字元中執行Add-SPDistributedCacheServiceInstance指令程式。

    注意事項 附註:
    如果步驟 1 失敗,請手動移除分散式快取服務,請使用下列步驟。
    • 在SharePoint 管理命令介面命令提示字元處輸入下列語法。

      $instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
      
      $serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername}
      
      If($seriveInstance -ne $null)
      {
      $serviceInstance.Delete()
      }
      
      
    • 手動刪除分散式快取服務之後,請再次執行步驟 2。

https://technet.microsoft.com/zh-tw/library/jj219572.aspx
顯示: