目次
このマニュアルについて
第 1 章 iPlanet Web Server の基礎知識
第 2 章 iPlanet Web Server の管理
第 3 章 管理プリファレンスの設定
第 4 章 ユーザとグループの管理
第 5 章 サーバ セキュリティ
第 6 章 サーバ クラスタの管理
第 7 章 サーバのプリファレンスの設定
第 8 章 ログ ファイルの理解
第 9 章 SNMP によるサーバのモニタ
第 10 章 サーバの設定によるパフォーマンス チューニング
第 11 章 プログラムによるサーバの拡張
第 12 章 コンフィグレーション スタイルの操作
第 13 章 サーバのコンテンツ管理
第 14 章 サーバへのアクセスの制御
第 15 章 Web パブリッシングの設定
第 16 章 検索機能の使用
付録 A HTTP (HyperText Transfer Protocol)
付録 B ACL ファイルのシンタックス
付録 C 国際化 iPlanet Web Server
付録 D Microsoft FrontPage のサーバ拡張機能
付録 E iPlanet Web Server
用語集
索引
戻る 次へ 目次 索引 ブックシェルフ


第 10 章 サーバの設定によるパフォーマンス チューニング

この章は、上級管理者のみを対象としています。サーバのチューニングは慎重に行ってください。特別な事情がない限り、値は変更しないでください。値を変更する場合は、その前にこの章と、その他の関連するサーバのマニュアルをお読みください。また、値を変更する前に、必ずコンフィグレーション ファイルのバックアップをとっておいてください。

この章には、次の節があります。


サーバのパフォーマンスについて
Web サーバは、組織内と組織外のビジネス コミュニケーションに非常に重要な存在になっています。Web サーバがビジネスに不可欠になるにつれて、サーバのパフォーマンスの重要性が増します。iPlanet Web Server、Enterprise Editionは、パフォーマンスの新しい水準を示し、この分野をリードしています。

iPlanet Web Server は、世界で最も苛酷でトラフィックの多いサイトのニーズを満たすように設計されています。iPlanet Web Server は、Unix/Linux と Windows NT の両方で動作する柔軟性を備え、スタティックなコンテンツとダイナミックに生成されるコンテンツの両方を処理することができます。また、iPlanet Web Server では、SSL モードで使って、転送される情報のセキュリティを保護することもできます。

iPlanet Web Server は、パブリッシング用の非常に柔軟なツールなので、カスタマによってニーズが大きく異なります。この章では、サーバの作業負荷を定義し、パフォーマンスのニーズを満たすシステムのサイズを決定する手順を示します。また、さまざまな設定と Unix/Linux プラットフォーム固有の問題について説明します。パフォーマンス ユーティリティ perfdump と、サーバに組み込まれたチューニング パラメータについても説明します。最後に、サイズ決定に関する情報を説明します。


パフォーマンスの問題
サーバのサイズを決定するための最初の手順は、必要条件を判断することです。 パフォーマンスは、ユーザと Web マスターにとって異なる意味を持ちます。ユーザは、短い応答時間 (100 ミリ秒未満)、ハイアベーラビリティ ("接続拒否" メッセージがない)、可能な限りのインターフェイス制御を求めています。これに対して Web マスターとシステム管理者は、高い接続率、高いデータ スループット、100% 近い稼働率を望んでいます。システム管理者は、それぞれの状況におけるパフォーマンスの意味を定義する必要があります。

次の点を考慮します。

パフォーマンスのモニタ
サーバのパフォーマンスをモニタするには、次のツールを使います。

これらのツールについては、このマニュアルの後述の節で詳しく説明します。


perfdump ユーティリティ
perfdump ユーティリティは、iPlanet Web Server に組み込まれたサービス機能です。このユーティリティは、Web サーバの内部統計情報からさまざまなパフォーマンス データを収集し、ASCII テキストで表示します。

perfdump をインストールするには、netscape/server4/https-server_name/config ディレクトリ内の obj.conf で、次の変更を行う必要があります。

  1. obj.conf ファイルに次のオブジェクトを追加します (デフォルトのオブジェクトの後ろ)。
  2. ドキュメント ルートが上記の例と異なる場合は、"ppath=" の行を編集します。上記のように、ドキュメント ルートへのパスの後に必ず 「.perf」と入力します。
  3. サーバ ソフトウェアを再起動し、次の URL から perfdump にアクセスします。
次のような URL を使うと、perfdump の統計情報を要求し、情報を n 秒間隔で自動的に再読み込みを行うようにブラウザに指定することができます。次の例では、再読み込みを 5 秒間隔に設定しています。

出力例
ns-httpd pid: 133

ListenSocket #0:

------------------

Address https:\\INADDR_ANY:80

ActiveThreads 48

WaitingThreads 47

BusyThreads 1

Thread limits 48/512

KeepAliveInfo:

------------------

KeepAliveCount 0/200

KeepAliveHits 0

KeepAliveFlushes 0

KeepAliveTimeout 30 seconds

CacheInfo:

------------------

enabled yes

CacheEntries 2/8192

CacheSize(bytes) 0/0

Hit Ratio 474254/474264 (100.00)

pollInterval 7200

Native pools:

------------------------

NativePool:

Idle/Peak/Limit 1/1/128

Work queue length/Peak/Limit 0/0/0

Server DNS cache disabled


perfdump の統計情報を使ったサーバのチューニング
この節では、perfdump ユーティリティを使って入手できる情報を示し、一部のパラメータを調整してサーバのパフォーマンスを向上する方法について説明します。デフォルトのチューニング パラメータは、大規模なサイトを除くすべてのサイトに適切です。大規模なサイトが定期的に変更する必要があるパラメータは、RqThrottle パラメータだけです。このパラメータは、サーバ マネージャを使って調整することができます。

perfdump ユーティリティでは、次の統計情報がモニタされます。

リッスン ソケット情報 (Listen キュー)
リッスン ソケットは listen キューのサイズです。つまり、システムがそのソケットに受け入れる受信コネクションの数を指定する、ソケットレベルのパラメータです。受信コネクションのデフォルト設定は、Unix/Linux では 128、Windows NT では 100 です。

システムの listen キューのサイズが、iPlanet Web Server で設定するサイズに十分な大きさであることを確認してください。iPlanet Web Server で設定する listen キューのサイズによって、システムに要求される listen キューのサイズが変わります。iPlanet Web Server によって要求される listen キューのサイズがシステムの listen キューの最大サイズよりも大きい場合、システムの最大サイズがデフォルトになります。

警告 listen キューの設定値が高すぎると、サーバのパフォーマンスが低下する可能性があります。listen キューは、サーバにコネクションが殺到し、処理できなくなることを防ぐために設計されています。サーバへの負荷が大きくなっているのにもかかわらず listen キューのサイズを増加すると、サーバのパフォーマンスはさらに低下します。

perfdump の統計情報の最初のセットはリッスン ソケット (または listen キュー) の情報です。サーバで有効なハードウェアの仮想サーバごとに ListenSocket 構造が 1 つあります。ほとんどのサイトでは、1 つだけ表示されます。

ノート "スレッド" の各フィールドは、このリッスン ソケットの現在のスレッド使用数と制限を示します。"スレッド" の概念は、必ずしもオペレーティング システムのスレッドを意味するものではありません。これらのフィールドの "スレッド" は、実際には HTTP セッションを意味します。プロセス内で実行中のスレッド数をオペレーティング システムで確認しても、これらのフィールドが示す数値とは一致しません。

チューニング
サーバ マネージャの [Preferences] タブの「Performance Tuning」ページにある [Listen Queue] フィールドを使うか、あるいは magnus.confListenQ パラメータを設定することによって、listen キューを設定します。

仮想サーバを使っている場合、それらを作成する方法は、virtual.conf ファイルを使う方法と、obj.conf ファイルを使う方法の 2 つがあります。virtual.conf の方法を使うと、512 のデフォルトの最大スレッド数が、必要なときにすべての仮想サーバで使用可能です。obj.conf の方法を使うと、512 のスレッドは、定義された各仮想サーバに均等に割り当てられます。たとえば、サーバが 2 つある場合、各サーバでは 256 のスレッドが使用可能です。この方法は効率よくありません。この領域でパフォーマンスを最大にするには virtual.conf を使います。

Address
このフィールドは、このリッスン ソケットがリッスンしているベース アドレスを示します。ハードウェアの仮想サーバを使っていないほとんどのサイトでは、URL は次のとおりです。

http://INADDR_ANY:80"

定数値"INADDR_ANY" はサーバ内部で認識され、このリッスン ソケットが、このマシンのすべての IP アドレスでリッスンしていることを示します。

チューニング

上記以外の方法でこの設定を調整することはできません。

ActiveThreads
このリッスン ソケットの任意の状態の "スレッド" (HTTP セッション) の合計数です。この数値は、WaitingThreads + BusyThreads と等価です。この設定は調整できません。

WaitingThreads
このリッスン ソケットの新しい TCP 接続を待っている "スレッド" (HTTP セッション) の数です。

チューニング

直接調整できませんが、RqThrottleMinPerSocket とほぼ同等です。Thread limits <最小/最大>を参照してください。

BusyThreads
このリッスン ソケットに着信したリクエストをアクティブに処理しているスレッド (HTTP セッション) の数です。

この設定は調整できません。

Thread limits <最小/最大>
最小値は、サーバが WaitingThreads 状態を維持しようとするスレッドの目標値です。この数値は単なる目標です。この状態のスレッドの実際の数は、この数値をわずかに上回ったり、下回ったりする場合があります。

スレッドの最大数は、パフォーマンスのボトルネックとなる可能性のある、同時に実行可能なアクティブなスレッドの最大数の強制的な制限です。iPlanet Web Server では、デフォルトの制限は 48/512 です。詳細については、RqThrottle について (最大同時接続)を参照してください。

