Leistungsvergleich beim Lesen von der Festplatte im Vergleich zum Lesen aus dem AppFabric-Cache
In diesem Beispiel wird gezeigt, dass das Speichern und Lesen im bzw. aus dem AppFabric-Cache effizienter ist als die gleichen Vorgänge auf einer Festplatte.
Im Beispiel wird eine Anzahl Bilddateien gelesen, um Benutzeranforderungen für den Zugriff auf Dateien auf der Festplatte oder im Cache zu simulieren, und die Zeit für das Bereitstellen der Bilddateien verglichen.
Hinweis
Beispiele werden nur zu Anschauungszwecken bereitgestellt. Sie sind nicht für die Verwendung in einer Produktionsumgebung gedacht und wurden nicht in einer Produktionsumgebung getestet. Microsoft bietet keinen technischen Support für diese Beispiele.
Voraussetzungen
Idealerweise sollten die Benutzer über Kenntnisse im Skripten in Windows PowerShell verfügen.
Das Beispiel setzt Folgendes voraus:
Windows PowerShell 2.0 ist installiert.
Microsoft AppFabric 1.1 für Windows Server ist installiert. (Dadurch werden außerdem dem GAC die erforderlichen DLLs hinzugefügt.)
Konfigurieren des AppFabric-Caches
Wenn dies noch nicht erfolgt ist, konfigurieren Sie den AppFabric-Cache mithilfe des Microsoft AppFabric 1.1 für Windows Server-Konfigurationstools (verwenden Sie die Standardeinstellungen). In dem Beispiel wird angenommen, dass ein AppFabric-Cache mit den Standardeinstellungen konfiguriert ist (cacheHostName=AppFabricCachingService und cacheName=default).
Starten des Cacheclusters
Öffnen Sie ein Windows PowerShell-Befehlsfenster mit erhöhten Rechten, und führen Sie den folgenden Befehl aus, um das Verwaltungsmodul für den verteilten Cache hinzuzufügen:
Import-Module DistributedCacheAdministration
Führen Sie den folgenden Befehl aus, um Ihrem Benutzerkonto Zugriff auf den Cachecluster als Client zu erteilen. Geben Sie den Benutzer- und Domänennamen an.
Grant-CacheAllowedClientAccount domain\username
Verwenden Sie den Befehl Get-CacheAllowedClientAccounts, um zu überprüfen, ob Ihrem Benutzerkonto der Zugriff erteilt wurde.
Start den Sie den Cluster mithilfe des Befehls Start-CacheCluster.
Erstellen und Ausführen des Beispiels
Das Beispiel stellt automatisch eine Verknüpfung mit den AppFabric-Cache-DLLs (Microsoft.ApplicationServer.Caching.Client.dll und Microsoft.ApplicationServer.Caching.Core.dll) aus dem globalen Assemblycache (GAC) her.
Öffnen Sie die Projektmappe DiskVersusCachePerformance.sln in Visual Studio.
Öffnen Sie eine Eingabeaufforderung, und wechseln Sie in das Verzeichnis: <Speicherort des Beispiels>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug
Diesem Beispiel muss ein Befehlszeilenparameter übergeben werden: der Pfad zum Verzeichnis der Dateifreigabe, die Teil des Ordners DiskVersusCachePerformance ist. (Sie können diesen auch den Projekteigenschaften im Abschnitt „command line arguments“ hinzufügen.)
Führen Sie die EXE-Programmdatei aus, um den Beispieltest zu starten:
<Location of the sample>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug> DiskVersusCachePerformance.exe ..\..\..\fileshare
Die vom Beispiel durchgeführten Aktionen werden in der Datei useractions.xml im Dateifreigabeordner beschrieben. Die folgenden Aktionen werden unterstützt.
Aktion | Parameter | Beschreibung |
---|---|---|
PageSize |
Größe |
Festlegen der Seitengröße (Anzahl der zu lesenden Dateien) |
LogIn |
Benutzername |
Anmelden des Benutzers |
LogOut |
Benutzername |
Abmelden des Benutzers |
ViewAlbum |
AlbumIndex |
Verschieben in den Ordner „album[Index]“ |
ViewPage |
PageIndex |
Lesen von Dateien [PageIndex*PageSize - PageIndex*(PageSize+1)-1] |
ViewNextPage |
Nicht verfügbar |
Weiter zum nächsten Satz Dateien [(PageIndex+1)*PageSize - PageIndex*(PageSize+2)-1] |
ViewPrevPage |
Nicht verfügbar |
Zurück zum vorhergehenden Satz Dateien |
Eine Sequenz von Aktionen, die wie folgt definiert werden kann.
<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>
Das vorhergehende Segment wird in dieser Weise interpretiert:
Festlegen der Anzahl der Elemente pro Seite auf 500
Anmeldung von „tom“ (ermöglicht dem angemeldeten Benutzer den Zugriff auf die Seite)
Auswählen von album0
Anzeigen der ersten Seite (Lesen der Dateien 0-499 von der Festplatte oder aus dem Cache)
Anzeigen der nächsten Seite (Versuch, die Dateien 500-999 von der Festplatte zu lesen)
Anzeigen der vorhergehenden Seite (erneutes Lesen der Dateien 0-499 aus dem Cache, da die Dateien jetzt in den Cache geladen sind)
Abmelden (Widerrufen der erteilten Berechtigung)
Bei jedem Abmeldevorgang meldet das Beispiel einen Leistungsvergleich des Zugriffs auf die Daten auf der Festplatte gegenüber dem Zugriff auf den AppFabric-Cache.
Hinweis
Verwenden Sie für jede nachfolgende Ausführung dieses Beispiels den Befehl Restart-CacheCluster
, um den Cache zu leeren, und und warten Sie dann 10-15 Sekunden.
Hinweis
Während der Ausführung des Beispiels werden möglicherweise Nachrichten wie [size2_il.cur-DiskRead- error 2 Delay (ticks) 7128] angezeigt. Der Fehler zeigt den Unterschied zwischen der von FileInfo gemeldeten Dateigröße und der tatsächlichen Größe der von der Festplatte gelesenen Datei. Dieser Unterschied kann ignoriert werden, da die im Cache gespeicherten Daten die gleiche Größe wie die von der Festplatte gelesenen Daten aufweisen.
Problembehandlung
Wenn dem Cache keine Daten hinzugefügt werden, wird dies möglicherweise durch die Entfernungsrichtlinie des Caches verhindert. Zum Sicherstellen, dass für den Cache keine Entfernungsrichtlinie festgelegt ist, führen Sie die folgenden Befehle aus, um den Standardcache zu entfernen und ihn ohne Entfernungsrichtlinie neu zu erstellen:
Remove-Cache -CacheName default
New-Cache -CacheName default -Eviction None
Entfernen dieses Beispiels
Starten Sie den Cachecluster erneut mithilfe des Befehls Restart-CacheCluster, um Daten aus dem Cache zu entfernen.
Siehe auch
Weitere Ressourcen
Beispiele (AppFabric 1.1-Cache)
2012-03-05