有効期限のトラブルシューティング (Windows Server AppFabric キャッシュ)
Windows Server AppFabric は、有効期限を使用してキャッシュ内のオブジェクトの保持期間を制御します。 有効期限自体は AppFabric キャッシュのアーキテクチャが普通に備えている部分ですが、有効期限の設定に関連する問題のトラブルシューティングが必要になる場合があります。 有効期限の詳細については、「有効期限と削除」を参照してください。
有効期限に関する問題の診断
オブジェクトがキャッシュに追加されると、キャッシュによって使用されるメモリはメモリの低基準値に近づきます。 Get-CacheHostConfig
Windows PowerShell コマンドを使用して、CacheSize
および LowWatermark
の設定を確認できます。 キャッシュ ホストが現在使用しているメモリの量は、パフォーマンス モニターの AppFabric Caching:Host | Total Data Size Bytes カウンターで確認できます。 メモリの低基準値に達すると、キャッシュ クラスターは有効期限が切れた項目をキャッシュから定期的に削除します。 メモリの高基準値に達すると、キャッシュ クラスターは、有効期限が切れたオブジェクトをキャッシュから削除するだけでなく、最も長く使われていない項目も削除します。
パフォーマンス モニターなどのツールでキャッシュの動作を観察するだけでは、有効期限の設定に関する特定の問題を識別することは困難です。 さらによい方法は、各キャッシュに対する既定の有効期限の設定を調べて、キャッシュ内のデータの種類に対して有効期限の設定が適切かどうかを判断することです。 主要な考慮事項は次の 2 つです。
有効期限が短すぎないか。 この場合、アプリケーションではキャッシュミスが増加し、キャッシュへの項目の再追加が必要になります。
有効期限が長すぎないか。 キャッシュ クラスターでの挿入量が多い場合、または有効期限が非常に長い場合は、キャッシュされている項目が有効期限切れになる前にメモリの高基準値に達する可能性があります。 その場合は削除実行が行われます。 削除の詳細については、「削除のトラブルシューティング (Windows Server AppFabric キャッシュ)」を参照してください。
次の Windows PowerShell スクリプトを使用すると、各キャッシュ、その有効期限設定、および分単位での既定の有効期限時間が表示されます。
$caches = Get-Cache -MaxRegions 0
foreach($cache in $caches) { Write-Host $cache.CacheName (Get-CacheConfig $cache.CacheName).IsExpirable (Get-CacheConfig $cache.CacheName).TimeToLive }
このスクリプトからの次のような出力サンプルについて考えます。
Cache1 True 10
Cache2 True 10
Cache3 True 1
Cache4 False 10
default True 10
この出力例では、ほとんどのキャッシュで既定の設定が使用されていることがわかります。 つまり、有効期限は有効で、有効期限の時間は 10 分です。Cache3
は有効期限は有効ですが、時間は 1 分になっています。 Cache3
のクライアントを調べて、1 分であってもクライアントにとって項目のキャッシュによるメリットが十分にあるかどうかを確認する必要があります。Cach4
は有効期限が無効になっているので、10 分という値は適用されません。 Cache4
のクライアントを調べて、このキャッシュで有効期限を無効にする妥当な理由があるかどうかを確認する必要があります。 また、Cache4
のサイズを調べて、キャッシュ ホストでメモリの高基準値に達する原因となるような大量のデータが含まれるかどうかも確認する必要があります。
重要
これらのキャッシュ設定では既定値が示されていますが、アプリケーションでは追加する個別の項目について有効期限を制御できます。 アプリケーションで項目にタイムアウト値を指定した場合、キャッシュの設定よりそのタイムアウト値が優先されます。 また、アプリケーションがキャッシュ内の項目をロックした場合、その項目は有効期限が切れてもキャッシュに残ります。
有効期限に関する問題の解決
有効期限の設定を変更する必要があると判断した場合は、Set-CacheConfig
Windows PowerShell コマンドを使用して有効期限の設定を変更できます。 次に示すコマンドでは、Cache1
の有効期限設定を変更し、有効期限を有効にして、時間を 5 分に設定しています。
Set-CacheConfig Cache1 -Expirable true -TimeToLive 5
有効期限の設定をアプリケーションで制御している場合、キャッシュされる項目の有効期限時間またはロック状態を調節するには、開発者がアプリケーションを変更する必要があります。
関連項目
概念
サーバーの問題のトラブルシューティング (Windows Server AppFabric キャッシュ)
2011-12-05