チューニング

RqThrottle について (最大同時接続)を参照してください。

KeepAlive 情報
このセクションでは、サーバの HTTP レベルのKeepAlive システムに関する統計情報を示します。

ノート "KeepAlive"という名前を、TCP の "KeepAlives" と混同しないでください。"KeepAlive" という名前は、HTTP/1.1 で "常設のコネクション" に変更されましたが、このマニュアルでは、明瞭さのため、引き続き "KeepAlive" コネクションと呼びます。

HTTP/1.0 と HTTP/1.1 では、1 つ HTTP セッションで複数のリクエストを送信する機能がサポートされています。Web サーバでは、1 秒間に数百もの新しい HTTP リクエストが受信されることがあります。すべてのリクエストについてコネクションが開いた状態を無限に維持することができると、サーバへの負荷が大きくなりすぎます。これによって、Unix/Linux システムでは、ファイル テーブルのオーバーフローが非常に簡単に発生します。

この問題に対処するため、サーバでは "待機中の KeepAlive コネクションの最大数" のカウンタが管理されます。"待機中" の KeepAlive コネクションとは、コネクションを介して前のリクエストの処理を完了し、同じコネクションに新しいリクエストが到着するのを待っているコネクションです。新しいコネクションが KeepAlive リクエストを待ち始めたときに、サーバで開かれているコネクション数が待機中のコネクションの最大数を超えると、最も古いコネクションが終了します。このアルゴリズムによって、サーバで管理できる、待機中の開いている KeepAlive コネクションの上限が維持されます。

iPlanet Web Server では、クライアントからの KeepAlive リクエストは必ずしも処理されません。次の状況では、クライアントから KeepAlive コネクションが要求されても、サーバはコネクションを終了します。

  • KeepAliveTimeout が 0 に設定されている。
KeepAliveCount <KeepAliveCount/KeepAliveMaxCount>
現在、KeepAlive コネクションを待っているセッションの数と、サーバで一度に待機が可能なセッションの最大数です。

チューニング

magnus.conf ファイルの MaxKeepAliveConnections パラメータを編集します。

KeepAliveHits
KeepAlive コネクションからリクエストが正常に受信された回数です。

この設定は調整できません。

KeepAliveFlushes
KeepAliveCountKeepAliveMaxCount を超えたためにサーバがコネクションを終了した回数です。

この設定は調整できません。

KeepAliveTimeout
サーバがクライアント コネクションを動作のない状態で開いたままにできる秒数を指定します。1 つのサーバに対する複数のリクエストが 1 つのネットワーク コネクションによって処理できるように、Web クライアントはサーバへのコネクションを開いておくことができます。指定されたサーバは開かれたコネクションを限られた数 (アクティブ スレッドによって制限された数) しか処理できないので、開かれたコネクションの数が多いと、新しいクライアントが接続できなくなります。

SSL が有効であると、KeepAliveTimeout はデフォルトで 0 になり、常設のコネクションが無効になります。SSL を有効にした状態で常設のコネクションを使う場合は、KeepAlive Timeout をゼロ以外の値に設定します。

チューニング

サーバ マネージャの 「Performance Tuning」ページ でKeepAliveTimeout を変更することができます。

キャッシュ情報
この情報はファイル キャッシュではなくアクセラレータ キャッシュに該当します。キャッシュの説明については、ファイル キャッシュとアクセラレータ キャッシュを参照してください。

このセクションは、サーバのキャッシュ情報を示します。ファイルの内容は、ディスク上の特定のスタティック ファイルに書き込まれます。キーは、ファイルの URI です。複数の仮想サーバを設定している場合、キーには仮想サーバのホスト ID とポート番号も含まれます。

enabled
キャッシュが無効な場合、このセクションの残りの部分は表示されません。

チューニング

サーバ アクセラレータのキャッシュを無効にするには、obj.conf ファイルに次の行を追加します。

Init fn=cache-init disable=true

CacheEntries <CurrentCacheEntries / MaxCacheEntries>
現在のキャッシュ エントリの数と、キャッシュ エントリの最大数です。1 つのキャッシュ エントリは、1 つの URI を表します。

チューニング

キャッシュされるファイルの最大数を設定するには、obj.conf ファイルに次の行を追加します。

Init fn=cache-init MaxNumberOfCachedFiles=xxxxx

CacheSize <CurrentCacheSize / MaxCacheSize>
ファイルはアクセラレータ キャッシュではなくファイル キャッシュにキャッシュされるので、このリリースでは CacheSize の使用を推奨していません。詳細については、ファイル キャッシュとアクセラレータ キャッシュを参照してください。

Hit Ratio <CacheHits / CacheLookups (Ratio)>
ヒット率の値はサイトの効率を表します。ヒット率は、90% を超えている必要があります。数値が 0 の場合は、サイトを最適化する必要があります。サイトを改善する方法については、トラブルシューティングの節を参照してください。

cookie や他の特別な情報を記録し、0 に近い非常に低いヒット率を調べる場合は、第 8 章「ログ ファイルの理解」の拡大されたログに関する情報を参照してください。拡大されたログを使うと、特別な情報を記録し、アクセラレータ キャッシュを使うことができます。

この設定は調整できません。

pollInterval
このリリースでは pollInterval の使用を推奨していないので、このフィールドには nsfc.conf の MaxAge が表示されます。MaxAge を調整していない場合、デフォルトで 30 秒になります。

この設定のチューニング情報については、MaxAgeを参照してください。

DNS Cache 情報
Server DNS cache disabled

DNS キャッシュには、IP アドレスと DNS 名が保持されます。

enabled
キャッシュが無効な場合、このセクションの残りの部分は表示されません。

チューニング

DNS キャッシュはデフォルトでオフになっています。キャッシュを有効にするには、obj.conf に次の行を追加します。

Init fn=dns-cache-init

CacheEntries <CurrentCacheEntries / MaxCacheEntries>
現在のキャッシュ エントリの数と、キャッシュ エントリの最大数です。1 つのキャッシュ エントリは、1 つの IP アドレスまたは DNS 名照合を表します。

チューニング

DNS キャッシュの最大サイズを設定するには、obj.conf ファイルに次の行を追加します。

Init fn=dns-cache-init cache-size=xxxxx

HitRatio <CacheHits / CacheLookups (Ratio)>
ヒット率は、キャッシュ ヒットの数とキャッシュ照合の数を示します。DNS キャッシュのヒット率は 60 〜 70% までが適切です。

この設定は調整できません。

ネイティブ スレッド プール
Native pools:
------------------------
NativePool:
Idle/Peak/Limit 1/1/128
Work queue length/Peak/Limit 0/0/0

ネイティブ スレッド プール (NativePool) は、ネイティブ スレッドの実行に必要な NSAPI 関数を実行するために、サーバ内部で使われます。Unix/Linux ではスレッドは常に OS によってスケジュールされるので (ユーザがスケジュールするのとは対照的に)、Unix/Linux ユーザはネイティブ スレッド プールを使う必要がありません。Unix/Linux でスレッド プールを使う場合は、ユーザ自身がセットアップすることができます。詳細については、追加のスレッド プールを参照してください。

iPlanet Web Server ではNSPR が使われます。これは、ホスト OS のサービスへのアクセスを提供する、基礎となっている移植性のレイヤです。このレイヤは、スレッドを抽象化します。この抽象化は、OS から提供されるスレッドの抽象化と必ずしも同じではありません。ネイティブでないこれらのスレッドはスケジューリングのオーバーヘッドが低いので、使うとパフォーマンスが向上します。ただし、これらのスレッドは、I/O 呼び出しなど、OS へのブロック化呼び出しに敏感です。ブロック化呼び出しを使用できる NSAPI 拡張機能の作成を簡単にするために、サーバには、ブロック化呼び出しを安全にサポートするスレッドのプールが保持されています (通常はネイティブ OS スレッド)。リクエストの処理時は、ネイティブではないスレッドでの実行が安全であるとマークされていない NSAPI 関数は、ネイティブ スレッド プール内の 1 つのスレッドでの実行がスケジューリングされます。

NameTrans 関数、Service 関数、PathCheck 関数など、独自の NSAPI プラグインを作成した場合、これらのプラグインは、デフォルトでネイティブ スレッド プール内のスレッドで実行されます。プラグインが、I/O だけに NSAPI 関数を使うか、NSAPI の I/O 機能をまったく使わない場合、ネイティブではないスレッドで実行することができます。そのためには、ネイティブ スレッドが不要であることを示す "NativeThread=no" オプションを指定して関数を読み込む必要があります。obj.conf ファイルの "load-modules" の Init 行に次のように追加します。

Init funcs="pcheck_uri_clean_fixed_init" shlib="C:/Netscape/p186244/ P186244.dll" fn="load-modules" NativeThread="no"

NativeThread フラグは、funcs リストのすべての関数に適用されます。したがって、ライブラリに複数の関数があり、一部だけがネイティブ スレッドを使う場合は、別の Init 行を使います。

Windows NT ユーザはサーバ マネージャを使ってネイティブ スレッド プールの設定を編集することができます。

追加のスレッド プール
サーバ マネージャの [Preferences] タブを使って追加のスレッド プールをセットアップすることができます。スレッド プールを使って、サービス関数が常時応答するリクエストの最大数に制限を設定します。たとえば、これらの追加スレッド プールは、スレッド セーフでないプラグインを実行するときに使います。スレッドの最大数を 1 に設定した状態でプールを定義すると、1 つのリクエストだけが指定したサービス関数に許容されます。

サーバ マネージャを使って追加のスレッド プールをセットアップする方法の詳細については、オンライン ヘルプを参照してください。

