RetryLater (NoWriteQuorum)
ここでは、エラー コードが RetryLater でサブステータスが NoWriteQuorum である DataCacheException 例外について説明します。このエラーは、キャッシュ ホストが不足していて高可用性要件を満たすことができず、キャッシュが読み取り専用であることを示します。高可用性機能の詳細については、「高可用性」を参照してください。
たとえば、Cache1
で高可用性機能が使用されるものとします。キャッシュ クラスターにキャッシュ ホストが 3 台ある場合は、2 台以上のキャッシュ ホストが常時稼働している必要があります。キャッシュ ホストが 1 台しか稼働していない場合、Cache1
にはプライマリ キャッシュ ホストしかなく、セカンダリ コピーは存在しません。この状況でキャッシュに書き込もうとすると、このエラーが発生します。
セカンダリとして使用できるキャッシュ ホストがある場合でも、一時的にこのエラーが発生する可能性があります。キャッシュ ホストが使用できなくなった場合、キャッシュ クラスターではセカンダリ キャッシュ コピーがプライマリに昇格されます。次に、キャッシュ データの新しいセカンダリ コピーが別のキャッシュ ホストに作成されます。新しいセカンダリ コピーの作成中に、アプリケーションには NoWriteQuorum エラーが返される可能性があります。キャッシュのサイズやネットワークの速度により、この遅延は数秒で済むこともあれば数分かかることもあります。この状況が疑われる場合は、データ転送速度を潜在的に改善する方法があります。以下に、この対策の手順を示します。
テキスト エディターを使用して、".\Program Files\Windows Server AppFabric" ディレクトリの DistributedCacheService.exe.config ファイルを開きます。
CopyQueueCapacity
の値を2
より大きい値に変更します。この値には、2
、4
、8
、または16
のいずれかを指定する必要があります。
ヒント
この値を増やすと遅延は短縮しますが、CPU とネットワークの使用が増加することがあります。CopyQueueCapacity
に最適な数値を決定するには、問題のシミュレーションを実行してこれらの設定の影響を試すことをお勧めします。
関連項目
概念
2012-03-05