この項には次のトピックが含まれます:
頻繁にリクエストされるデータをキャッシュすることで、クライアントがレスポンスを待機する時間が削減されます。また、頻繁にアクセスされるURLがメモリー内に格納される場合、オリジン・サーバーの負荷は大幅に削減されます。
Oracle Traffic Directorでは、キャッシュ機能はデフォルトで有効化されます。
オリジン・サーバーから静的および動的に生成されたコンテンツの両方がキャッシュされます。
完全なレスポンス(レスポンス・コード: 200
)のみがキャッシュされます。
HTTP GETおよびHEADリクエストへのレスポンスのみがキャッシュされます。
Oracle Traffic Directorは、レスポンスの本文、およびDest-IP
、Proxy-Agent
、Proxy-Connection
、Server
、Set-Cookie
、State-Info
およびStatus
を除くすべてのレスポンス・ヘッダーをキャッシュします。
Oracle Traffic Directorは、コンテンツを再検証するディレクティブ、特定のヘッダーをキャッシュしないディレクティブなど、オリジン・サーバーからのCache-Control
ディレクティブに従います。
各仮想サーバーに固有の1つ以上のキャッシュ・ルールを構成できます。これらのルールは、最大ヒープ領域、最大入力数および最大オブジェクト・サイズなど、構成に指定された全体の制限に影響を受けます。
キャッシュ・ルールは、すべてのリクエストに適用するようにも、指定された条件に一致するリクエストのみに適用するようにも構成できます。
キャッシュされたデータは、仮想サーバーごとに別々にプロセス・メモリー(ヒープ)内に保持されます。インスタンスが停止または再起動されると、キャッシュは空になります。
WebSocketアップグレード・リクエストはキャッシュされません。
クライアントが最初にオブジェクトをリクエストすると、Oracle Traffic Directorはリクエストをオリジン・サーバーに送信します。このリクエストはキャッシュ・ミスになります。リクエストされたオブジェクトがキャッシュ・ルールに一致する場合、Oracle Traffic Directorオブジェクトをキャッシュします。同じオブジェクトの後続のリクエストについて、Oracle Traffic Directorはそのキャッシュのオブジェクトをクライアントに提供します。このようなリクエストは、キャッシュ・ヒットとなります。
Oracle Traffic Directorのキャッシュの動作は、RFC 2616の13項の仕様と整合性が取れています。詳細は、http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
を参照してください。
キャッシュ設定の表示
構成の現在のキャッシュ設定を表示するには、次の例に示すようにget-cache-prop
コマンドを実行します。
tadm> get-cache-prop --config=soa
enabled=true
replacement=lru
max-heap-space=10485760
max-entries=1024
max-heap-object-size=524288
仮想サーバーに定義されたキャッシュ・ルールのリストを表示するには、次の例に示すようにlist-cache-rules
コマンドを実行します。
tadm> list-cache-rules --config=soa --vs=soa --verbose --all
rule condition
-------------------------
cache-rule-2 "$uri = '^/images'
cache-rule-1 -
仮想サーバー固有のキャッシュ・ルールの現在の設定を表示するには、次の例に示すようにget-cache-rule-prop
コマンドを実行します。
tadm> get-cache-rule-prop --config=soa --vs=soa --rule=cache-rule-2
enabled=true
last-modified-factor=0
min-object-size=1
cache-https-response=true
condition="$uri = '^/images"
min-reload-interval=0
rule=cache-rule-2
query-maxlen=0
compression=true
max-reload-interval=3600
キャッシュ・メトリックの表示
プレーンテキストperfdump
レポートで、現在のキャッシュ・ヒット率、キャッシュ・ヒープ使用量、およびキャッシュ・エントリの再検証成功率を、次の例に示すように表示できます。
Proxy Cache: --------------------------- Proxy Cache Enabled yes Object Cache Entries 42 Cache lookup (hits/misses) 183/79 Requests served from Cache 22 Revalidation (successful/total) 30/38 ( 78.95%) Heap space used 16495
Proxy Cache Enabled
は、インスタンスに対してキャッシュが有効であるかどうかを示します。
Object Cache Entries
は、キャッシュ内に現在存在するエントリ(URI)の数です。
Cache lookup (hits/misses)
最初の数値は、リクエストされたURIに対してキャッシュ内でエントリが見つかった回数です。
2番目の数値は、リクエストされたURIがキャッシュ内で見つからなかった回数です。
Requests served from Cache
は、Oracle Traffic Directorがキャッシュから提供したリクエストの数です。
Revalidation (successful/total)
最初の番号は、キャッシュされたコンテンツの再検証が成功した回数です。
2番目の数値は、Oracle Traffic Directorが、キャッシュされたコンテンツの再検証を試みた合計回数です。
パーセント値は、再検証試行合計回数に対する再検証成功回数の割合です。
Heap space used
は、現在使用中のキャッシュ・ヒープ領域の量です。
キャッシュは、キャッシュ・ヒット率が高い場合、つまり比較的大量のリクエストがオリジン・サーバーに送信されるのではなく、キャッシュから提供される場合、クライアントへのレスポンス時間を短くできるという点で有効と考えられます。キャッシュ・ヒット率を高くするには、オリジン・サーバーからのキャッシュ可能なレスポンスを格納するために十分なメモリーが必要であり、キャッシュ内のエントリを定期的に検証する必要があります。
注意: 動的なコンテンツは一般的にキャッシュできません。このため、オリジン・サーバーによって提供されるアプリケーションまたはコンテンツが、ほとんど動的コンテンツで構成されている場合、キャッシュ・ヒット率は低くなる傾向があります。この場合、キャッシュを有効化してチューニングしても、パフォーマンスは大幅に向上しない可能性があります。 |
キャッシュ・ヒット率を向上させるために、次のキャッシュ・パラメータをチューニングできます。
キャッシュ・エントリ置換メソッド
キャッシュが一杯になると、つまりエントリ数が最大エントリ制限に到達する、またはキャッシュ・ヒープ・サイズが最大キャッシュ・ヒープ領域に到達すると、その後のキャッシュ・エントリは、既存のエントリが削除された場合のみ格納できます。キャッシュ・エントリの置換メソッドは、Oracle Traffic Directorにおいてキャッシュから削除できるエントリを決定する方法を指定します。
デフォルトの置換メソッドは、「最近最も使用されていない」(lru
)メソッドです。キャッシュが一杯になると、Oracle Traffic Directorは、最近最も使用されていないエントリを最初に破棄します。
もう1つのメソッドは、「最も使用頻度が低い」(lfu
)メソッドです。キャッシュが一杯になると、Oracle Traffic Directorは、最も使用頻度が低いエントリを最初に破棄します。
いずれのメソッドでも、Oracle Traffic Directorがキャッシュからコンテンツを提供するごとに、使用状況の情報(lru
置換メソッドの場合コンテンツが提供された時間、lfu
置換メソッドの場合コンテンツが提供された回数)を追跡する必要があります。このため、オリジン・サーバーにリクエストを送信するのではなく、キャッシュから直接コンテンツを提供することで短縮できる時間は、使用状況の情報を追跡するために必要な待機時間によってある程度は相殺されます。2つのメソッドでは、lru
の方が必要な演算リソースがわずかに少なくなります。
置換メソッドとしてfalse
を指定することで、キャッシュ・エントリの置換を無効化できます。
最大キャッシュ・ヒープ領域
使用可能なヒープ領域のうち少量しか使用されていない場合、仮想サーバー固有のキャッシュ・ルールの定義が絞り込まれすぎているため、レスポンスがキャッシュされていない可能性があります。
最適なキャッシュ・ヒープ・サイズは、システム・メモリーにどれほどの空きがあるかによって異なります。キャッシュ・ヒープが大きい場合、Oracle Traffic Directorはより多くのコンテンツをキャッシュできるため、ヒット率はより高くなります。ただし、キャッシュされたコンテンツのページングがオペレーティング・システムによって開始されるため、ヒープ・サイズは大きくしすぎないでください。
キャッシュ内のエントリの最大数
キャッシュ内のエントリ数が、perfdump
レポートに示されるように、一貫して最大エントリ数に近いまたは同数である場合、キャッシュのサイズが十分ではないことを意味します。最大エントリ数を増やすことを検討してください。
キャッシュ内のエントリ数が、許可されている最大エントリ数と比較して非常に少ない場合、仮想サーバー固有のキャッシュ・ルールの定義が絞り込まれすぎているため、レスポンスがキャッシュされていない可能性があります。
キャッシュ可能なオブジェクトの最大サイズ
システム・リソースを一定に保つために、オブジェクトが別のキャッシュ・ルールを満たしていても、キャッシュするオブジェクトのサイズを制限することができます。
キャッシュ・オブジェクトの最大サイズより大きいオブジェクトが頻繁にリクエストされる場合は、制限サイズを大きくすることを検討してください。
特定の仮想サーバーのキャッシュ・ルールでは、次のパラメータを指定できます。
キャッシュ可能なオブジェクトの最小サイズおよび最大サイズ
キャッシュ検証チェック間の最小間隔および最大間隔
キャッシュできる問合せ文字列内の最大文字数
キャッシュする前にコンテンツを圧縮するかどうか
HTTPSレスポンスをキャッシュするかどうか
管理コンソールまたはCLIのいずれかを使用して、キャッシュ設定を構成できます。
管理コンソールを使用したキャッシュ設定の構成
管理コンソールを使用してキャッシュ設定を構成するには、次の操作を行います。
2.3.2項「管理コンソールへのアクセス」の説明に従って、管理コンソールにログインします。
ページの左上隅にある「構成」ボタンをクリックします。
使用可能な構成のリストが表示されます。
変更する構成を選択します。
ナビゲーション・ペインで、「詳細設定」を選択します。
「詳細設定」ページが表示されます。
ページの「キャッシュ」セクションに移動します。
変更するキャッシュ・パラメータを指定します。
画面上のヘルプおよびプロンプトがすべてのパラメータに提供されています。
フィールドの値を変更する、または変更したテキスト・フィールドからタブアウトすると、ページの右上隅にある「保存」ボタンが有効になります。
「リセット」ボタンをクリックすることで、いつでも変更を破棄できます。
必要な変更を行った後、「保存」をクリックします。
更新された構成が保存されたことを確認するメッセージが、「コンソール・メッセージ」ペインに表示されます。
さらに、「デプロイメント保留中」メッセージが、メイン・ペインの上部に表示されます。4.3項「構成のデプロイ」の説明に従い、「変更のデプロイ」をクリックして更新された構成を即座にデプロイすることも、さらに変更を行いその後でデプロイすることもできます。
管理コンソールを使用した仮想サーバー固有のキャッシュ・ルールの構成
管理コンソールを使用して仮想サーバー固有のキャッシュ・ルールを作成するには、次の操作を行います。
2.3.2項「管理コンソールへのアクセス」の説明に従って、管理コンソールにログインします。
ページの左上隅にある「構成」ボタンをクリックします。
使用可能な構成のリストが表示されます。
仮想サーバー固有のキャッシュ・ルールを作成する構成を選択します。
ナビゲーション・ペインで、「仮想サーバー」を展開し、キャッシュ・ルールを作成する仮想サーバーの名前を展開して、「キャッシュ」を選択します。
「キャッシュ」ページが表示されます。仮想サーバーに現在定義されているキャッシュ・ルールがリストされ、そのキャッシュ・ルールが有効化されているかどうかが示されます。
キャッシュ・ルールの作成
「新規キャッシュ・ルール」をクリックします。
「新規キャッシュ・ルール」ダイアログ・ボックスが表示されます。
「名前」フィールドで、新規キャッシュ・ルールの名前を入力します。
次へをクリックします。
このキャッシュ・ルールが仮想サーバーに対する最初のキャッシュ・ルールの場合、「新規キャッシュ・ルール」ダイアログ・ボックスに、ルールをすべてのリクエストに適用するかどうかを選択するオプションが表示されます。「すべてのリクエスト」を選択します。
条件を満たすリクエストにのみ、ルールを適用する場合は、「条件を新規に作成します」を選択して新しい条件を作成します。条件ビルダーで「変数/関数」を選択し、各ドロップダウン・リストから演算子を選択し、「値」フィールドに値を入力します。
複数の式を構成する場合は、ドロップダウン・リストでand
/or
演算子を選択します。同様に、指定した式が偽に評価されるときにルートを適用する場合は、Not
演算子を使用します。
条件を手動入力するには、「取消」をクリックし、「手動編集」をクリックします。「条件」フィールドで、キャッシュ・ルールが適用される条件を指定します。条件式の作成の詳細は、「条件」フィールドの近くにあるヘルプ・ボタンをクリックするか、『Oracle Traffic Director構成ファイル・リファレンス』の変数、式および文字列の補間の使用に関する項を参照してください。
次へをクリックし、キャッシュ・ルールの作成をクリックします。
作成したキャッシュ・ルールが「キャッシュ」ページに表示されます。
さらに、「デプロイメント保留中」メッセージが、メイン・ペインの上部に表示されます。4.3項「構成のデプロイ」の説明に従い、「変更のデプロイ」をクリックして更新された構成を即座にデプロイすることも、さらに変更を行いその後でデプロイすることもできます。
キャッシュ・ルールの編集
キャッシュ・ルールを有効化または無効化する、あるいはルールの設定を変更するには、次の操作を行います。
編集するキャッシュ・ルールの「名前」をクリックします。
「キャッシュ・ルールの編集」ダイアログ・ボックスが表示されます。
注意: 条件ビルダーにアクセスして条件を編集するには、「条件を満たすリクエスト」を選択し、「編集」をクリックします。条件ビルダーでは古い式を削除したり、新しい式を作成したりできます。 |
変更するパラメータを指定します。
画面上のヘルプおよびプロンプトがすべてのパラメータに提供されています。
条件式の作成の詳細は、「条件」フィールドの近くにあるヘルプ・ボタンをクリックするか、『Oracle Traffic Director構成ファイル・リファレンス』の変数、式および文字列の補間の使用に関する項を参照してください。
フィールドの値を変更する、または変更したテキスト・フィールドからタブアウトすると、ページの右上隅にある「保存」ボタンが有効になります。
「リセット」ボタンをクリックすることで、いつでも変更を破棄できます。
必要な変更を行った後、「保存」をクリックします。
更新された構成が保存されたことを確認するメッセージが、「コンソール・メッセージ」ペインに表示されます。
さらに、「デプロイメント保留中」メッセージが、メイン・ペインの上部に表示されます。4.3項「構成のデプロイ」の説明に従い、「変更のデプロイ」をクリックして更新された構成を即座にデプロイすることも、さらに変更を行いその後でデプロイすることもできます。
キャッシュ・ルールの削除
キャッシュ・ルールを削除するには、「削除」ボタンをクリックします。確認プロンプトで、「OK」です。
CLIを使用したキャッシュ設定の構成
構成のキャッシュ・プロパティを変更するには、set-cache-prop
コマンドを実行します。
たとえば、次のコマンドでは、最大キャッシュ・ヒープ領域が20MBに変更されます。
tadm> set-cache-prop --config=soa max-heap-space=20971520
OTD-70201 Command 'set-cache-prop' ran successfully.
仮想サーバーのキャッシュ・ルールを作成するには、create-cache-rule
コマンドを実行します。
たとえば、次のコマンドでは、構成soa
の仮想サーバーsoa.example.com
に対してcache-rule-images
という名前のルールが作成され、式$uri='^/images'
がtrueと評価されるリクエストがキャッシュされます。
tadm> create-cache-rule --condition="\$uri='^/images'" --config=soa --vs=soa.example.com cache-rule-images
OTD-70201 Command 'create-cache-rule' ran successfully.
--condition
オプションの値は、正規表現にする必要があることに注意してください。条件式の作成の詳細は、『Oracle Traffic Director構成ファイル・リファレンス』の変数、式および文字列の補間の使用に関する項を参照してください。
キャッシュ・ルールを変更するには、set-cache-rule-prop
コマンドを実行します。
たとえば、次のコマンドでは、キャッシュ・ルールcache-rule-images
に対してコンテンツの圧縮が無効化されます。
tadm> set-cache-rule-prop --config=soa --vs=soa.example.com --rule=cache-rule-images compression=false
OTD-70201 Command 'set-cache-rule-prop' ran successfully.
キャッシュ・ルールを削除するには、次の例に示すように、delete-cache-rule
コマンドを実行します。
tadm> delete-cache-rule --config=soa --vs=soa.example.com cache-rule-images
OTD-70201 Command 'delete-cache-rule' ran successfully.
更新された構成を有効にするには、deploy-config
コマンドを使用して、構成をOracle Traffic Directorインスタンスにデプロイする必要があります。
この項で説明されたCLIコマンドの詳細は、『Oracle Traffic Directorコマンドライン・リファレンス』を参照するか、--help
オプションを付けてコマンドを実行してください。