Idle/Peak/Limit
Idle は、現在アイドル状態のスレッドの数を示します。Peak は、プール内のピーク数を示します。Limit は、スレッド プールで許容されるネイティブ スレッドの最大数を示し、NativePoolMaxThreads の設定から判断されます。 詳細については、ネイティブ スレッド プールのサイズを参照してください。

チューニング

magnus.conf ファイルの NativePoolMaxThreads ディレクティブを変更するか、あるいは NT を使っている場合は、サーバ マネージャの [Preferences] タブにある「Native Thread Pool」ページで設定を変更します。

Work queue length/Limit
これらの数値は、プール内のネイティブ スレッドの使用を待っている、サーバ リクエストのキューに関連します。Work Queue Length は、現在、ネイティブ スレッドを待っているリクエスト数です。Limit は、ネイティブ スレッドを待つキューに一度に入れられるリクエストの最大数で、magnus.confNativePoolQueueSize ディレクティブの設定から判断されます。詳細については、ネイティブ スレッド プールのサイズを参照してください。

チューニング

magnus.conf ファイルの NativePoolQueueSize ディレクティブを変更するか、あるいは NT を使っている場合は、サーバ マネージャの [Preferences] タブにある「Native Thread Pool」ページで設定を変更します。

Peak work queue length
サーバが起動してから、ネイティブ スレッドの使用のために一度にキューに入れられたリクエスト数の最高値です。この値は、ネイティブ スレッドを同時に必要とするリクエストの最大数として考えることができます。

この設定は調整できません。

Work queue rejections
これは、ネイティブ スレッドの使用が必要であったが、作業キューが満杯であったために拒否されたリクエストの累積数です。デフォルトでは、これらのリクエストは "503 - Service Unavailable" レスポンスで拒否されます。

この設定は調整できません。

PostThreadsEarly
この高度なチューニング パラメータは、スレッドの割り当てアルゴリズムを変更します。サーバでリクエストが実行される前に、受け入れ可能なスレッドが確認されます。デフォルトはオフに設定されています。サーバの負荷が、LiveWire や Netscape Application Server など、またはデータベースやその他の複雑なバックエンド システムにアクセスするカスタム アプリケーションの長いトランザクションから主に構成される場合にのみ推奨されます。このパラメータをオンにすると、サーバのスレッド プールがより短時間で拡大します。

チューニング

このパラメータをオンにするには、次のディレクティブを magnus.conf に追加します。

PostThreadsEarly 1

ネイティブ スレッド プールのサイズ
サーバのこれまでのバージョンでは、システム環境変数を設定することによって、ネイティブ スレッド プールを制御することができました。iPlanet Web Server では、magnus.conf のディレクティブを使って、ネイティブ カーネル スレッド プールのサイズを制御することができます。magnus.conf のディレクティブの使用をお勧めしますが、以前にシステム環境変数を設定した場合、magnus.conf のディレクティブは上書きされます。

Windows NT を使っている場合は、サーバ マネージャの「Native Thread Pool」ページを使ってこれらの設定を変更することもできます。

次のディレクティブを使ってネイティブ スレッド プールを制御します。

NativePoolStackSize は、ネイティブ (カーネル) スレッド プール内の各スレッドのスタック サイズを決めます。

NativePoolQueueSize は、スレッド プールのキューで待機できるスレッド数を決めます。プール内のスレッドがすべてビジー状態の場合、ネイティブ プール内のスレッドを使う必要のある次のリクエスト処理スレッドは、キューで待機する必要があります。キューが満杯の場合、キューに入ろうとする次のリクエスト処理スレッドは拒否され、クライアントにビジー応答を返します。このスレッドは、キューで待機する代わりに、別の着信リクエストを処理することができます。

NativePoolMaxThreads は、ネイティブ (カーネル) スレッド プール内のスレッドの最大数を決めます。

NativePoolMinThreads は、ネイティブ (カーネル) スレッド プール内のスレッドの最小数を決めます。

スレッド プール環境変数

この節ではスレッド プール環境変数について説明します。ネイティブ プールは Unix および Linux には必要ないので、Unix および Linux の場合はこれらの環境変数はデフォルトで 0 になります。

NSCP_POOL_WORKQUEUEMAX この値のデフォルトは 0x7FFFFFFF (非常に高い数値) です。この値を RqThrottle 未満の値に設定した場合、プール スレッドのサービスを待っているリクエストの数がこの値を超えると、サーバでは NSAPI 関数ではなく、ビジー関数が実行されます。デフォルトでは "503 Service Unavailable" レスポンスが返され、LogVerbose が有効な場合はメッセージがログに記録されます。この値を RqThrottle を超える値に設定すると、サーバではビジー関数が実行される前にコネクションが拒否されます。

この値は、ネイティブ スレッドを必要とするサービスの同時リクエストの最大数を表します。負荷が原因でシステムでリクエストを処理できない場合、キュー内の許容されるリクエスト数を増加すると、リクエストの待ち時間が長くなり、すべての使用可能なリクエスト スレッドが、ネイティブ スレッドを待つという状態になる可能性があります。一般に、この値は "通常" の状態でリクエストが拒否されない程度の大きさにします。これは、ネイティブ スレッドを必要とするリクエストを実行する同時ユーザの予測最大数です。

この値と RqThrottle の違いは、ネイティブではないスレッドのリクエストに予約されているリクエストの数です (スタティックな HTML、gif、jpeg ファイルなど)。予約領域を確保し、リクエストを拒否することによって、サーバでスタティック ファイルのリクエストが確実に処理されます。ダイナミック コンテンツの負荷が非常に高い間は、サーバが応答しなくなることがありません。サーバで徹底的にコネクションが拒否される場合は、この値の設定が低すぎるか、サーバのハードウェアが過負荷状態です。

NSCP_POOL_THREADMAX この値は、プール内のスレッドの最大数を表します。リクエストの量を最適に保つために、この値はできるだけ低く設定します。値を高く設定すると、同時に実行されるリクエスト数が増えますが、コンテキスト切り替えによるオーバーヘッドが高くなります。したがって、数値が高いほどいいとは限りません。CPU が飽和状態ではないのに、リクエストがキューに溜まる場合は、この数値を増加します。通常はこの数値を増加する必要はありません。

ビジー関数
デフォルトのビジー関数では "503 Service Unavailable" 応答が返され、LogVerbose が有効な場合はメッセージがログに記録されます。この動作は、変更することができます。obj.conf ファイル内の任意の NSAPI 関数に独自のビジー関数を指定することができます。このコンフィグレーション ファイルに、次の形式でサービス関数を追加します。

たとえば、次のサンプルのサービス関数を使うことができます。

これによって、複数のタイプ (ServiceAddLogPathCheck など) を含むリクエストの処理中にビジーになった場合に異なるレスポンスを返すことができます。ビジー関数は、デフォルトのスレッド タイプがネイティブでないときに実行するネイティブ スレッドが必要なすべての関数に適用されます。

サーバ全体で、デフォルトのビジー関数の代わりに独自のビジー関数を使うには、次のように、func_insert 呼び出しを含む NSAPI の init 関数を記述します。

ビジー関数がプール スレッドで実行されることはありません。したがって、スレッドがブロックされる可能性のある関数呼び出しの使用を避ける必要があります。

非同期 DNS 照合 (Unix/Linux)
通常の運用時にサーバで DNS (Domain Name System) 照合が使われるように設定することができます。デフォルトでは DNS は有効ではありません。DNS を有効にすると、サーバではシステムの IP アドレスに対するホスト名が検索されます。DNS 照合は、サーバ管理作業でログを確認するときに役立ちますが、パフォーマンスに影響を与える可能性があります。クライアントからのリクエストがサーバで受信される場合、クライアントの IP アドレスはそのリクエストに含まれています。DNS が有効であると、サーバでは、リクエストを送信するすべてのクライアントの IP アドレスに対応するホスト名が検索されます。

複数のスレッドを直列化しないために非同期 DNS を有効にする
DNS では、DNS サービスの使用時に複数のスレッドが直列化されます。直列化の必要がない場合は、非同期 DNS を有効にします。非同期 DNS を有効にするには、先に DNS を有効にする必要があります。DNS を使う場合は、非同期 DNS を有効にすることによって、システムのパフォーマンスが向上する可能性があります。

ノート サーバの DNS 照合をオフにすると、ホスト名の制約は機能せず、ログ ファイルにはホスト名ではなく IP アドレスが表示されます。

DNS エントリのキャッシュ
DNS のエントリをキャッシュするかどうかも指定できます。DNS キャッシュを有効にすると、サーバで受信されたホスト名情報が格納されます。サーバで将来的にクライアントに関する情報が必要になったとき、その情報はキャッシュに格納されているのでクエリは不要です。DNS キャッシュのサイズと DNS キャッシュ エントリの有効期限を指定することができます。DNS キャッシュのエントリ数は 32 〜 32768 まで指定でき、デフォルト値は 1024 です。キャッシュ エントリの有効期限は 1 秒〜 1 年まで指定でき (秒単位で指定)、デフォルト値は 1200 秒 (20 分) です。

非同期 DNS 照合の制限
サーバ プロセスはリソースの消費量が非常に多いので、サーバ プロセスでは DNS 照合を使わないことをお勧めしまsす。DNS 照合を使う必要がある場合は、必ず非同期にしてください。非同期 DNS の詳細については、オンライン ヘルプの「Performance Tuning」ページを参照してください。

enabled
非同期 DNS が無効であると、このセクションの残りの部分は表示されません。

チューニング

magnus.conf に「AsyncDNS on」と追加します。

NameLookups
サーバが起動してから実行された名前の照合の回数 (DNS 名から IP アドレス) です。

この設定は調整できません。

AddrLookups
サーバが起動してから実行されたアドレスのループの数 (IP アドレスから DNS 名) です。

