削除のトラブルシューティング (Windows Server AppFabric キャッシュ)
Windows Server AppFabric キャッシュ クラスターでは、削除機能を使用して、キャッシュ サービスがキャッシュ ホスト上で使用するメモリ量を制御します。 削除は次の 2 つのシナリオで発生します。
サーバー上で利用可能な物理メモリがきわめて少ない場合。
キャッシュ サービスのメモリ使用量が、キャッシュ ホストの高基準値を超過した場合。
削除の実行は必ずしも問題の発生を意味するわけではありません。 異常に大量のアクティビティがキャッシュ クラスター上に存在する場合、削除により、最も長く使われていない項目を削除して、メモリの問題によるスロットルの発生を防止することができます。 スロットルの詳細については、「スロットルのトラブルシューティング (Windows Server AppFabric キャッシュ)」を参照してください。 ただし、定期的に削除が発生するのは、メモリが不足していることや、キャッシュ ホストまたは 1 つ以上のキャッシュの構成に問題があることを示している可能性もあります。
削除の詳細については、「有効期限と削除」を参照してください。
削除に関する問題の診断
アプリケーション側からすると、削除が実行されることで、アプリケーションはキャッシュにあったはずの項目を見つけることができなくなります。 つまり、アプリケーションはそれらの項目を再設定する必要があり、このことがアプリケーションのパフォーマンスに悪影響を及ぼすおそれがあります。
削除の実行頻度を評価するには、パフォーマンス モニターを使用して 4 つのカウンターのログを記録します。
カウンター | 説明 |
---|---|
AppFabric キャッシュ: ホスト | 解放実行の合計数 |
AppFabric キャッシュ サービス開始以降の削除実行の合計数です。 |
AppFabric キャッシュ: ホスト | 合計データ サイズ バイト数 |
キャッシュされたデータのバイト単位の合計サイズです。 |
AppFabric キャッシュ: ホスト | 解放されたオブジェクトの合計数 |
AppFabric キャッシュ サービス開始以降に削除されたオブジェクトの数です。 |
AppFabric キャッシュ: ホスト | 解放されたメモリ合計 |
AppFabric キャッシュ サービス開始以降に削除されたバイト単位のメモリの量です。 |
削除カウンターはキャッシュ サービス開始以降の累積であるため、この値の長期的な変化に注意する必要があります。
また、削除の実行に関係するイベントが 2 つあります。 これらのイベントは、AppFabric の操作ログに記録されます。
イベント ID | 説明 |
---|---|
118 |
サービスで使用できるメモリが少なくなっています。 |
115 |
サービスは調整済みになりました。 |
118 イベントは、キャッシュ サービスのメモリ使用量が高基準値を超過したことを示します。 これにより、メモリ使用量を低基準値まで戻すために削除が実行されます。 115 イベントは、キャッシュ サービスで使用できるメモリが少なくなり、調整済みになったことを示します。 これにより、調整された状態を解除するために削除が実行されます。 スロットルの詳細については、「スロットルのトラブルシューティング (Windows Server AppFabric キャッシュ)」を参照してください。
ヒント
ここで説明されたツールの詳細については、「正常性の監視ツール (Windows Server AppFabric キャッシュ)」を参照してください。
削除に関する問題の解決
サーバーのメモリ不足のために削除が実行される場合、サーバーは同時に調整済みであると考えられます。 スロットルを解除する方法の詳細については、「スロットルのトラブルシューティング (Windows Server AppFabric キャッシュ)」を参照してください。
サーバーが調整されていない状態で削除が実行される場合、Windows PowerShell の Get-CacheHostConfig
コマンドでキャッシュ ホストの構成設定を確認してください。 たとえば、次のキャッシュ ホスト設定を見てみましょう。
Get-CacheHostConfig -HostName CacheServer1 -CachePort 22233
HostName : CacheServer1
ClusterPort : 22234
CachePort : 22233
ArbitrationPort : 22235
ReplicationPort : 22236
Size : 100 MB
ServiceName : AppFabricCachingService
HighWatermark : 90%
LowWatermark : 80%
IsLeadHost : False
この例では、CacheServer1
のキャッシュ サービス用に確保されたメモリ量はわずか 100 MB です。 高基準値は 90%
です。 つまり、このキャッシュ ホストで使用されたメモリが 100 MB の 90% に達すると、キャッシュ サービスはメモリ不足になり、削除が実行されます。 この例で問題なのは、キャッシュ サービス用のメモリが異常に少なく設定されていることです。 解決方法は、CacheServer1
キャッシュ ホストのキャッシュ メモリ量を増やすことです。 次の例では、キャッシュ クラスターを停止して、メモリ量を 1000 MB に変更しています。
Stop-CacheCluster
Set-CacheHostConfig -CacheSize 1000 -HostName CSD1516217 -CachePort 22233
警告
キャッシュ サービスの利用可能メモリ量を増やす場合は、増加に対応できる物理メモリが存在する必要があります。
ヒント
CacheSize
と HighWatermark
の組み合わせにより、削除を実行するタイミングが決定されます。 キャッシュ メモリの使用量が確実にそれ以下に保たれるわけではありません。 たとえば、次のセクションの削除されないキャッシュに関する説明を参照してください。
削除されないキャッシュに関する考慮事項
既定では、新しいキャッシュでは削除が有効になっていますが、削除が有効ではないキャッシュを作成できます。 キャッシュの削除が有効になっていない場合、削除が実行されても、そのキャッシュからは項目が削除されません。 これにより次の影響があります。
キャッシュが削除されないせいでメモリ不足になった場合、削除が実行されても、問題は解消されません。 この場合、削除が繰り返し実行されることになります。
キャッシュが削除されないせいでメモリ不足になった場合、削除が実行されると、削除が有効になっている他のキャッシュから項目が削除されます。
どのキャッシュで削除が有効になっているかを確認するには、Windows PowerShell の Get-CacheConfig
コマンドを使用します。 簡単なスクリプトを使用して、各キャッシュ、その削除設定、およびキャッシュ サイズを表示することができます。
$cache = Get-Cache
foreach($cache in $caches) { Write-Host $cache.CacheName (Get-CacheConfig $cache.CacheName).EvictionType (Get-CacheStatistics $cache.CacheName).Size }
次の例は、このスクリプトの出力サンプルを示しています。
Cache1 None 20481960
Cache2 LRU 20706360
default LRU 4099920
この出力サンプルから、Cache1
で削除が無効になっていて (LRU
ではなく None
)、現在のサイズは 20481960
バイトであることがわかります。
関連項目
概念
サーバーの問題のトラブルシューティング (Windows Server AppFabric キャッシュ)
2011-12-05