Go to main content
Oracle Solaris 11.3 でのクロック同期と Web キャッシュを使用したシステムパフォーマンスの拡張

印刷ビューの終了

更新: 2016 年 11 月
 
 

ネットワークキャッシュとアクセラレータの概要

NCA (ネットワークキャッシュとアクセラレータ) は、HTTP 要求時にアクセスされる Web ページのカーネル内キャッシュを保持することにより、Web サーバーのパフォーマンスを向上させます。このカーネル内キャッシュはシステムメモリーを使用するため、通常は Web サーバーによって処理される HTTP 要求のパフォーマンスを、大幅に向上させます。HTTP 要求時に Web ページがシステムメモリー内に保持されているため、カーネルと Web サーバー間のオーバーヘッドが減少し、Web サーバーのパフォーマンスが向上します。NCA にはソケットインタフェースが用意されており、どのような Web サーバーでも最小限の変更で NCA と通信できます。

要求されたページがカーネル内キャッシュから取得された場合 (キャッシュヒット時) は、パフォーマンスが飛躍的に向上します。要求されたページがキャッシュ内になく、Web サーバーから取得する必要がある場合 (キャッシュミス時) でも、パフォーマンスは大幅に改善されます。

この製品は、専用の Web サーバー上で実行するようにします。NCA が動作するサーバー上で他の大きいプロセスを実行すると、問題が起きることがあります。

NCA はすべてのキャッシュヒットをログに記録します。ログはパフォーマンスを向上させるためにバイナリ形式で格納されます。ncab2clf コマンドを使用すると、バイナリ形式のログを共通ログ形式 (CLF) に変換できます。

    この Oracle Solaris リリースには、次のような機能強化が行われています。

  • ソケットインタフェースの提供。

  • AF_NCA サポートを可能にするベクトル化 sendfile システムコールの提供。詳細は、sendfilev(3EXT) のマニュアルページを参照してください。

  • ncab2clf コマンド用の 2 つの新しいオプション、具体的には、選択された日付以前のレコードをスキップするための –s オプションと、指定された数のレコードを処理するための –n オプションの追加。

  • ncalogd.conf ファイル内の logd_path_name を用いて raw デバイス、ファイル、または両者の組み合わせを指定できます。

  • 1 つの Web サーバーによる複数の AF_NCA ソケットのオープンをサポート。複数のソケットを使用すると、1 つのサーバーで複数の Web サーバーを実行できます。

  • NCA を使用する IP アドレスやポートを管理する新しい構成ファイル (/etc/nca/ncaport.conf)。Web サーバーが AF_NCA ソケットを直接サポートしない場合、このファイルと NCA ソケットユーティリティーライブラリを使って、AF_INET ソケットを AF_NCA ソケットに変換します。

Web キャッシュサーバーの管理に関するタスク情報は、Web キャッシュサーバーの管理 (タスクマップ)および Web ページのキャッシュ管理を参照してください。

NCA アーキテクチャー

NCA が機能するためには、次のコンポーネントが必要です。

  • カーネルモジュール: ncakmod

  • Web サーバー: httpd

カーネルモジュール ncakmod は、Web ページのキャッシュをシステムメモリー内に保持します。このモジュールは、ソケットインタフェースを介して Web サーバー httpd と通信します。プロトコルファミリータイプは PF_NCA です。

また、カーネルモジュールは、すべての HTTP キャッシュヒットを記録するログ機能も備えています。NCA ロギングは、HTTP データをバイナリ形式でディスクに書き込みます。NCA には、バイナリログファイルを共通ログ形式 (CLF) に変換するユーティリティーが用意されています。

次の図に、通常のデータフローと、NCA が有効になっている場合のデータフローを示します。

図 1  NCA サービスのデータフロー

image:このフロー図は、カーネル内の NCA 層を介して行われるクライアント要求のデータフローを示しています。

NCA から httpd への要求フロー

クライアントと Web サーバー間の要求フローは次のように続行されます。

  1. クライアントから Web サーバーに対して HTTP 要求が発行されます。

  2. ページがキャッシュ内にある場合は、カーネル内キャッシュの Web ページが返されます。

  3. ページがキャッシュ内にない場合は、Web サーバーに要求が送信され、ページが取得または更新されます。

  4. ページがキャッシュされるかどうかは、応答で使用される HTTP プロトコルのセマンティクスによって異なります。HTTP 要求ヘッダーに Pragma:No-cache が含まれている場合、ページはキャッシュされません。

  5. ページがクライアントに返されます。

NCA に必要なファイル

次の表には、NCA 機能をサポートする必要があるファイルがリストされています。ほとんどのファイルは ASCII 形式ですが、バイナリ形式のファイルもあります。

表 2  NCA ファイル
ファイル名
機能
/dev/nca
NCA デバイスのパス名。
/etc/hostname.*
サーバー上で構成されているすべての物理インタフェースについてホスト名が記述されているファイル。
/etc/hosts
サーバーに対応付けられるすべてのホスト名が記述されているファイル。NCA が機能するには、このファイルの各エントリが、対応する /etc/hostname.* ファイル内のエントリと一致していなければなりません。
/etc/init.d/ncakmod
NCA サーバーを起動するスクリプト。このスクリプトは、サーバーのブート時に実行されます。
/etc/init.d/ncalogd
NCA ロギングを開始するスクリプト。このスクリプトは、サーバーのブート時に実行されます。
/etc/nca/nca.if
NCA が実行されるすべてのインタフェースが記述されているファイル。詳細は、nca.if(4) のマニュアルページを参照してください。
/etc/nca/ncakmod.conf
NCA 用のすべての構成パラメータが記述されているファイル。詳細は、ncakmod.conf(4) のマニュアルページを参照してください。
/etc/nca/ncalogd.conf
NCA ロギング用のすべての構成パラメータが記述されているファイル。詳細は、ncalogd.conf(4) のマニュアルページを参照してください。
/etc/nca/ncaport.conf
NCA で使用する IP アドレスとポートが記述されているファイル。詳細は、ncaport.conf(4) のマニュアルページを参照してください。
/system/volatile/nca_httpd_1.door
ドアパス名。
/usr/bin/ncab2clf
ログファイル内のデータを共通ログ形式に変換するために使用されるコマンド。詳細は、ncab2clf(1) のマニュアルページを参照してください。
/usr/lib/net/ncaconfd
ブート時に複数のインタフェース上で NCA が実行するように構成するために使用されるコマンド。詳細は、ncaconfd(1M) のマニュアルページを参照してください。
/usr/lib/nca_addr.so
AF_INET ソケットの代わりに AF_NCA ソケットを使用するライブラリ。このライブラリは AF_INET ソケットを使用する Web サーバー上で使用します。詳細は、ncad_addr(4) のマニュアルページを参照してください。
/var/nca/log
ログファイルのデータを保持するファイル。バイナリ形式のファイルなので編集できません。