この設定は調整できません。

LookupsInProgress
現在照合中の数です。

この設定は調整できません。


パフォーマンス バケット
パフォーマンス バケット機能を使うと、ユーザはバケットを定義し、さまざまなサーバ関数にリンクすることができます。これらのサーバ関数の 1 つが呼び出されるたびに、サーバは統計データを収集してバケットに追加します。たとえば、send-cgiNSServletService は、それぞれ CGI と Java Servlet のリクエストを処理する関数です。バケットを 2 つ定義して CGI と Servlet のリクエストに別個のカウンタを維持するか、バケット 1 つで両タイプのダイナミック コンテンツのリクエストをカウントすることができます。この情報の収集時の負荷は低く、サーバのパフォーマンスへの影響は無視できる程度です。この情報は、perfdump ユーティリティを使って後でアクセスすることができます。バケットには、次の情報が保存されます。

  • バケット名。この名前を使ってバケットを関数に関連付けます。
  • 説明。バケットが関連付けられている関数の説明。
  • この関数のリクエスト回数。この関数の呼び出しが要求された合計回数。
  • 関数の呼び出し回数。この数値は、関数のリクエスト回数と一致しない場合があります。1 回のリクエストに対して複数回実行される関数があるからです。
  • 関数の待ち時間またはディスパッチ時間。サーバで関数の呼び出しにかかった時間。
  • 関数時間。関数内で費やされた時間。
次のバケットは、サーバであらかじめ定義されています。

設定
パフォーマンス バケットのすべての設定情報は obj.conf ファイルに指定します。この機能はデフォルトで無効になっています。パフォーマンスの測定を有効にするには、obj.conf ファイルに次の行を追加します。

バケットを新規に定義する方法の例は次のとおりです。

Init fn="define-perf-bucket" name="acl-bucket" description="ACL bucket"
Init fn="define-perf-bucket" name="file-bucket" description="Non-cached responses"
Init fn="define-perf-bucket" name="cgi-bucket" description="CGI Stats"

上記の例では、acl-bucketfile-bucketcgi-bucket の 3 つのバケットが作成されます。これらのバケットを関数に関連付けるには、次のように、obj.conf 関数内のパフォーマンスを測定する関数の前に「bucket=bucket-name」と追加します。

パフォーマンス レポート
バケット内のサーバの統計情報は、perfdump ユーティリティを使ってアクセスすることができます。パフォーマンス バケットの情報は、perfdump から返されるレポートの最後のセクションにあります。パフォーマンス バケットのレポートを有効にするには、次の手順を実行します。

  1. パフォーマンス バケットのレポートの拡張子を定義します。mime.types ファイルに次の行を追加します。
  2. mime.types で宣言したタイプを、obj.conf ファイルのservice-dump 関数に関連付けます。
  3. URL http://server_name:port_number/.perf を使って、パフォーマンス レポートを表示します。

ノート mime.types ファイルで定義した拡張子の前にはピリオド (.) を含める必要があります (この例では .perf)。

レポートには、次の情報が含まれています。

次に、perfdump を使って使用可能なパフォーマンス バケットの情報の例を示します。

Performance Counters:

------------------------------------------------

Server start time: Mon Oct 11 15:37:26 1999

Average Total Percent

Total number of requests: 474851

Request processing time: 0.0010 485.3198

Cache Bucket (cache-bucket)

Number of Requests: 474254 ( 99.87%)

Number of Invocations: 474254 ( 98.03%)

Latency: 0.0001 48.7520 ( 10.05%)

Function Processing Time: 0.0003 142.7596 ( 29.42%)

Total Response Time: 0.0004 191.5116 ( 39.46%)

Default Bucket (default-bucket)

Number of Requests: 597 ( 0.13%)

Number of Invocations: 9554 ( 1.97%)

Latency: 0.0000 0.1526 ( 0.03%)

Function Processing Time: 0.0256 245.0459 ( 50.49%)

Total Response Time: 0.0257 245.1985 ( 50.52%)


ファイル キャッシュとアクセラレータ キャッシュ
iPlanet Web Server にはキャッシュが 2 つあります。つまり、レスポンス ヘッダをキャッシュし、スタティック ファイル キャッシュを指すポインタが含まれているフロントエンド アクセラレータ キャッシュと、スタティック ファイルの情報だけでなくコンテンツも格納するスタティック ファイル キャッシュです。cache-init ディレクティブがアクセラレータ キャッシュを初期化します。デフォルトではファイル キャッシュがオンになります。デフォルト キャッシュのセットアップを変更する場合は、nfsc.conf というファイルを作成する必要があります。詳細については、ファイル キャッシュの設定を参照してください。

ファイル キャッシュは、スタティックな HTML、イメージ、およびサウンドのファイルをキャッシュする新しいファイル キャッシュ モジュール NSFC を使って実装されます。旧バージョンのサーバでは、ファイル キャッシュはスタティックなページ用のアクセラレータ キャッシュと統合されていました。したがって、HTTP リクエストはアクセラレータによって処理され、NSAPI エンジンに渡されて完全に処理されましたが、高速化できなかったリクエストはファイル キャッシュを利用することができませんでした。そのため、NSAPI プラグインを使った多くのサイト、カスタマイズされたログ、または使用されたサーバパース HTML はアクセラレータを利用することができませんでした。

NSFC モジュールは NSAPI エンジン内で使う独立したファイル キャッシュを実装して、高速化できないスタティック ファイルをキャッシュします。このファイル キャッシュはアクセラレータ キャッシュにも使われ、以前に統合されたそのファイル キャッシュに置き換わります。NSFC は、サーバパース HTML の処理を高速化するときに使う情報をキャッシュします。

アクセラレータ キャッシュの設定
cache-init 関数は、アクセラレータのキャッシュを制御します。サーバの速度を最適化するには、スワップが低速である場合があるので、サーバとキャッシュに十分な RAM が必要です。システムのメモリ容量を超えるサイズのキャッシュを割り当てないでください。

表 10.1 cache-init パラメータ
disable
(オプション) ファイル キャッシュが無効かどうかを示します。"false" 以外に設定されている場合、キャッシュは無効です。デフォルトでキャッシュは有効です。
MaxNumberOfCachedFiles
(オプション) アクセラレータ キャッシュ内のエントリの最大数。デフォルトは 4096、最小値は 32、最大値は 32768 です。
MaxNumberOfOpenCachedFiles
(オプション) file_cache エントリのある
accel_file_cache エントリの最大数。

デフォルトは 512、最小値は 32、最大値は 32768 です。
CacheHashSize
(オプション) アクセラレータ キャッシュのハッシュ テーブルのサイズ。デフォルトは 8192、最小値は 32、最大値は 32768 です。
Reaper
(オプション) NSFC エントリへの古い参照を削除します。アクセラレータ ファイル キャッシュにはスタティックな NSFC ファイル キャッシュ内のエントリへの参照が含まれています。"オン" に設定すると、Reaper は削除の印が付いた NSFC エントリへの参照を削除します。デフォルトは "オン" です。
ReaperInterval
(オプション) 古いスタティック ファイル キャッシュの参照エントリを削除するまでの待機時間(秒数)。デフォルトは 3600 秒です。0 に設定すると、Reaper は無効になります。
MaxFilesToReap
(オプション) Reaper の実行時に削除する古いスタティック ファイル キャッシュの参照エントリの最大数。デフォルトは 50 です。0 に設定すると、Reaper は無効になります。
NoOverflow
(オプション) IRIX のみ。
IsGlobal
(オプション) IRIX のみ。


Init fn="cache-init" MaxNumberOfCachedFiles=15000 MaxNumberOfOpenCachedFiles=15000 CacheHashSize=15101 Reaper=on ReaperInterval=3600 MaxFilesToReap=50

Reaper パラメータの使用
アクセラレータ ファイル キャッシュにはスタティックな NSFC ファイル キャッシュ内のエントリへの参照が含まれています。リクエストに対するアクセラレータ キャッシュ エントリの確認時に、その最大時間が経過した場合やファイルが変更された場合は NFSC エントリに削除の印を付けることができます。新しいエントリを追加できるように、アクセラレータ ファイル キャッシュは古い NSFC キャッシュ エントリを解放します。ただし、ファイル キャッシュ サイズが十分に大きくない場合は、新しいエントリのために NSFC エントリに削除の印を付けることができます。この状況では、削除の印が付いたエントリがアクセラレータ ファイル キャッシュ内に参照を持っており、そのエントリへのリクエストがもう発生しない場合、NSFC は削除の印が付いたエントリを解放することができません。この状況では、ユーザが Reaper を使ってこれらのエントリを削除することができます。

この状況は比較的まれなので、ReaperInterval を適切な長い間隔に設定し、MaxFilesToReap を小さい値に設定します。

ファイル キャッシュとアクセラレータ キャッシュの設定方法とサーバへの負荷によっては、削除時のリクエスト スレッドとのロック競合の理由からパフォーマンスが影響を受ける可能性があります。この競合への反応は、プラットフォームによって異なる可能性があります。Compaq Tru64 Unix 4.0d などのプラットフォームでは、設定に大きな負荷がかかっている場合、この競合によってより多くのリクエスト スレッドが作成され、より多くのメモリが消費されます。この場合は Reaper を無効にするか、設定またはシステム リソースを調整する必要があります。

ファイル キャッシュの設定
テキスト ファイル nsfc.conf 内でファイル キャッシュを設定します。obj.conf ファイルのパラメータ nocache を使って特定のディレクトリのキャッシュをオフにすることもできます。

