Häufige Ausnahmen
Wenn während eines Cacheclient-Methodenaufrufs ein Fehler auftritt, löst der Cacheclient eine Instanz der Klasse DataCacheException aus. Die Eigenschaft ErrorCode enthält den Typ des Fehlers.
Für jede Cacheclient-API können potenziell de folgenden häufigen Fehler auftreten:
Ihr Anwendungscode sollte auf diese Fehler vorbereitet sein. Die folgenden Informationen stellen weitere Einzelheiten zu jedem Fehler zur Verfügung, die Sie bei der ordnungsgemäßen Behandlung jeder Situation unterstützen sollten.
Timeout
Wenn ein Timeout auftritt, wird ein DataCacheException-Objekt mit dem Fehlercode Timeout ausgelöst. Ein Timeout zeigt an, dass der Cacheclient innerhalb der konfigurierten Timeouteinstellungen keine Antwort vom Server erhalten hat. Dies kann durch eine Vielzahl von Problemen verursacht werden, z. B. durch Netzwerkprobleme zwischen den Client und dem Server.
Auf wenn ein Timeoutfehler auftritt, ist es wichtig zu bedenken, dass der Server den angeforderten Vorgang ggf. erfolgreich verarbeitet hat. Angenommen, eine Anwendung hat einen Cacheclient, dessen requestTimeout
auf 10.000 Millisekunden festgelegt ist. Die Anwendung ruft die Add-API auf, um ein neues Cacheelement hinzuzufügen. Wenn der Aufruf länger als zehn Sekunden dauert, empfängt die Anwendung einen Timeoutfehler. Der Server hat den Hinzufügevorgang jedoch ggf. abgeschlossen und war dann nicht mehr in der Lage, dem Client zu antworten, bevor der Timeout verstrichen ist. Die Anwendung sollte diese Möglichkeit im Fehlerhandler berücksichtigen. Wenn der Fehlerhandler einfach versucht, das Objekt nochmals hinzuzufügen, kann dies zu einer weiteren Ausnahme mit dem Fehlercode KeyAlreadyExists führen.
Abhängig von den Entwurfsanforderungen der Anwendung können Sie die Dauer der Cacheclienttimeouts verlängern oder verkürzen. Weitere Informationen zum Konfigurieren der Timeoutdauer finden Sie unter Konfigurieren von Cacheclienttimeouts.
RetryLater
Der Fehlercode RetryLater zeigt an, dass der Cachecluster vorübergehend nicht in der Lage ist, eine Anforderung abzuschließen. Dieser Fehler kann z. B. auftreten, wenn ein Administrator den Cachecluster konfiguriert.
Bei diesem Typ von Fehler ist es wichtig, den Wert der Eigenschaft SubStatus des DataCacheException-Objekts zu beobachten. Diese Eigenschaft stellt zusätzliche Einzelheiten zur Verfügung, die die Ursache des Fehlers erläutern. Wenn der Cachecluster beendet wird, ist in der ausgelösten Ausnahme DataCacheException z. B. die Eigenschaft ErrorCode auf RetryLater und die Eigenschaft SubStatus auf CacheServerUnavailable festgelegt. Beachten Sie, dass der gleiche Wert für SubStatus ebenfalls auftritt würde, wenn das der Anforderung zugeordnete Windows-Konto auf dem Cachecluster nicht zugelassen oder die Firewall auf den Cachehosts nicht ordnungsgemäß konfiguriert ist.
Der RetryLater-Fehlercode kann außerdem auftreten, wenn der verfügbare Arbeitsspeicher bei mindestens einem der Zielserver unzureichend ist. In dieser Situation ist die Eigenschaft SubStatus auf Throttled festgelegt. Eine Reihe von Faktoren kann zu gedrosselter Leistung eines Cacheservers führen.
Überprüfen Sie die Cacheeinstellungen mit dem Windows PowerShell-Befehl
get-cacheconfig
. Suchen Sie nach Caches, derenEvictionType
den WertNone
anstelle vonLRU
aufweist. Wenn Entfernung deaktiviert ist, kann der Cachecluster zwischengespeicherte Elemente nicht entfernen, wenn auf dem Server wenig Arbeitsspeicher verfügbar ist.Verwenden Sie den Windows Task-Manager oder den Systemmonitor, um nach weiteren Prozessen auf den Cacheservern zu suchen, die möglicherweise Arbeitsspeicher beanspruchen.
Untersuchen Sie die Cacheverwendung der Anwendung. Die durchschnittliche Menge der eingefügten Objekte, ihre Größe und ihre Timeoutwerte tragen alle zum Gesamtbedarf an Arbeitsspeicher auf dem Cachecluster bei.
Erwägen Sie die Verwendung benutzerdefinierter Bereiche. Ein Bereich wird nur auf einem Cacheserver ausgeführt, sodass die Elemente in einem Bereich nicht über alle Cachehosts verteilt sein können. Wenn mehrere große Bereiche auf einem einzelnen Cacheserver vorhanden sind, kann der Server auch dann in einen gedrosselten Zustand geraten, wenn die anderen Cacheserver ausreichend verfügbaren Arbeitsspeicher aufweisen.
ConnectionTerminated
Der Fehlercode ConnectionTerminated zeigt an, dass die Verbindung zwischen dem Cacheclient und dem Cachecluster abgebrochen wurde. Dieser Fehler kann eine Vielzahl möglicher Ursachen haben, z. B. Netzwerkfehler oder das Herunterfahren der Cacheserver. Ebenso wie bei den Timeoutfehlern weist auch der Fehler ConnectionTerminated nicht auf den Erfolg oder Fehler des angeforderten Vorgangs hin. Der Fehlerhandler sollte beide Möglichkeiten in Betracht ziehen.
Siehe auch
Konzepte
Übersicht zur Ausnahmebehandlung
2012-03-05