從磁碟讀取和 AppFabric 快取的效能比較
本範例顯示從 AppFabric 快取進行儲存和讀取,會比從磁碟更有效率。
本範例會讀取數個影像檔以模擬從磁碟或快取存取檔案的使用者要求,並且會比較提供影像檔的時間。
注意
提供的範例僅適用於教學用途。請勿將範例用於生產環境,因為這些範例並未在生產環境中測試。Microsoft 不對這些範例提供技術支援。
必要條件
使用者最好具備 Windows PowerShell 指令碼的知識。
此範例假設下列各項:
已安裝 Windows PowerShell 2.0。
已安裝 Microsoft AppFabric 1.1 for Windows Server。(這樣也會將必要的 DLL 新增到 GAC)。
設定 AppFabric 快取
如果您尚未設定 AppFabric 快取,請使用 Microsoft AppFabric 1.1 for Windows Server 組態工具 (使用預設設定) 來設定。本範例假設已使用預設設定來設定 AppFabric 快取 (cacheHostName=AppFabricCachingService 與 cacheName=default)。
啟動快取叢集
以提升的權限開啟 Windows PowerShell 命令視窗,並執行下列命令以新增「分散式快取」管理模組:
Import-Module DistributedCacheAdministration
執行下列命令,將以用戶端方式存取快取叢集的權限授與使用者帳戶。提供您的使用者與網域名稱。
Grant-CacheAllowedClientAccount domain\username
使用 Get-CacheAllowedClientAccounts 命令確認已將權限授與您的使用者帳戶。
使用 Start-CacheCluster 命令啟動叢集。
建置並執行此範例
此範例會自動從 GAC 連結到 AppFabric 快取 DLL (Microsoft.ApplicationServer.Caching.Client.dll 與 Microsoft.ApplicationServer.Caching.Core.dll)。
在 Visual Studio 中開啟 DiskVersusCachePerformance.sln 方案。
開啟命令提示字元,將目錄切換至:<範例位置>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug
您必須傳第一個命令列參數給此範例:檔案共用目錄 (DiskVersusCachePerformance 資料夾的一部分) 的路徑 (您也可以將此路徑新增到專案屬性的 [命令列引數] 區段)。
執行 exe 以開始範例測試:
<Location of the sample>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug> DiskVersusCachePerformance.exe ..\..\..\fileshare
檔案共用資料夾中的 useractions.xml 檔案描述範例執行的動作。支援下列動作。
動作 | 參數 | 描述 |
---|---|---|
PageSize |
Size |
設定頁面大小 (要讀取的檔案數目) |
LogIn |
UserName |
登入使用者 |
LogOut |
UserName |
登出使用者 |
ViewAlbum |
AlbumIndex |
移至 “album[Index]” 資料夾 |
ViewPage |
PageIndex |
讀取檔案 [PageIndex*PageSize - PageIndex*(PageSize+1)-1] |
ViewNextPage |
無 |
移至下一個檔案集 [(PageIndex+1)*PageSize - PageIndex*(PageSize+2)-1] |
ViewPrevPage |
無 |
移至上一個檔案集 |
動作順序可依照下列方式定義。
<useraction> <action>PageSize</action> <data>500</data> </useraction>
<useraction> <action>LogIn</action> <data>tom</data> </useraction>
<useraction> <action>ViewAlbum</action> <data>0</data> </useraction>
<useraction> <action>ViewPage</action> <data>0</data> </useraction>
<useraction> <action>ViewNextPage</action> <data>null</data> </useraction>
<useraction> <action>ViewPrevPage</action> <data>null</data> </useraction>
<useraction> <action>LogOut</action> <data>tom</data> </useraction>
上述區段可解譯為:
將每頁的項目數設為 500
將 Tom 登入 (允許登入的使用者存取頁面)
選取 album0
檢視第一頁 (從磁碟或快取讀取檔案 0-499)
檢視下一頁 (嘗試從磁碟讀取檔案 500-999)
檢視上一頁 (在檔案載入快取後,從快取重新讀取檔案 0-499)
登出 (還原授與的權限)
每次登出時,範例會報告從磁碟存取檔案與從 AppFabric 快取存取檔案的效能比較。
注意
之後每次執行此範例時,請使用 Restart-CacheCluster
命令清除快取,然後等候 10-15 秒。
注意
在範例執行時,您可能會遇到像是 [size2_il.cur-DiskRead- error 2 Delay (ticks) 7128] 的訊息。錯誤會顯示 FileInfo 報告的檔案大小以及從磁碟讀取之實際檔案大小兩者間的差異。此差異是可忽略的,因為儲存在快取中的資料與從磁碟讀取的資料大小相同。
疑難排解
如果資料未新增到快取,可能是快取的收回原則所致。為確保快取未設定任何收回原則,請執行下列命令以移除預設快取,然後重新建立不含收回原則的快取。
Remove-Cache -CacheName default
New-Cache -CacheName default -Eviction None
移除此範例
使用 Restart-CacheCluster 命令重新啟動快取叢集以清除快取中的資料。
另請參閱
其他資源
2012-03-05