Sun ONE Application Server 7, Enterprise Edition 管理者用設定ファイルリファレンス |
第 3 章
init.conf の構文と使い方Sun ONE Application Server は起動時に、instance_dir/config ディレクトリの init.conf というファイルを検索して、サーバーインスタンスの動作と設定に関係するグローバル変数セットを設定します。Sun ONE Application Server は init.conf で定義した指令をすべて実行します。
Init 関数を除く init.conf の指令では変数と値を 1 つずつ指定します。たとえば次のように指定します。
指令の順序は重要ではありません。
注
init.conf インタフェースは、不確定です。不確定なインタフェースは試験的または一時的なインタフェースであるため、次のリリースで互換性がなくなったり、削除されたり、または安定したインタフェースに置き換えられたりする場合があります。
この章では、Sun ONE Application Server 7 の init.conf で指定できるグローバル設定について示します。
この章には次の節があります。
指令のアルファベット順のリストは、付録 C 「init.conf の指令のアルファベット順リスト」を参照してください。
注
ほとんどのファイルキャッシュ機能は nsfc.conf という設定ファイルで制御されます。nsfc.conf については、「nsfc.conf」と『Sun ONE Application Server Performance Tuning Guide』を参照してください。
Init 関数Init 関数は、サーバーモジュールとプラグインを読み込んで初期化し、ログファイルを初期化します。これらの関数の詳細については、『Sun ONE Application Server Developer's Guide to NSAPI』を参照してください。
サーバー情報この節では、サーバーに関する情報を指定する init.conf の指令について示します。次の指令があります。
NetSiteRoot
サーバーの bin ディレクトリと lib ディレクトリがある最上位ディレクトリへの絶対パス名を指定します。デフォルト値はないので値を指定する必要があります。
構文
NetSiteRoot path
TempDir
サーバーが一時ファイルとして使用するローカルボリュームのディレクトリを指定します。UNIX では、サーバーを実行するユーザーがそのディレクトリを所有し、書き込める必要があります。「User (UNIX のみ)」指令および「TempDirSecurity」指令も参照してください。
構文
TempDir path
デフォルト値
/tmp (UNIX)
TempDirSecurity
TempDir ディレクトリのセキュリティをサーバーがチェックするかどうかを指定します。UNIX では TempDirSecurity をオフ (TempDirSecurity off) にすると、サーバーは /tmp を一時ディレクトリとして使用します。
警告
UNIX では TempDirSecurity off を指定したり、/tmp を一時ディレクトリとして使用しないでください。/tmp を一時ディレクトリとして使用すると、セキュリティ上のリスクが大きくなります。
構文
TempDirSecurity [on|off]
デフォルト値
on
User (UNIX のみ)
User 指令ではサーバーの UNIX ユーザーアカウントを指定します。サーバーをスーパーユーザーまたはルートユーザーとして起動すると、指定したポートがバインドされ、ユーザー ID が User 指令で指定したユーザーアカウントに変更されます。サーバーを root で起動しない場合、この指令は無視されます。指定するユーザーアカウントには、サーバールートおよびサブディレクトリへの読み取りアクセス権を与える必要があります。ユーザーアカウントには、ログディレクトリへの書き込みアクセス権と CGI プログラムの実行権限を与える必要があります。ユーザーアカウントには設定ファイルに対する書き込み権を与えないようにします。これは、たとえ第三者がサーバーに侵入しても、設定ファイルを変更してマシンへアクセスすることを防ぐためです。nobody ユーザーを使用すると、十分なセキュリティが得られなくなる可能性があります。
構文
User name
name は 8 文字以下の UNIX ユーザーアカウントのログイン名です。
デフォルト値
User 指令がなければ、サーバーは起動時のユーザーアカウントで実行します。
例
User http
User server
User nobody
DNS 検索この節では、DNS 検索に関係がある init.conf の指令を示します。次の指令があります。
AsyncDNS
非同期 DNS を使用するかどうかを指定します。この指令を有効にするには、DNS 指令を on に設定する必要があります。値は on または off です。DNS が有効であれば、非同期 DNS を有効にするとサーバーのパフォーマンスが向上します。
デフォルト値
デフォルトは off です。
DNS
DNS 指令では、サーバーにアクセスするクライアント上でサーバーが DNS 検索を実行するかどうかを指定します。クライアントがサーバーに接続すると、サーバーはクライアントの IP アドレスを認識しますが、クライアントのホスト名を認識しません (たとえばサーバーはクライアントを 198.95.251.30 として認識できてもホスト名の www.a.com を認識できません)。サーバーはクライアントの IP アドレスからホスト名を解決し、アクセスコントロール、CGI、エラーレポート、アクセスログなどを実行します。
サーバーが 1 日に応答する要求が多ければ、ホスト名の解決を停止して DNS サーバーや NIS サーバーの負荷を減らすこともできます。
構文
DNS [on|off]
デフォルト値
DNS ホスト名の解決は、デフォルトで off になっています。
例
DNS on
スレッド、プロセス、および接続Sun ONE Application Server 7 では、待機ソケットの受け入れスレッドは接続すると接続キューで待機します。次にセッションスレッドがキューから接続を受け取って要求を処理します。セッションスレッドは、必要に応じてさらに多くのセッションスレッドを要求の最後に登録します。新しいスレッドは、接続キューが次のような状態の場合に追加されます。
- 新しい接続が返されるたびに、キューで待機している接続数 (接続のバックログ) と作成済みセッションスレッドの数が比較されます。待機している接続の数が作成済みスレッドの数よりも多ければ、次の要求完了時にスレッドがさらに追加されます。
- 前のバックログが追跡されます。バックログが時間の経過とともに増えていて、その増え方が ThreadIncrement の値よりも大きく、セッションスレッドからバックログを引いた数が ThreadIncrement の値よりも小さければ、ThreadIncrement で指定したスレッド数が新たに追加されます。
- 新しいセッションスレッドを追加するプロセスが、RqThrottle によって厳密に制限されます。
- ベンチマーク負荷の開始などによってバックログが急に増えても、作成されるスレッドが多くならないようにするために、16 回または 32 回ごとの接続時にスレッドが必要かどうかが決定されます。この回数は既に存在するセッションスレッドの数によって決まります。
この節では、スレッド、プロセスおよび接続数とそれぞれのタイムアウトに関係がある init.conf の指令を示します。次の指令があります。
ネイティブスレッドのプールを制御する指令については、「ネイティブのスレッドプール」も参照してください。
ConnQueueSize
アプリケーションサーバーが持てる未処理の接続数 (サービスが実行されていない接続数) を指定します。この値は、オペレーティングシステムで規定されている 1 プロセス当たりのオープンファイル記述子の最大値を超えるように設定する必要があります。
デフォルト値
デフォルト値は 5000 です。
HeaderBufferSize
クライアントからの要求データを読み取るために、各要求処理スレッドが使用するバッファのサイズ (バイト単位)。要求処理スレッドの最大値は RqThrottle で設定します。
デフォルト値
デフォルト値は 8192 (8 KB) です。
IOTimeout
クライアントから到着するデータをサーバーが待機する秒数を指定します。タイムアウトとなる前にデータが到着しなかった場合、接続は終了します。デフォルトの 30 秒より短く設定すると、スレッドを早く解放できます。ただし、接続速度が遅いユーザーの接続も切断してしまうことになります。
構文
IOTimeout seconds
デフォルト値
ハードウェア暗号化デバイスを使用しない場合は 30 秒、暗号化デバイスを使用する場合は 300 秒です。
KeepAliveThreads
この指令では、キープアライブサブシステムのスレッド数を指定します。推奨値は、システム上のプロセッサ数の数倍の値です。たとえば、CPU が 2 つあるシステムでは、キープアライブのスレッド数は 2 または 4 にします。この値は、キープアライブ接続の最大許容数 (MaxKeepAliveConnections) も考慮して設定する必要があります。
デフォルト値
1
KeepAliveTimeout
この指令では、サーバーが HTTP キープアライブ接続を開いている最大時間、またはクライアントとサーバー間の接続が持続している最大時間を指定します。以前のバージョンでは、サーバーがクライアント要求を処理している間はキープアライブ機能によってクライアントとサーバー接続を開いたままにしておくことができました。デフォルトの接続は、持続接続 (サーバーが接続を閉じるまでは開いたまま) であるか、または KeepAliveTimeout で指定した時間よりも長く接続が開いたままになっています。
接続がキープアライブサブシステムに移ると、タイムアウトへの秒読みが開始されます。タイムアウトまでに接続でアクティビティがない場合は、接続が閉じられます。
デフォルト値
デフォルト値は 30 秒です。最大値は 300 秒 (5 分) です。
ListenQ
待機ソケットで保留される接続の最大数を指定します。バックログキューがいっぱいになっている待機ソケットがタイムアウトになると接続は失敗します。
デフォルト値
デフォルト値は 128
MaxKeepAliveConnections
サーバーが同時に開くことのできるキープアライブ接続および持続的な接続の最大数を指定します。値の範囲は0 〜 32768 です。
デフォルト値
256
PostThreadsEarly
この指令が 1 (オン) に設定されていると、接続を受け入れてから要求に対する応答を送信するまでの間、待機ソケットの最小スレッド数が有効かどうかをサーバーがチェックします。データベース接続のように処理に時間のかかる要求をサーバーが扱う場合に、この指令を使用します。
デフォルト値
0 (オフ)
RcvBufSize
ソケットが使用する受信バッファのサイズをバイト単位で指定します。使用できる値は、オペレーティングシステムによって決まります。
デフォルト値
デフォルト値はオペレーティングシステムによって決まります。通常は 4096 (4K)、または 8192 (8K) がデフォルトです。
RqThrottle
サーバーが同時に扱える要求処理スレッドの最大数を指定します。それぞれの要求は、各スレッドで実行されます。
サーバーの設定やパフォーマンスのチューニングについては、『Sun ONE Application Server Performance Tuning Guide』で詳しく説明されています。
デフォルト値
128
RqThrottleMin
サーバー起動時に作成される要求処理スレッドの数を指定します。サーバーの負荷が増すにつれて、作成される要求処理スレッドが多くなります。RqThrottle スレッドの最大数まで作成できます。
デフォルト値
48
SndBufSize
ソケットが使用する送信バッファのサイズをバイト単位で指定します。
デフォルト値
デフォルト値はオペレーティングシステムによって決まります。通常は 4096 (4K)、または 8192 (8K) がデフォルトです。
StackSize
各要求処理スレッドの最大スタックサイズを指定します。
デフォルト値
各マシンに適したマシン固有のスタックサイズです。
StrictHttpHeaders
厳密な HTTP ヘッダーチェックを制御します。厳密な HTTP ヘッダーチェックがオンの場合、サーバーは不適切にヘッダーが重複している接続を拒否します。
構文
StrictHttpHeaders [on|off]
デフォルト値
off
TerminateTimeout
サーバーがシャットダウンするまでに、既存のすべての接続が切断するのを待機する時間を指定します。
デフォルト値
30 秒
ThreadIncrement
サーバー負荷の増加に対応するための追加または新規要求処理スレッド数です。要求処理キューに入っている保留接続数がアイドル状態の要求処理数より大きい場合などに追加されます。
サーバーの起動時に RqThrottleMin の数だけ要求処理スレッドが作成されます。負荷が増すと RqThrottle 指令による要求処理スレッドが作成されるまで ThreadIncrement 指令による追加要求処理スレッドが作成されます。
デフォルト値
デフォルト値は 10 です。
ネイティブのスレッドプールこの節では、ネイティブのスレッドプールのサイズを制御する指令を示します。このスレッドプールは、ネイティブの OS レベルのスレッドからのみ構成されています。すべてのスレッドは OS レベルであるため、通常、UNIX ではネイティブのプールは使用されません。UNIX でネイティブプールを使用するとコンテキストの切り替えが必要になり、パフォーマンスオーバーヘッドが少し増えますが、このネイティブプールを stickyAttach 効果のローカライズ、リソースの制御と管理、プラグインの単独スレッド動作のエミュレートなどの目的に使用できます。
stickyAttach は、server.xml ファイルの java-config 要素のプロパティとして次のように指定できます。
<java-config>
...
<property name="stickyAttach" value="1" >
</java-config>次の指令があります。
NativePoolStackSize
ネイティブスレッドプールのスレッドごとにスタックサイズを指定します。
デフォルト値
0 (オペレーティングシステム固有のデフォルト値)
NativePoolMaxThreads
ネイティブスレッドプールの最大スレッド数を指定します。
デフォルト値
128
NativePoolMinThreads
ネイティブスレッドプールの最小スレッド数を指定します。
デフォルト値
1
NativePoolQueueSize
スレッドプールのキューに待機できるスレッド数を指定します。プールのスレッドがすべてビジー状態の場合、次の要求処理スレッドはネイティブプールのスレッドが空くまでキューで待機します。キューが満杯の場合は次の要求処理スレッドがキューに入ろうとしても拒否され、クライアントにはビジー応答が返されます。その後、スレッドは解放され、キューで待機状態になっていた要求を処理します。
デフォルト値
0 (キューのサイズは無制限)
CGIこの節では、CGI プログラムの要求と関係がある init.conf の指令を示します。次の指令があります。
CGIExpirationTimeout
この指令では、CGI プロセスが終了される前に実行できる最大秒数を指定します。
CGIExpirationTimeout の値はあまり小さくしないようにします。対話型の CGI では 300 秒 (5 分) が適当です。ただし処理に時間がかかる CGI の場合は、CGI プログラムが処理に必要とする最大持続時間を指定します。値を 0 に設定すると CGI の有効期限がなくなり、CGI の処理時間は無制限になります。
デフォルト値
0 (無制限)
CGIStubIdleTimeout
指令で設定した秒数の間、アイドル状態にある CGIStub プロセスをサーバーで終了します。プロセスの数が MinCGIStubs になると、サーバーはそれ以上にプロセスを終了しなくなります。
デフォルト値
30
MaxCGIStubs
サーバーが生成できる CGIStub プロセスの最大数を制御します。この値は、同時に実行できる CGIStub プロセス数の最大値であり、保留中の要求の最大数とは異なります。デフォルト値はほとんどのシステムに適合します。この値を大きくしすぎると実際のスループットが減少します。
デフォルト値
10
MinCGIStubs
デフォルトで起動するプロセスの数を制御します。最初の CGIStub プロセスは CGI プログラムが呼び出されると起動します。init.conf ファイルに init-cgi 指令があれば、最小数の CGIStub プロセスが起動時に生成されます。この値は MaxCGIStubs の値より小さくする必要があります。
デフォルト値
2
エラー記録この節では、エラーログに関係がある指令を示します。次の指令があります。
ErrorLogDateFormat
ErrorLogDateFormat 指令では、サーバーログで使用する日付形式を指定します。
構文
ErrorLogDateFormat format
formatには付録 A 「日時の形式」の形式がすべて使用できます。
デフォルト値
%d/%b/%Y:%H:%M:%S
LogFlushInterval
この指令では、ログフラッシュスレッドの間隔を秒単位で指定します。
デフォルト値
30
PidLog
PidLog では、ベースサーバープロセスのプロセス ID (pid) を記録するファイルを指定します。サーバーサポートプログラムによっては、このログがサーバールートの logs/pid にあると見なす場合もあります。
サーバーをシャットダウンするには、-TERM シグナルを使って pid ログファイルに表示されているベースサーバープロセスを終了します。設定ファイルを再び読み取ってログファイルを再度開くようサーバーに指示するには、kill を -HUP シグナルとともに使用します。
サーバーのユーザーアカウントを使って PidLog ファイルに書き込めない場合、サーバーにはプロセス ID を記録する場所がありません。プロセス ID が記録できなければサーバーは起動しません。
構文
PidLog file
file はプロセス ID が保存されているファイルへの絶対パスとそのファイル名です。
デフォルト値
デフォルトはありません。
例
PidLog /var/ns-server/logs/pid
PidLog /tmp/ns-server.pid
ACLこの節では、アクセス制御リスト (ACL) に関連する init.conf の指令を示します。次の指令があります。
ACLCacheLifetime
ACLCacheLifetime は、キャッシュエントリが無効になるまでの時間を秒数で指定します。キャッシュのエントリが参照されるたびに、経過時間が計算され ACLCacheLifetime と照合されます。経過時間が ACLCacheLifetime 以上の場合、このエントリは使用されません。この値を 0 にすると、キャッシュが無効になります。
この値を大きくすると、LDAP エントリを変更した場合に Sun ONE Application Server の再起動が必要になることがあります。たとえば 120 秒に設定すると、Sun ONE Application Server は 2 分間 LDAP サーバーと同期が取れなくなる可能性があります。LDAP が頻繁に変更されない場合は、大きな値を設定できます。
デフォルト値
120
ACLUserCacheSize
ACLUserCacheSize は、ユーザーキャッシュのユーザー数を指定します。
デフォルト値
200
ACLGroupCacheSize
ACLGroupCacheSize は、1 つの UID/キャッシュエントリに対してキャッシュできるグループ ID の数を指定します。
デフォルト値
4
セキュリティこの節では、Sun ONE Application Server のサーバーアクセスとセキュリティに関係がある init.conf の指令を示します。次の指令があります。
Security
Security 指令で SSL をグローバルに有効または無効にするには、サーバーインスタンスへの証明書を有効にします。仮想サーバーで SSL を使用する場合は on にしておきます。on に設定した場合、ユーザーは次の入力をするよう要求されます。
仮想サーバーの SSL を有効にする方法については、第 2 章「サーバー設定ファイル」を参照してください。
構文
Security [on|off]
デフォルト値
off
例
Security off
SSLCacheEntries
キャッシュできる SSL のセッション数を指定します。上限はありません。
構文
SSLCacheEntries number
number が 0 の場合は、デフォルト値の 10000 が使用されます。
SSLClientAuthDataLimit
クライアント証明書のハンドシェークフェーズ時にバッファに入れるアプリケーションデータの最大数をバイト単位で指定します。
デフォルト値
デフォルト値は 1048576 (1M バイト) です。
SSLClientAuthTimeout
クライアント証明書のハンドシェークフェーズのタイムアウト時間を秒単位で指定します。
デフォルト値
60
SSLSessionTimeout
SSLSessionTimeout 指令は、SSL2 セッションのキャッシュ化を制御します。
構文
SSLSessionTimeout seconds
seconds 値は、キャッシュされた SSL2 セッションが無効になるまでの秒数です。SSLSessionTimeout 指令が指定されている場合、この秒数の値は暗黙的に 5 〜 100 秒に制限されます。
デフォルト値
デフォルト値は 100 です。
SSL3SessionTimeout
SSL3SessionTimeout 指令は、SSL3 セッションのキャッシュ化を制御します。
構文
SSL3SessionTimeout seconds
seconds 値は、キャッシュされた SSL3 セッションが無効になるまでの秒数です。デフォルト値は 86400 (24 時間) です。SSL3SessionTimeout 指令が指定されている場合、この秒数の値は暗黙的に 5 〜 86400 秒に制限されます。
チャンクされたエンコードこの節では、チャンクされたエンコードを制御する指令を示します。
これらの指令は obj.conf の Service SAF パラメータと同等です。obj.conf パラメータはこれらの指令を無視します。詳細については、『Sun ONE Application Server NSAPI Developer's Guide』を参照してください。
UseOutputStreamSize
UseOutputStreamSize 指令では、net_read および netbuf_grab NSAPI 関数の出力ストリームバッファサイズのデフォルト値を指定します。これらの関数の詳細については、『Sun ONE Application Server NSAPI Developer's Guide』を参照してください。
注
obj.conf ファイルの UseOutputStreamSize パラメータをゼロに設定すると、出力ストリームバッファを無効にできます。init.conf ファイルの UseOutputStreamSize をゼロに設定しても無効になりません。
構文
UseOutputStreamSize size
size の値はバイト数です。
デフォルト値
デフォルト値は 8192 (8K バイト) です。
ChunkedRequestBufferSize
ChunkedRequestBufferSize 指令では、チャンクしない要求データのデフォルトバッファサイズを指定します。
構文
ChunkedRequestBufferSize size
size の値はバイト数です。
デフォルト値
デフォルト値は 8192 です。
ChunkedRequestTimeout
ChunkedRequestTimeout 指令では、チャンクしない要求データのデフォルトタイムアウトを指定します。
構文
ChunkedRequestTimeout seconds
seconds の値は秒数です。
デフォルト値
デフォルト値は 60 (1 分) です。
その他この節では、init.conf のその他の指令を示します。
ChildRestartCallback
この指令は、サーバーの再起動時やシャットダウン時に daemon_atrestart NSAPI 関数を使って登録された NSAPI 関数をコールバックさせます。値は on、off、yes、no、true、または false です。daemon_atrestart の詳細については、『Sun ONE Application Server NSAPI Developer's Guide』を参照してください。
デフォルト値
No
HTTPVersion
現在サーバーが使用している HTTP バージョンは、m.n の形式で表します。m はバージョンのメジャー番号で、n はマイナー番号です。
デフォルト値
デフォルト値は 1.1
MaxRqHeaders
要求のヘッダー行の最大行数を指定する。0 〜 512 の値を取ります。
デフォルト値
64
ReentrantTimeFunctions (Solaris のみ)
ReentrantTimeFunctions 指令では、サーバーがサーバーの再入可能な時間フォーマット実装をオペレーティングシステムの実装の代わりに使用するかどうかを指定します。サーバーの再入可能な実装を使うと、多数の CPU が搭載されているコンピュータのパフォーマンスがあまり向上しないことがあります。
デフォルト値は off で、サーバーはオペレーティングシステムの実装を使用します。
デフォルト値
off
Umask (UNIX のみ)
この指令では、NSAPI 関数 system_fopenWA および system_fopenRW で使用する umask 値を指定して、異なるモードでファイルを開きます。この指令で有効な値は標準の UNIX umask 値です。
これらの関数の詳細については、『Sun ONE Application Server NSAPI Developer's Guide』の system_fopenWA および system_fopenRW を参照してください。