nsfc.conf の設定
デフォルトでは、ファイル キャッシュがオンになり、次に説明するすべてのパラメータのデフォルト値が使われます。パラメータ値を変更する場合は、server_root/https-server-id/config ディレクトリに nsfc.conf という名前のテキスト ファイルを作成する必要があります。パフォーマンスを向上させるためにパラメータ値を変更するには、nsfc.conf ファイルにパラメータとその新しい値を入力します。

CopyFiles

CopyFiles を "true" に設定すると、ユーザがファイルにアクセスしたときにサーバが表示する一時ファイルにファイルがコピーされます。デフォルトは、Unix/Linux では "false"、Windows NT では "true" です。一時ファイルは、TempDirによって指定されたディレクトリに格納されます。

CopyFiles=true

FileCacheEnable

ファイル キャッシュが有効かどうかを指定します。

デフォルトでは true に設定されています。

FileCacheEnable=true

HashInitSize

ファイル キャッシュ ハッシュ テーブルのサイズ。デフォルトのサイズは 2 * MaxFiles +1 です。たとえば、MaxFilesが 1024 に設定されている場合、デフォルトの HashInitSize は 2049 です。

HashInitSize=9131

HitOrder

サーバが新しいファイル キャッシュ エントリを作成するときに MaxFilesの限界に到達すると、サーバは削除する既存のエントリに印を付けます。HitOrder を "true" に設定すると、ヒット率が最も低いファイル エントリに削除の印が付けられます。HitOrder を "false" に設定すると、最も長い期間ヒットがないファイル エントリに削除の印が付けられます。

HitOrder=true

MaxAge

有効なキャッシュ エントリの最長保持期間 (秒単位) です。この設定は、ファイルがキャッシュされてから、キャッシュされた情報が継続して使われるまでの期間を制御します。MaxAge を経過したエントリは、同じファイルがキャッシュを通して参照されると、同じファイルの新しいエントリと置き換えられます。

コンテンツを定期的に更新する (既存のファイルを変更する) かどうかに基づいて MaxAge を設定します。たとえば、コンテンツを一定の間隔で 1 日に 4 回更新する場合、MaxAge を 21600 秒 (6 時間) に設定することができます。定期的に更新しない場合は、ファイルを変更した後、MaxAge を以前のバージョンのコンテンツ ファイルを使う最長の期間に設定することを検討してください。

デフォルトでは 30 に設定されています。

MaxAge=30

MaxFiles

キャッシュに一度に格納可能なファイルの最大数です。

デフォルトでは 1024 に設定されています。

MaxFiles=1024

MediumFileSizeLimit (Unix/Linux)

"小さい" ファイルではなく、"中" サイズと見なされる最大のファイル サイズ (バイト単位) です。中サイズのファイルの内容は、ファイルを仮想メモリに割り当てることによってキャッシュされます (現在は Unix/Linux プラットフォームのみ)。"大きい" ファイル ("中" より大きい) の内容はキャッシュされませんが、大きいファイルに関する情報はキャッシュされます。

デフォルトでは 525000 (525 KB) に設定されています。

MediumFileSizeLimit=525000

MediumFileSpace

すべての中サイズのファイルの割り当てに使われる仮想メモリのサイズ (バイト単位) です。

デフォルトでは 10000000 (10MB) に設定されています。

MediumFileSpace=10000000

SmallFileSizeLimit (Unix/Linux)

"小さい" と見なされる最大のファイル サイズ (バイト単位) です。"小さい" ファイルの内容は、ヒープ領域を割り当て、そこにファイルを読み込むことによってキャッシュされます。

小さいファイルと中サイズのファイルを区別するには、多数の小さいファイルがあるときに仮想メモリの多くのページの無駄な部分を避けることをお勧めします。したがって、SmallFileSizeLimit は通常、VM ページ サイズより少し小さくなります。

デフォルトでは 2048 に設定されています。

SmallFileSizeLimit=2048

SmallFileSpace

キャッシュに使われるヒープ領域のサイズ (バイト単位)です。小さいファイルのキャッシュに使われるヒープ領域を含みます。

デフォルトでは Unix/Linux では1 MB に設定され、Windows NT では 0 に設定されています。

SmallFileSpace=1000000

TempDir

TempDir は、CopyFilesが "true" に設定されているときに一時ファイルがコピーされるディレクトリの名前を設定します。デフォルトでは system_temp_dir/netscape/server_instance になります。

一時ディレクトリを割り当てると、サーバは一時ファイルのためにそのディレクトリに構造体を作成します。たとえば、Windows NT でテンポラリ ディレクトリを C:/mytemp に設定する場合、一時ファイルはファイル C:/mytemp/c/server_doc_root に作成されます。C ディレクトリはドライブの文字です。

TempDir=C:/temp

TransmitFile

TransmitFile が "true" の場合、ファイル キャッシュ内のファイルについて、ファイルの内容ではなくオープン ファイル記述子がキャッシュされ、PR_TransmitFile を使ってファイルの内容がクライアントに送信されます。"true" に設定されているとオープン ファイル記述子だけがキャッシュされるので、ファイル キャッシュでのファイルの大、中、小の区別は適用されません。TransmitFile のデフォルトは Unix/Linux では "false"、Windows NT では "true" です。

このディレクティブは、現在は HPUX と AIX を含む、ネイティブ OS で PR_TransmitFile がサポートされている Unix/Linux プラットフォームでの使用を対象としています。その他の Unix/Linux プラットフォームには推奨されません。

TransmitFile=true

nocache パラメータの使用
サービス関数 send-file のパラメータ nocache を使って、特定のディレクトリのそのファイルをキャッシュしないように指定することができます。たとえば、頻繁に変更されるため、そのファイル セットをキャッシュしても意味がない場合に、それらをディレクトリに入れ、そのディレクトリのファイルをキャッシュしないようにサーバに指示することができます。

