Citrix ADC

キャッシュ・パフォーマンスの向上

統合キャッシュのパフォーマンスを向上させることができます。これには、同じキャッシュされたデータに対する同時リクエストを処理したり、オリジンサーバーからのキャッシュされたレスポンスの更新に関連する遅延を回避したり、キャッシュするだけの十分な頻度でレスポンスが要求されるようにします。

フラッシュクラウドを減らす

フラッシュクラウドは、多くのユーザーが同時に同じデータを要求したときに発生します。オブジェクト全体がダウンロードされた後にのみヒットを提供するようにキャッシュを構成した場合、フラッシュ群集内のすべての要求がキャッシュミスになる可能性があります。

フラッシュクラウドを減少または排除するには、次の手法を使用します。

  • PREFETCH:期限切れになる前に肯定応答をリフレッシュして、古くなったり非アクティブになったりしないようにします。詳細については、「有効期限が切れる前に応答を更新する」を参照してください。
  • キャッシュバッファリング:レスポンスの全体がダウンロードされるのを待たずに、オリジンサーバーからレスポンスヘッダーを受け取るとすぐに、複数のクライアントへのレスポンスの提供を開始します。応答を同時にダウンロードできるクライアント数の唯一の制限は、使用可能なシステムリソースです。Citrix ADCアプライアンスは、ダウンロードを開始したクライアントがダウンロードが完了する前に停止した場合でも、応答をダウンロードして処理します。応答のサイズがキャッシュサイズを超えた場合、または応答がチャンクされた場合、キャッシュは応答の格納を停止しますが、クライアントへのサービスは中断されません。
  • Flash Cache: Flash Cache はリクエストをキャッシュにキューイングし、一度に 1 つのリクエストだけがサーバーに到達できるようにします。

詳細については、「キャッシュへの要求のキューイング」を参照してください。

有効期限が切れる前にレスポンスを更新する

キャッシュされた応答が必要なときに常に最新の状態になるように、PREFETCH オプションは、計算された有効期限前に応答を更新します。プリフェッチ間隔は、最初のクライアント要求を受信した後に計算されます。それ以降、Citrix ADCアプライアンスは、PREFETCHパラメータで設定した時間間隔でキャッシュされた応答を更新します。

この設定は、要求間で頻繁に更新されるデータに便利です。否定的な応答(404 メッセージなど)には適用されません。

コマンドラインインターフェイスを使用してコンテンツグループのプリフェッチを構成するには

コマンドプロンプトで、次のように入力します。

set cache contentgroup <name> -prefetch YES [-prefetchPeriod <seconds> | -prefetchPeriodMilliSec <milliseconds>] [-prefetchMaxPending <positiveInteger>]

*GUIを使用してコンテンツ・グループのプリフェッチを構成するには

[最適化] > [統合キャッシュ] > [コンテンツグループ] に移動し、 コンテンツグループを選択します。

その他]タブの[フラッシュ群集とプリフェッチ]グループで[プリフェッチ] オプションを選択し、[間隔]および[保留中のプリフェッチの最大数]テキスト・ボックスに値を指定します。

リクエストをキャッシュにキューイングする

Flash Cache オプションは、同時に到着するリクエスト(フラッシュ群集)をキューに入れ、レスポンスを取得して、リクエストがキューにあるすべてのクライアントに配信します。この処理中に応答がキャッシュ不能になると、Citrix ADCアプライアンスはキャッシュからの応答の提供を停止し、代わりにキューに入れられたクライアントに対するオリジンサーバーの応答を提供します。応答が利用できない場合、クライアントはエラーメッセージを受け取ります。

フラッシュキャッシュはデフォルトで無効になっています。同じコンテンツグループで毎回ポーリング(PET)とフラッシュキャッシュを有効にすることはできません。

Flash Cache の欠点の 1 つは、サーバーがエラー(たとえば、迅速に修正された 404)で応答した場合、そのエラーが待機中のクライアントにファンアウトされることです。

: Flash Cacheが有効になっている場合、Citrix ADCアプライアンスは、クライアントリクエストのAccept-EncodingヘッダーとレスポンスのContent-Encodingヘッダーを正しく一致させることができない場合があります。Citrix ADCアプライアンスは、これらのヘッダーが一致し、誤ってヒットしたと見なすことができます。回避策として、適切なAccept-Encoding ヘッダーを持たないクライアントにヒットを提供できないように、統合キャッシュポリシーを構成できます。

