一般的例外 (Windows Server AppFabric キャッシュ)

キャッシュ クライアント メソッドの呼び出し時にエラーが発生した場合、キャッシュ クライアントでは DataCacheException クラスのインスタンスをスローします。ErrorCode プロパティにはエラーの種類が入ります。

各キャッシュ クライアント API では次の一般的エラーの 1 つが発生することがあります。

アプリケーション コードは上記のエラーを想定して設計する必要があります。次に、それぞれの状況に適切に対処できるよう、各エラーの詳細を説明します。

Timeout

タイムアウトが発生すると、エラー コード TimeoutDataCacheException オブジェクトがスローされます。タイムアウトは、構成されたタイムアウト設定内にキャッシュ クライアントがサーバーから応答を受け取らなかったことを示します。これはクライアントとサーバー間のネットワーク問題など、さまざまな問題が原因になっている可能性があります。

タイムアウト エラーが発生しても、サーバーでは要求された操作を正しく処理した可能性があることに注意する必要があります。たとえば、キャッシュ クライアントの requestTimeout が 10000 ミリ秒に設定されたアプリケーションを考えてみます。アプリケーションでは Add API を呼び出し、新しいキャッシュ項目を追加します。呼び出しが 10 秒を超えると、アプリケーションはタイムアウト エラーを受け取ります。しかし、サーバーでは追加処理を完了したが、タイムアウトになる前にクライアントに応答できなかった可能性があります。アプリケーションのエラー ハンドラーでは、この可能性を考慮に入れる必要があります。エラー ハンドラーで単純にもう一度オブジェクトを追加しようとすると、エラー コード KeyAlreadyExists の別の例外が発生する可能性があります。

アプリケーション設計の要件に従い、キャッシュ クライアント タイムアウトの時間は調節できます。タイムアウト時間の構成方法の詳細については、「キャッシュ クライアントのタイムアウトを構成する (Windows Server AppFabric キャッシュ)」を参照してください。

RetryLater

RetryLater エラー コードは、キャッシュ クラスターが一時的に要求を完了できないことを示します。たとえば、管理者がキャッシュ クラスターを構成している場合にこのエラーが発生することがあります。

このエラーの種類では、DataCacheException オブジェクトの SubStatus プロパティの値を確認することが重要です。このプロパティは、失敗の理由を説明する詳細情報を示します。たとえば、キャッシュ クラスターが停止した場合、スローされた DataCacheExceptionErrorCode プロパティは RetryLater に設定され、SubStatus プロパティは CacheServerUnavailable に設定されます。この同じ SubStatus 値が、要求に関連付けられている Windows アカウントがキャッシュ クラスターで許可されていない場合、またはキャッシュ ホスト上のファイアウォールが正しく構成されていない場合にも表示されることに注意してください。

RetryLater エラー コードは、1 つ以上のターゲット サーバーで使用可能なメモリが少なくなっている場合にも発生することがあります。このような状況では、SubStatus プロパティは Throttled に設定されます。スロットルされたキャッシュ サーバーに影響を与える可能性のある複数の要素があります。

  • get-cacheconfig Windows Powershell コマンドでキャッシュの設定を確認してください。EvictionTypeLRU ではなく None に設定されているキャッシュを検索します。削除が無効になっている場合、サーバーのメモリが少なくなっても、キャッシュ クラスターはキャッシュされている項目を削除できません。

  • Windows タスク マネージャーまたはパフォーマンス モニターを使用して、キャッシュ サーバー上で使用可能なメモリを消費している可能性のある他のプロセスを探します。

  • アプリケーションによるキャッシュの使用を調べます。一定の時間に挿入されるオブジェクトの平均数、オブジェクトのサイズ、およびタイムアウトの値はすべて、キャッシュ クラスターで必要なメモリの総量に影響を与えます。

  • カスタム領域が使用されているかどうかを検討します。領域は 1 つのキャッシュ サーバーだけに存在するので、領域内の項目はすべてのキャッシュ ホストに広がることができません。大きい領域が 1 つのキャッシュ サーバーに存在している場合、他のキャッシュ サーバーに使用可能なメモリがある場合でも、そのサーバーはスロットル状態になる可能性があります。

ConnectionTerminated

ConnectionTerminated エラー コードは、キャッシュ クライアントとキャッシュ クラスター間の接続が中断されたことを示します。このエラーには、ネットワーク エラー、キャッシュ サーバーのシャットダウンなど、さまざまな原因が考えられます。タイムアウト エラーの場合と同様、ConnectionTerminated エラーには要求された操作の成功や失敗は反映されません。エラー ハンドラーでは両方の可能性を想定する必要があります。

関連項目

概念

例外処理の概要 (Windows Server AppFabric キャッシュ)

  2011-12-05