RetryLater (NoWriteQuorum)

ここでは、エラー コードが RetryLater でサブステータスが NoWriteQuorum である DataCacheException 例外について説明します。このエラーは、キャッシュ ホストが不足していて高可用性要件を満たすことができず、キャッシュが読み取り専用であることを示します。高可用性機能の詳細については、「高可用性」を参照してください。

たとえば、Cache1 で高可用性機能が使用されるものとします。キャッシュ クラスターにキャッシュ ホストが 3 台ある場合は、2 台以上のキャッシュ ホストが常時稼働している必要があります。キャッシュ ホストが 1 台しか稼働していない場合、Cache1 にはプライマリ キャッシュ ホストしかなく、セカンダリ コピーは存在しません。この状況でキャッシュに書き込もうとすると、このエラーが発生します。

セカンダリとして使用できるキャッシュ ホストがある場合でも、一時的にこのエラーが発生する可能性があります。キャッシュ ホストが使用できなくなった場合、キャッシュ クラスターではセカンダリ キャッシュ コピーがプライマリに昇格されます。次に、キャッシュ データの新しいセカンダリ コピーが別のキャッシュ ホストに作成されます。新しいセカンダリ コピーの作成中に、アプリケーションには NoWriteQuorum エラーが返される可能性があります。キャッシュのサイズやネットワークの速度により、この遅延は数秒で済むこともあれば数分かかることもあります。この状況が疑われる場合は、データ転送速度を潜在的に改善する方法があります。以下に、この対策の手順を示します。

  1. テキスト エディターを使用して、".\Program Files\Windows Server AppFabric" ディレクトリの DistributedCacheService.exe.config ファイルを開きます。

  2. CopyQueueCapacity の値を 2 より大きい値に変更します。この値には、248、または 16 のいずれかを指定する必要があります。

ヒント

この値を増やすと遅延は短縮しますが、CPU とネットワークの使用が増加することがあります。CopyQueueCapacity に最適な数値を決定するには、問題のシミュレーションを実行してこれらの設定の影響を試すことをお勧めします。

関連項目

概念

アプリケーション例外

  2012-03-05