コマンドラインインターフェイスを使用して Flash Cache を有効にするには

コマンドプロンプトで、次のように入力します。

set cache contentgroup <contentGroupName> -flashcache yes

GUI を使用してフラッシュキャッシュを有効にするには

[最適化] > [統合キャッシュ] > [コンテンツグループ] に移動し、コンテンツグループを選択します。

[その他] タブの [フラッシュ群集とプリフェッチ] グループで、[プリフェッチ] オプションを選択します。

クライアントがダウンロードを停止した後にレスポンスをキャッシュする

Quick Abort パラメータを設定すると、応答がキャッシュ内に格納される前にクライアントが要求を停止した場合でも、応答のキャッシュを続行できます。

ダウンロードされた応答サイズがクイックアボートサイズ以下の場合、Citrix ADCアプライアンスは応答のダウンロードを停止します。Quick Abort パラメータを 0 に設定すると、すべてのダウンロードが停止します。

コマンドラインインターフェイスを使用してクイックアボートサイズを構成するには

コマンドプロンプトで、次のように入力します。

set cache contentgroup <name> -quickAbortSize <integerInKBytes>

GUI を使用してクイックアボートサイズを設定するには

  1. [最適化] > [統合キャッシュ] > [コンテンツグループ] に移動し、コンテンツグループを選択します。
  2. [メモリ] タブで、[クイック中止:] テキストボックス以上の場合はキャッシュを続行する] で関連する値を設定します。

キャッシュする前に最低限のサーバーヒット数を要求する

応答がキャッシュされる前に、オリジンサーバーで検出される必要のある最小回数を設定できます。キャッシュメモリが急速にいっぱいになり、予想よりも低いヒット率がある場合は、最小ヒットを増やすことを検討する必要があります。

最小ヒット数のデフォルト値は 0 です。この値は、最初のリクエストの後にレスポンスをキャッシュします。

コマンドラインインターフェイスを使用してキャッシュする前に必要な最小ヒット数を構成するには

コマンドプロンプトで、次のように入力します。

set cache contentgroup <name> -minhits <positiveInteger>

GUI を使用してキャッシュする前に必要な最小ヒット数を設定するには

  1. [最適化] > [統合キャッシュ] > [コンテンツグループ] に移動し、コンテンツグループを選択します。
  2. [メモリ] タブで、[ヒット数が次の値より小さい場合はキャッシュしない] テキストボックスに適切な値を設定します。

パフォーマンスの最適化の例

この例では、クライアントが株価にアクセスします。株価は非常に動的です。統合キャッシュは、オリジンサーバーに複数のリクエストを送信せずに、同時クライアントに対して同じ株価を提供するように設定します。株価は、すべてのクライアントにダウンロードされた後に失効し、同じ株価に対する次の見積依頼がオリジンサーバーからフェッチされます。これにより、見積もりは常に最新の状態になります。

次のタスクの概要では、株価アプリケーションのキャッシュを構成する手順について説明します。

株価アプリケーションのキャッシュを構成する

株価のコンテンツグループの作成

詳細については、「コンテンツグループについて」を参照してください。

このコンテンツグループに対して以下を設定します。

  1. [有効期限の方法] タブで、[応答完了後に失効する] チェックボックスをオンにします。
  2. その他 」タブで「 Flash Cache 」チェックボックスをオンにして、「 作成 」をクリックします。
  3. 株価をキャッシュするキャッシュポリシーを追加します。

詳細は、「統合キャッシュでのポリシーの構成」を参照してください。

ポリシーに対して以下を設定します。

  1. [アクション] リストと [グループに格納] リストで、[CACHE] を選択し、前の手順で定義したグループを選択します。
  2. [追加] をクリックし、[式の 追加] ダイアログボックスで、株価見積依頼を識別する式を設定します。例:http.req.url.contains (「cgi-bin/stock-quote.pl」)
  3. ポリシーをアクティブ化します。

詳細については、「統合キャッシュポリシーのグローバルバインド」を参照してください。この例では、このポリシーを request-time 上書き処理にバインドし、プライオリティを低い値に設定します。