例 :

    <Object name=default>

    ...

    NameTrans fn="pfx2dir" from="/myurl" dir="/export/mydir", name="myname"

    ...

    Service method=(GET|HEAD|POST) type=*~magnus-internal/* fn=send-file

    ...

    </Object>

    <Object name="myname">

    Service method=(GET|HEAD) type=*~magnus-internal/* fn=send-file nocache=""

    </Object>

上記の例では、URL プレフィックス /myurl によって要求されると、サーバは /export/mydir/ からのスタティック ファイルをキャッシュしません。

ファイル キャッシュのダイナミックな制御とモニタ
obj.conf にオブジェクトを追加すると、サーバの稼働中に NSFC ファイル キャッシュをダイナミックにモニタしたり、制御したりすることができます。まず、"デフォルト" オブジェクトに NameTrans ディレクティブを追加します。

次に、新しいオブジェクト定義を追加します。

これによって、URI "/nsfc" からファイル キャッシュの制御とモニタの機能 (nsfc-dump)を利用することができます。NameTrans ディレクティブの "from" パラメータを変更すると、異なる URI を使うことができます。

次に、URI にアクセスすると受け取る情報の例を示します。

    iPlanet Web Server File Cache Status (pid 7960)

    The file cache is enabled.

    Cache resource utilization

    Number of cached file entries = 1039 (112 bytes each, 116368 total bytes)

    Heap space used for cache = 237641/1204228 bytes

    Mapped memory used for medium file contents = 5742797/10485760 bytes

    Number of cache lookup hits = 435877/720427 ( 60.50 %)

    Number of hits/misses on cached file info = 212125/128556

    Number of hits/misses on cached file content = 19426/502284

    Number of outdated cache entries deleted = 0

    Number of cache entry replacements = 127405

    Total number of cache entries deleted = 127407

    Number of busy deleted cache entries = 17

    Parameter settings

    HitOrder: false

    CacheFileInfo: true

    CacheFileContent: true

    TransmitFile: false

    MaxAge: 30 seconds

    MaxFiles: 1024 files

    SmallFileSizeLimit: 2048 bytes

    MediumFileSizeLimit: 537600 bytes

    CopyFiles: false

    Directory for temporary files: /tmp/netscape/https-axilla.mcom.com

    Hash table size: 2049 buckets

URI "/nsfc" のアクセス時に、クエリ文字列を含めることができます。次の値が認識されます。

?list オプションを選択すると、ファイルの一覧には、ファイル名、一連のフラグ、キャッシュ エントリへの現在の参照数、ファイルのサイズ、内部のファイル ID 値が含まれます。 フラグは次のとおりです。

内容の更新をスケジュール設定しているサイトでは、内容の更新中はキャッシュをシャットダウンし、更新の完了後に再開することをお勧めします。パフォーマンスは低下しますが、キャッシュがオフであるとサーバが正常に動作します。


Unix/Linux プラットフォーム固有の問題
すべての Unix/Linux プラットフォームでは、1 つのプロセスで一度に開くことができるファイル数に制限があります。負荷の高いサイトでは、このファイル数を 1024 まで増やします。

  • Solaris: /etc/systemrlim_fd_max を設定して再起動します。
  • AIX: smit を実行し、カーネルのチューニング パラメータを確認します。
  • HP-UX: sam を実行し、カーネルのチューニング パラメータを確認します。
次の Unix プラットフォームについては、次のサイトで、Web サーバ向けシステムのチューニングに関する情報が提供されています。

パフォーマンス評価のためのチューニング (Solaris)
次の表は、パフォーマンスとスケーラビリティを評価するときに使う Solaris オペレーティング システムのチューニング方法を示しています。これらの値は、希望の結果を達成するためにシステムを調整する方法の例です。

表 10.2 パフォーマンス評価のためのチューニング (Solaris)
パラメータ
スコープ
デフォルト値
調整した値
コメント
rlim_fd_max
/etc/system
1024
8192
オープンなファイル記述子の限界を処理します。予想される負荷 (該当する場合は、関連付けられたソケット、ファイル、パイプ) を考慮してください。
rlim_fd_cur
/etc/system
64
8192

sq_max_size
/etc/system
2
0
ストリーム ドライバのキュー サイズを制御します。0 に設定すると無限になるnので、パフォーマンスはバッファの容量不足による影響を受けなくなります。クライアントにも設定されます。
tcp_close_wait_interval
ndd /dev/tcp
240000
60000
クライアントにも設定されます。
tcp_time_wait_interval
ndd /dev/tcp
240000
60000
Solaris 7 の場合のみ。クライアントにも設定されます。
tcp_conn_req_max_q
ndd /dev/tcp
128
1024

tcp_conn_req_max_q0
ndd /dev/tcp
1024
4096

tcp_ip_abort_interval
ndd /dev/tcp
480000
60000

tcp_keepalive_interval
ndd /dev/tcp
7200000
900000
負荷が大きい Web サイトの場合はこの値より小さくしてください。
tcp_rexmit_interval_initial
ndd /dev/tcp
3000
3000
再転送率が 30 〜 40% を超える場合は、この値より大きくしてください。
tcp_rexmit_interval_max
ndd /dev/tcp
240000
10000

tcp_rexmit_interval_min
ndd /dev/tcp
200
3000

tcp_smallest_anon_port
ndd /dev/tcp
32768
1024
クライアントにも設定されます。
tcp_slow_start_initial
ndd /dev/tcp
1
2
少量のデータを少し高速で転送します。
tcp_xmit_hiwat
ndd /dev/tcp
8129
32768
送信バッファを大きくします。
tcp_recv_hiwat
ndd /dev/tcp
8129
32768
受信バッファを大きくします。
.

パフォーマンス評価のためのチューニング (HP-UX)
次の表は、パフォーマンスとスケーラビリティを評価するときに使う HP-UX オペレーティング システムのチューニング方法を示しています。これらの値は、希望の結果を達成するためにシステムを調整する方法の例です。

表 10.3 パフォーマンス評価のためのチューニング (HP-UX)
パラメータ
スコープ
デフォルト値
調整した値
コメント
maxfiles
/stand/system
2048
4096
2048 を超えて SAM が許容した限界まで大きくするには、ファイルを手作業で編集してください。
maxfiles_lim
/stand/system
2048
4096
2048 を超えて SAM が許容した限界まで大きくするには、ファイルを手作業で編集してください。
tcp_time_wait_interval
ndd /dev/tcp
60000
60000

tcp_conn_req_max
ndd /dev/tcp
20
1024

tcp_ip_abort_interval
ndd /dev/tcp
600000
60000

tcp_keepalive_interval
ndd /dev/tcp
72000000
900000

tcp_rexmit_interval_initial
ndd /dev/tcp
1500
1500

tcp_rexmit_interval_max
ndd /dev/tcp
60000
60000

tcp_rexmit_interval_min
ndd /dev/tcp
500
500

tcp_xmit_hiwater_def
ndd /dev/tcp
32768
32768

tcp_recv_hiwater_def
ndd /dev/tcp
32768
32768


magnus.conf の多様なディレクティブ
次のmagnus.conf のディレクティブを使うと、サーバがより効果的に動作するように設定することができます。

マルチプロセス モード
複数のプロセスと各プロセス内の複数のスレッドを使ってリクエストが処理されるようにサーバを設定することができます。この柔軟性によって、スレッドを使っているサイトでは最高のパフォーマンスを実現することができます。また、スレッド環境で動作しないレガシー アプリケーションを使っているサイトでは互換性を維持することができます。Windows NT 上のアプリケーションは一般に既にマルチプロセスを利用しているので、この機能は主に Unix/Linux プラットフォームが対象です。

マルチプロセスの利点は、スレッド認識できないか、スレッドセーフではないレガシー アプリケーションを iPlanet Web Server でより効果的に実行できることです。ただし、Netscape/iPlanet の拡張機能は、すべてシングルプロセスのスレッド環境をサポートするように構築されているので、マルチプロセス モードでは動作しません。サーバがマルチプロセス モードの場合、WAI、LiveWire、Java、サーバサイド JavaScript、LiveConnect、Web Publishing プラグイン、およびSearch プラグインは、起動時に失敗します。

iPlanet Web Server を実行するには、次の 2 つのモードがあります。

シングルプロセス モードでは、サーバは、Web クライアントからシングル プロセスへのリクエストを受信します。サーバのシングル プロセス内では多数のスレッドが実行され、新しいリクエストの到着を待っています。到着したリクエストは、そのリクエストを受信したスレッドによって処理されます。サーバはマルチスレッドなので、サーバに対して記述する拡張 (NSAPI) は、スレッドセーフである必要があります。つまり、NSAPI 拡張がグローバル リソースを使う場合 (ファイルまたはグローバル変数への参照の共有など)は、そのリソースの使用を同期化して、一度にアクセスされるスレッドを 1 つに制限する必要があります。Netscape/iPlanet が提供するプラグインはすべてスレッドセーフでスレッドを認識するので、スケーラビリティと同時性に優れています。しかし、ご使用のレガシー アプリケーションはシングルスレッドである可能性もあります。サーバでは、このようなレガシー アプリケーションは一度に 1 つだけ実行されます。したがって、負荷が高いときは、重大なパフォーマンス上の問題が生じます。残念ながら、シングルプロセス設計では、根本的な解決策はありません。

マルチプロセス設計では、サーバの起動時に複数のサーバ プロセスが生成されます。各プロセスには、1 つまたは複数のスレッドが含まれ (設定によって異なる)、着信するリクエストが受信されます。各プロセスは完全に独立しているので、それぞれグローバル変数、キャッシュ、およびその他のリソースのコピーを独自に持っています。マルチプロセスを使うとシステム リソースの使用量が増えます。また、共有ステートを必要とするアプリケーションをインストールする場合、そのステートは複数のプロセス間で同期化される必要があります。NSAPI には、プロセス間の同期化を実現するヘルパ機能はありません。

サーバで NSAPI を使っていない場合は、1 つのプロセスと多数のスレッドというデフォルトの設定を使います。スレッド環境にスケーリングできないアプリケーションを使っている場合は、少数のプロセスと多数のスレッドを使います。たとえば、4 つまたは 8 つのプロセスと、プロセスあたり 256 または 512 のスレッドを使います。

MaxProcs (Unix/Linux)

このディレクティブを使うと、Unix/Linux サーバをマルチプロセス モードに設定することができます。これによって、マルチプロセッサ マシンのスケーラビリティを向上させることができます。たとえば、4 プロセッサの CPU を使っている場合、MaxProcs を 4 に設定すると、プロセッサあたり 1 プロセスになり、パフォーマンスが向上します。

マルチプロセス モードで iPlanet Web Server を実行している場合は、LiveWire、Web Publisher、WAI を使うことはできません。

次のディレクティブでは、1 つの基本プロセスと 4 つのアクティブ プロセスが生成されます。

ノート この値をサーバ マネージャから調整することはできません。magnus.conf を使う必要があります。

スレッド情報のアクセプト
MinAcceptThreadsPerSocket/MaxAcceptThreadsPerSocket

このディレクティブを使うと、リッスン ソケットでアクセプト モードにするスレッドの数を指定することができます。これには、プロセス数と同じ値を設定することをお勧めします。プロセス数の 2 倍の値に設定することができますが、設定値が高すぎると (10 倍や 50 倍)、作成されるスレッドが多くなりすぎてサーバの速度が低下します。

アクセプト タイムアウト情報
AcceptTimeout

このディレクティブは、クライアントへのコネクションが受け入れられてからクライアントから情報を受信するまでのサーバの待機時間 (秒数) を指定するときに使います。デフォルトの設定は 30 秒です。ほとんどの環境では、この設定を変更する必要はありません。デフォルトの 30 秒より小さい値に設定することによって、スレッドを短時間で解放することができます。ただし、接続速度が遅いユーザとの接続を解除する可能性もあります。

CGIStub プロセス (Unix/Linux)
Unix/Linux システムでは、CGIStub パラメータを調整することができます。iPlanet Web Server では、CGI プロセスを処理するために、CGI エンジンによって必要に応じて CGIStub プロセスが作成されます。負荷が高く、CGI によって生成されるコンテンツに大きく依存するシステムでは、作成される CGIStub プロセスがシステム リソースをすべて使い尽くす可能性があります。ご使用のサーバがこのような状況の場合、CGIStub プロセスを調整すると、新規に作成される CGIStub プロセスの数、そのタイムアウト値、同時に実行される CGIStub プロセスの最小数を制限することができます。

ノート obj.conf ファイルに init-cgi 関数があり、マルチプロセス モードで動作している場合は、init-cgi の行に「LateInit = yes」と追加する必要があります。

MinCGIStubs/MaxCGIStubs/CGIStubIdleTimeout

Cgistub の制御用に magnus.conf ファイルに入力できる 3 つのディレクティブとそのデフォルトは、次のとおりです。

        MinCGIStubs 2
        MaxCGIStubs 10
        CGIStubIdleTimeout 45

MinCGIStubs は、デフォルトで開始されるプロセスの数を制御します。最初の CGIStub プロセスは、CGI プログラムがアクセスされるまで開始されません。デフォルト値は 2 です。obj.conf ファイルに init-cgi ディレクティブがある場合は、起動時に最小数の CGIStub プロセスが生成されます。

MaxCGIStubs は、サーバで生成される CGIStub プロセスの最大数を制御します。これは、同時に実行される CGIStub プロセスの最大数であり、保留されるリクエストの最大数ではありません。ほとんどのシステムでは、デフォルト値で十分です。設定値が高すぎると、スループットが低下する可能性があります。デフォルト値は 10 です。

CGIStub プロセスのアイドル時間が CGIStubIdleTimeout ディレクティブに設定した秒数に達すると、そのプロセスはサーバによって終了 (kill) されます。プロセス数が MinCGIStubs に達すると、プロセスはそれ以上終了されません。

バッファ サイズ
SndBufSize/RcvBufSize

サーバのソケットの送信バッファ (SndBufSize) と受信バッファ (RcvBufSize) のサイズを指定することができます。これらのバッファの詳細については、Unix/Linux のマニュアルを参照してください。

HTTP Header の厳密な確認
StrictHttpHeaders

サーバは HTTP ヘッダを厳密に確認し、不適切な重複するヘッダが含まれているコネクションを拒否します。この確認をやめる場合は、magnus.confStrictHttpHeaders ディレクティブをオフに設定することによって厳密なヘッダ確認をオフにすることができます。

StrictHttpHeaders off


RqThrottle について (最大同時接続)
magnus.conf ファイルの RqThrottle パラメータは、Web サーバで同時に処理されるトランザクションの最大数を指定します。デフォルト値は 512 です。この値を変更してサーバを抑圧し、実行されるトランザクションの待ち時間を最小にすることができます。RqThrottle の値は複数の仮想サーバに対して作用しますが、ロード バランシングは実行されません。

同時リクエストの数を計算するために、サーバではアクティブなリクエストの数がカウントされます。新しいリクエストが到着すると 1 が加算され、リクエストが完了すると 1 が減算されます。新しいリクエストが到着すると、リクエストの最大数が既に処理中であるかどうかが確認されます。上限に達すると、アクティブなリクエストの数が最大数未満に減少するまで新しいリクエストの処理は延期されます。

理論上は、同時リクエストの最大数を 1 に設定してもサーバは機能します。1 に設定すると、サーバでは一度に 1 つのリクエストだけが処理されます。ただし、スタティック ファイルのHTTP のリクエストは一般に期間が非常に短いので (応答時間は 5 ミリ秒程度)、一度に 1 つのリクエストだけが処理されても、1 秒間に 200 個のリクエストが処理されます。

しかし、現実には、インターネットのクライアントがサーバに頻繁に接続しながら、リクエストを完了しないことがあります。このような場合、サーバは 30 秒以上データを待ってからタイムアウトとなります (このタイムアウト時間は obj.conf で定義することができます。デフォルトは 5 分です) 。また、完了に数分を要する大規模なトランザクションを実行するサイトもあります。これらの要因から、同時リクエストの最大数が必要となります。サイトで、数秒を要するリクエストを多数処理している場合は、同時リクエストの最大数を増加する必要がある可能性があります。

デフォルトは 48/512 です。サイトが低速で、ActiveThreadsのカウントが制限に近い数値を維持している場合は、スレッド数の上限を増加することを検討してください。アクティブなスレッドのカウントを確認するには、perfdump ユーティリティを使います。

適切な RqThrottle の値は、負荷にもよりますが 200〜2000 です。システムで使用可能なすべてのリソースをサーバに使う場合 (つまり、同じマシンで他のサーバ ソフトウェアを使わない場合) は、RqThrottle を、必要な数値よりも高い数値に増加しても、悪影響はありません。

ノート 再入不可能な旧式の NSAPI プラグインは、このマニュアルで説明しているマルチスレッド モデルでは動作しません。プラグインを引き続き使うには、再入可能になるように変更する必要があります。変更できない場合は、RqThrottle を 1 に設定し、MaxProcs に 48 以上の高い値を使ってプラグインが動作するようにサーバを設定できますが、この場合、サーバのパフォーマンスが低下します。

チューニング

スレッド制限を調整する方法には、magnus.conf ファイルを編集する方法と、サーバ マネージャを使う方法の 2 つがあります。

magnus.conf ファイルを編集する場合は、RqThrottleMinPerSocket が最小値で、RqThrottle が最大値です。

最小値は、サーバが WaitingThreads 状態を維持しようするスレッドの目標値です。この数値は単なる目標です。この状態の実際のスレッドの数は、この数値をわずかに上回ったり、下回ったりする場合があります。デフォルト値は 48 です。スレッドの最大数は、パフォーマンスのボトルネックとなる可能性のある、同時に実行可能なアクティブなスレッドの最大数の強制的な制限です。デフォルト値は 512 です。

サーバ マネージャを使う場合は、次の手順を実行します。

  1. [Preferences] タブに移動します。
  2. [Performance Tuning] リンクをクリックします。
  3. [Maximum simultaneous requests] フィールドに値を入力します。
詳細については、オンライン ヘルプの「Performance Tuning」ページを参照してください。


その他の obj.conf パラメータ
いくつかの obj.conf 関数パラメータを使ってサーバのパフォーマンスを向上させることができます。次に示すパラメータだけでなく、そのパラメータの詳細については、nocache パラメータの使用を参照してください。

obj.conf の使い方の詳細については、『NSAPI Programmer's Guide for iPlanet Web Server』を参照してください。

find-pathinfo-forward
PathCheck 関数 find-pathinfoNameTrans 関数 pfx2dir および assign-name にパラメータ find-pathinfo-forward を使うと、パフォーマンスを向上させることができます。このパラメータはサーバ関数 find-pathinfo 内でパスの最後から後方ではなく、ntrans-base の後ろのパスで前方に PATH_INFO を検索するようにサーバに指示します。

ノート サーバ関数 find-pathinfo が呼び出されたときに rq->varsntrans- base パラメータが設定されていない場合、サーバは find-pathinfo- forward パラメータを無視します。

例 :

この機能は、サーバ関数 find-pathinfo 内でより少ない stat を実行することによって、特定の URL のパフォーマンスを向上することができます。Windows NT では、この機能を使って、PathCheck サーバ関数 find-pathinfo の使用時にサーバが "\" を "/" に変更するのを防ぐこともできます。

nostat
NameTrans 関数 assign-name のパラメータ nostat を指定すると、可能な場合は、サーバが指定された URL で stat を実行しないようにすることができます。次のシンタックスを使います。

例 :

上記の例では、ntrans-base が設定されている場合、サーバはパス /ntrans-base/nsfc および ntrans-base/nsfc/* に stat を実行しません。ntrans-base が設定されていない場合、サーバは URL /nsfc および /nsfc/* に stat を実行しません。デフォルトでは、ntrans-base は設定されます。この例では、デフォルトの PathCheck サーバ関数が使われることを前提としています。

assign-name NameTrans 内で nostat=virtual-path を使うと、サーバは指定された virtual-path での stat が失敗すると見なします。したがって、virtual-path のパスがシステム上に存在しないときのみ (たとえば、NSAPI プラグインの URL 内で)、nostat を使ってください。これらの URL で nostat を使うと、これらの URL 上の不要な stat を避けることによってパフォーマンスが改善されます。


ACL キャッシュのチューニング
キャッシュのデフォルト サイズ (200 エントリ) が原因で ACL キャッシュがボトルネックになったり、負荷が大きいサイトでその目的を果たせなかったりする可能性があります。負荷が大きいサイトでは、200 人を超えるユーザは ACL によって保護されたリソースにキャッシュ エントリの有効期限より短い期間しかアクセスすることができません。この状況が発生すると、iPlanet Web Server はユーザを確認するために頻繁に LDAP サーバにクエリを実行する必要があり、パフォーマンスに影響を与えます。

magnus.confACLUserCacheSize ディレクティブを使って ACL キャッシュのサイズを大きくすることによって、このボトルネックを避けることができます。キャッシュ サイズを大きくすると、より多くのリソースを使うので注意してください。キャッシュを大きくするほど、それを保持するためにより多くの RAM が必要になります。

キャッシュ エントリに格納されるグループの数 (デフォルトでは 4 つ) がボトルネックとなり、アクセスがかなり困難になる可能性もあります。ユーザが 5 つのグループに属しており、ACL キャッシュの有効期限内でこれらの別々のグループを確認する 5 つの ACL にアクセスする場合は、追加のグループ エントリを保持するために追加のキャッシュ エントリが作成されます。キャッシュ エントリが 2 つあるとき、元のグループ情報を持つエントリは無視されます。

このパフォーマンスの問題が発生するのがきわめてまれな場合は、ACLGroupCacheSize ディレクティブを使って、 1 つの ACL キャッシュ エントリにキャッシュされるグループの数を調整することができます。

magnus.conf のディレクティブの使用
キャッシュの値を調整するには、次のディレクティブを手作業で magnus.conf ファイルに追加する必要があります。

ACLCacheLifetime
このディレクティブは、キャッシュ エントリの有効期限 (秒数) を決める数値に指定します。キャッシュ内のエントリが参照されるたびに、その経過時間が計算され、ACLCacheLifetime に関して確認されます。その経過時間が ACLCacheLifetime 以上の場合、そのエントリは使われません。デフォルト値は 120 秒です。この値を 0 に設定すると、キャッシュはオフになります。この値に大きい数値を使う場合は、LDAP エントリの変更時に iPlanet Web Server を再起動する必要があります。たとえば、この値を 120 秒に設定すると、iPlanet Web Server は 2 分間 LDAP サーバと同期をとりません。LDAP を頻繁に変更する可能性が小さい場合は、大きい数値を使います。

ACLUserCacheSize
このディレクティブは、User Cache のサイズを決める数値に設定します (デフォルトは 200 )。

ACLGroupCacheSize
このディレクティブは、1 つの UID / キャッシュ エントリにキャッシュできるグループ ID の数を決める数値に設定します (デフォルトは 4)。

LogVerbose による設定の確認
LogVerbose をオンに設定すると、ACL キャッシュの設定が使われていることを確認することができます。LogVerbose が実行されているときは、サーバの起動時に次のメッセージがエラー ログに記録されるはずです。

警告 製品サーバでは LogVerbose をオンにしないでください。オンにすると、パフォーマンスが低下し、エラー ログのサイズがかなり大きくなります。


一般的なパフォーマンスの問題
この節では、Web サイトについて確認が必要な、一般的なパフォーマンスの 問題を示します。

メモリ不足状態
iPlanet Web Server をメモリ不足状態で稼働する必要がある場合は、
magnus.conf ファイルのRqThrottle の値を下げて、スレッド制限を最小限に抑えます。また、magnus.conf ファイルのMaxProcs の値を下げて、iPlanet Web Server によって生成されるプロセスの最大数を削減することもできます。

高負荷時のサーバ
サーバでは、アクティブなスレッドの数はスレッド制限値を超えません。同時リクエストの数がこの制限に達すると、サーバでは古いコネクションが開放されるまで新しいコネクションは処理されません。その結果、応答時間が長くなる場合があります。

iPlanet Web Server では、サーバの RqThrottle のデフォルト値は 512 です。サーバが受け入れるコネクション数を増やすには、RqThrottle の値を増やす必要があります。

確認
高負荷時のサーバには、応答時間が長いという症状が現れます。ブラウザからリクエストを実行すると、適度な速さでサーバへのコネクションが確立されますが、高負荷時のサーバでは、応答がクライアントに返されるまでに長い時間がかかる可能性があります。

サーバが高負荷であるかどうかを判断する最善の方法は、WaitingThreads のカウントを確認することです。この数値が 0 に近いか、または 0 の場合は、サーバでは現在新しいコネクションを受け付けていません。また、ActiveThreadsBusyThreads の数値が制限に近いかどうかを確認します。近い場合は、サーバはおそらく高負荷の状態にあります。

チューニング
RqThrottle について (最大同時接続)を参照してください。

キャッシュが未使用
キャッシュが未使用の場合、サーバのパフォーマンスは最適化されていません。ほとんどのサイトには、大量の GIF ファイルや JPEG ファイル (常にキャッシュ可能) があるので、キャッシュを効果的に使う必要があります。

ただし、一部のサイトでは、CGI、SHTML、または他のダイナミックなソースを使ってすべての処理を行います。ダイナミックなコンテンツは一般にキャッシュできず、キャッシュ ヒット率が本質的に低くなります。サイトのキャッシュ ヒット率が低くても心配しないでください。最も重要なのは、応答時間が短いことです。キャッシュ ヒット率が非常に低く、応答時間が非常に短いこともあります。応答時間に問題がなければ、キャッシュ ヒット率が低いことを心配する必要はありません。

確認
まず、ヒット率を確認します。これは、サーバへのすべてのヒットのうち、キャッシュが使われた回数の割合です。キャッシュ ヒット率は 50% 以上が適切です。サイトによっては、98% 以上に達することもあります。

CGI や NSAPI の呼び出しが多い場合は、キャッシュ ヒット率は低い可能性があります。

チューニング
カスタムの NSAPI 関数 (nametranspathcheck など) がある場合、キャッシュ ヒット率が低いことがあります。独自の NSAPI 関数を作成する場合は、プログラマーズ ガイドで、NSAPI コードをキャッシュ可能にする方法を確認してください。

KeepAlive コネクションのフラッシュ
KeepAlive なしで 1 秒間に 75 個のリクエストを処理できる Web サイトでは、KeepAlive が有効であれば 1 秒間に 200 〜 300 個のリクエストを処理できる可能性があります。クライアントは 1 つのページから複数のアイテムを要求するので、KeepAlive を効果的に使うことが重要です。KeepAliveCountKeepAliveMaxCount を超えると、後続の KeepAlive コネクションは、処理およびキープアライブされずに終了 ("フラッシュ") します。

確認
KeepAliveFlushesKeepAliveHits の値を確認します。KeepAlive が正常に動作しているサイトでは、KeepAliveHits に対する KeepAlive Flushes の割合は非常に低くなります。割合が高い (1:1 を超える) 場合、サイトではおそらく HTTP KeepAlive が最大限に活用されていません。

チューニング
KeepAlive のフラッシュを削減するには、magnus.conf ファイルの
MaxKeepAliveConnections の値を増加します。デフォルト値は 200 です。値を増加すると、より多くの待機中の KeepAlive コネクションを開いておくことができます。

警告 Unix/Linux システムでは、MaxKeepAliveConnections の値を高くしすぎると、サーバでオープン ファイル記述子が不足する可能性があります。Unix/Linux では、オープン ファイルの制限は通常 1024 なので、500 を超える値は設定しないでください。

ログ ファイルのモード
ログ ファイルを詳細モードにすると、パフォーマンスに大きく影響を与える可能性があります。

Client-Host、Full-Request、Method、Protocol、Query-String、URI、Referer、User-Agent、Authorization および Auth-User: "不明瞭" な変数は、内部の "高速化" パスから提供できないので、高速化パスはまったく使われません。したがって、スタティックなファイルやイメージなど、通常はアクセラレータの利用が有効なリクエストのパフォーマンスが大幅に低下します。

iPlanet Web Server には、ログ サブシステムの必要条件を緩和する、拡大されたログ モードがあります。obj.conf の "flex-init" 行に "relaxed. logname=anything" を追加すると、サーバの動作が次のように変わります。一部の "幸運な" ものを除く変数の記録によって、高速化パスの使用が阻まれません。アクセラレータが使われた場合、"不運な" 変数 (内部的に認識不可) は "-" と記録されます。CGI や SHTML などのダイナミックなコンテンツにはアクセラレータが使われないので、これらのリクエストでは、すべての変数が正しく記録されます。

ローカル変数の使用
iPlanet Web Server の JavaScript 仮想マシンでは、ローカル変数 (関数内で宣言される変数) の処理が大幅に改善されています。したがって、グローバル変数 (<server> タグと </server> タグの間で宣言される変数) の使用を最小限に抑え、できるだけ関数を使うアプリケーションを作成することをお勧めします。それによって、アプリケーションのパフォーマンスが大幅に向上します。

サーブレット パフォーマンスの向上
サーブレット パフォーマンスの向上については、『Programmer's Guide to Servlets in iPlanet Web Server』を参照してください。


サイジングの問題
この節では、サーバのサブシステムを調べ、パフォーマンスを最適化するための推奨事項を示します。

プロセッサ
Solaris と Windows NT の iPlanet Web Server では、透過的に複数の CPU が利用されます。一般に、複数の CPU の効果は、OS と作業の性質によって異なります。プロセッサをシステムにさらに追加すると、ダイナミック コンテンツのパフォーマンスは最も向上します。スタティックなコンテンツのほとんどには IO が含まれており、より重要なメモリではコンテンツのキャッシュが頻繁に行われるので (サーバがメモリを利用するために調整されているという前提で)、ビジーな CPU の動作に比べて IO により多くの時間がかかります。当社による 4 CPU マシンでのダイナミック コンテンツのパフォーマンス研究では、NSAPI の場合は 40〜60% 増を示し、Servlet の場合は約 50〜80% 増を示しています。

メモリ
iPlanet Web Server には、64MB 以上の RAM が必要です。複数の CPU がある場合は、1 CPU につき 64MB 以上の RAM を用意します。たとえば、CPU が 4 つある場合、最高のパフォーマンスを実現するには、256MB 以上の RAM を設置する必要があります。ピーク同時ユーザ数が多い場合は、スレッド増加分の RAM も用意します。最初の 50 人の同時ユーザの後は、ピーク同時ユーザあたり 512KB を追加します。

ドライブ容量
OS、ドキュメント ツリー、およびログ ファイルに十分なドライブ容量が必要です。ほとんどの場合は合計 2GB で十分です。

OS、スワップ ファイルとページ ファイル、iPlanet Web Server のログ、およびドキュメント ツリーを、それぞれ別個のハード ドライブに配置します。このようにすると、ログ ファイルがログ ドライブを満たしても、OS に影響はありません。また、たとえば、OS のページ ファイルがドライブの処理を発生させているかどうかがわかります。

ご使用の OS のベンダーが、推奨するスワップ空間またはページ空間の割り当て量を提案していることがあります。弊社のテストでは、スワップ空間が、RAM の容量とドキュメント ツリーの割り当てに十分な容量との合計のときに、iPlanet Web Server のパフォーマンスが最高になります。

ネットワーク
インターネット サイトでは、サーバで処理する必要のあるピーク同時ユーザ数を判断し、そのユーザ数にサイトでの平均リクエスト サイズを乗算します。平均リクエストには、複数のドキュメントが含まれる場合があります。確認するには、ホームページと、関連するサブフレームとグラフィックスをすべて使ってみてください。

次に、ピーク使用時に、平均的なユーザがドキュメントを待つことができる時間を判断します。その数値をこの秒数で割ります。これが、サーバに必要な WAN 帯域幅です。

たとえば、ピーク ユーザ数が 50 人、平均ドキュメントサイズが 24kB 、各ドキュメントを平均 5 秒で送信する場合、240 kB/s、つまり 1920 kbit/s が必要です。このサイトには、T1 回線を 2 本使います (それぞれ 1544 kbit/s)。すると、拡張の余地も生まれます。

サーバのネットワーク インターフェイス カードは、接続されている WAN 以上をサポートしている必要があります。たとえば、T1 回線が 3 本ある場合は10BaseT インターフェイスで十分です。T3 回線 (45 Mbit/s) まで 100BaseT を使うことができます。しかし、50 Mbit/s を超える WAN 帯域幅の場合は、複数の 100BaseT インターフェイスを設定するか、Gigabit Ethernet 技術を検討してください。

イントラネット サイトでは、ネットワークがボトルネックとなる可能性は低くなります。しかし、上記と同じ計算を使って判断することができます。

 

(C) Copyright (C) 2000 Sun Microsystems, Inc. Some preexisting portions Copyright (C) 2000 Netscape Communications Corp. All rights reserved.