ADC

キャッシュのパフォーマンスを向上させる

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

フラッシュの混雑を軽減

フラッシュクラウドは、多数のユーザーが同じデータを同時にリクエストしたときに発生します。オブジェクト全体がダウンロードされた後にのみヒットを処理するようにキャッシュを設定すると、フラッシュクラウド内のリクエストがキャッシュミスになる可能性があります。

次のテクニックを使うと、フラッシュの混雑を減らすか、なくすことができます。

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

詳しい情報については、「キャッシュへのリクエストのキューイング」セクションを参照してください。

有効期限が切れる前に回答を更新する

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

この設定は、リクエスト間で頻繁に更新されるデータに役立ちます。否定的な応答(404メッセージなど)には適用されません。

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

コマンドプロンプトで入力します。

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

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

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

その他 」タブの「Flash Crowdとプリフェッチ」グループで「 プリフェッチ 」オプションを選択し、「間隔」テキストボックスと「保留中のプリフェッチの最大数」テキストボックスに値を指定します。

リクエストをキャッシュにキューに入れる

Flash Cache オプションでは、同時に届く要求 (フラッシュクラウド) をキューに入れ、応答を取得して、その要求がキューに入っているすべてのクライアントに配信します。このプロセス中に応答がキャッシュできなくなった場合、NetScalerアプライアンスはキャッシュからの応答の処理を停止し、代わりに元のサーバーの応答をキューに入れたクライアントに提供します。応答がない場合、クライアントはエラーメッセージを受け取ります。

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

Flash Cache のデメリットの 1 つは、サーバーがエラーを返した場合 (たとえば、すぐに修正される 404)、エラーが待機中のクライアントに拡散されることです。

: Flash Cacheが有効になっていると、NetScalerアプライアンスがクライアント要求のAccept-Encodingヘッダーを応答内のContent-Encodingヘッダーと正しく照合できない場合があります。NetScalerアプライアンスは、これらのヘッダーが一致すると想定して、誤ってヒットする可能性があります。回避策として、統合キャッシュポリシーを設定して、適切な Accept-Encoding ヘッダーを持たないクライアントにヒットを提供しないようにすることができます。

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

コマンドプロンプトで入力します。

set cache contentgroup <contentGroupName> -flashcache yes

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

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

その他 」タブの「Flash Crowdとプリフェッチ」グループで、「 プリフェッチ 」オプションを選択します。

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

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

ダウンロードした応答サイズがQuick Abortのサイズ以下の場合、NetScalerアプライアンスは応答のダウンロードを停止します。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. アクション」リストと「グループに保存」リストで、「 キャッシュ 」を選択し、前のステップで定義したグループを選択します。
  2. 追加」をクリックし、「 式の追加 」ダイアログボックスで、株価リクエストを識別する式を設定します。たとえば、http.req.url.contains (「cgi-bin/stock-quote.pl」)
  3. ポリシーを有効にします。

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

キャッシュのパフォーマンスを向上させる