![]() |
Sun ONE Application Server 7 管理者用設定ファイルリファレンス |
init.conf の構文と使い方Sun ONE Application Server は起動時に、instance_dir/config ディレクトリの init.conf というファイルを検索して、サーバーインスタンスの動作と設定に関係するグローバル変数セットを設定します。Sun ONE Application Server は init.conf で定義した指令をすべて実行します。
Init 関数を除く init.conf の指令では変数と値を 1 つずつ指定します。たとえば次のように指定します。
TempDir /tmp
指令の順序は重要ではありません。
注 ブール値の指令には次のような等価の値があります。on/yes/true と off/no/false。
注 init.conf ファイルを編集した場合、サーバーを再起動して変更内容を反映させる必要があります。
注 init.conf インタフェースは、不確定です。不確定なインタフェースは試験的または一時的なインタフェースであるため、次のリリースで互換性がなくなったり、削除されたり、または安定したインタフェースに置き換えられたりする場合があります。
このmoduleでは、Sun ONE Application Server 7 の init.conf で指定できるグローバル設定について示します。
この章には次の節があります。
指令のアルファベット順のリストは、「init.conf の指令のアルファベット順リスト」を参照してください。
注 ほとんどのファイルキャッシュ機能は nsfc.conf という設定ファイルで制御されます。nsfc.conf については、「nsfc.conf」と『Sun ONE Application Server 7 パフォーマンスチューニングガイド』を参照してください。
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)
TEMP (Windows の環境変数)
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 ホスト名の解決は on です。
例
DNS on
スレッド、プロセス、および接続
Sun ONE Application Server 7 では、待機ソケットの受け入れスレッドは接続すると接続キューで待機します。次にセッションスレッドがキューから接続を受け取って要求を処理します。セッションスレッドは、必要に応じてさらに多くのセッションスレッドを要求の最後に登録します。接続キューが次のような状態の場合に新しいスレッドが追加されます。
- 新しい接続が返されるたびに、キューで待機している接続数 (接続のバックログ) と作成済みセッションスレッドの数が比較される。待機している接続数が作成済みスレッドの数よりも多ければ、次の要求完了後スレッドがさらに追加される
- 前のバックログが追跡される。バックログが時間の経過とともに増えていて、その増え方が ThreadIncrement の値よりも大きく、セッションスレッドからバックログを引いた数が ThreadIncrement の値よりも小さければ、ThreadIncrement で指定したスレッド数が新たに追加される
- 新しくセッションスレッドを追加する過程が RqThrottle の値で厳密に制限されている
- ベンチマーク負荷の開始などによってバックログが急に増えても、作成されるスレッドが多くならないようにするために、16 回または 32 回ごとの接続時にスレッドが必要かどうかが決定される。この回数は既に存在するセッションスレッドの数によって決まる
この節では、スレッド、プロセスおよび接続数とそれぞれのタイムアウトに関係がある init.conf の指令を示します。次の指令があります。
- ConnQueueSize
- HeaderBufferSize
- IOTimeout
- KeepAliveThreads
- KeepAliveTimeout
- KernelThreads (Windows のみ)
- ListenQ
- MaxKeepAliveConnections
- PostThreadsEarly
- RcvBufSize
- RqThrottle
- RqThrottleMin
- SndBufSize
- StackSize
- StrictHttpHeaders
- TerminateTimeout
- ThreadIncrement
ネイティブスレッドのプールを制御する指令については、「ネイティブのスレッドプール」も参照してください。
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 分) です。
KernelThreads (Windows のみ)
Sun ONE Application Server は、オペレーティングシステムがカーネルレベルのスレッドをサポートしていれば、カーネルレベルとユーザーレベルの両方のスレッドをサポートします。ローカルスレッドはプロセスの NSPR でスケジュールしますが、カーネルスレッドはホストのオペレーティングシステムでスケジュールします。通常、標準のデバッガとコンパイラはカーネルレベルのスレッドを対象にしています。KernelThreads を 1 (オン) に設定すると、サーバーではカーネルレベルのスレッドだけが使用され、ユーザーレベルのスレッドは使用されません。KernelThreads を 0 (オフ) に設定すると、サーバーではユーザーレベルのスレッドだけが使用されるので、パフォーマンスが向上することもあります。
デフォルト値
デフォルト値は 0 (オフ) です。
ListenQ
待機ソケットで保留される接続の最大数を指定します。バックログキューがいっぱいになっている待機ソケットがタイムアウトになると接続は失敗します。
デフォルト値
デフォルト値はプラットフォームによって異なります。AIX の場合は 4096、Windows の場合は 200、その多の場合は 128 です。
MaxKeepAliveConnections
サーバーが同時にオープンにできるキープアライブと持続接続の最大数を指定します。0 〜 32768 の値を取ります。
デフォルト値
256
PostThreadsEarly
この指令が 1 (オン) に設定されていると、接続を受け入れてから要求に対する応答を送信するまでの間、待機ソケットの最小スレッド数が有効かどうかをサーバーがチェックします。データベース接続のように処理に時間がかかる要求をサーバーが扱う場合はこの指令を使用します。
デフォルト値
0 (オフ)
RcvBufSize
ソケットが使用する受信バッファサイズをバイト単位で指定します。使用できる値はオペレーティングシステムによって決まります。
デフォルト値
デフォルト値はオペレーティングシステムによって決まります。通常は 4096 (4K)、または 8192 (8K) がデフォルトです。
RqThrottle
サーバーが同時に扱える要求処理スレッドの最大数を指定します。それぞれの要求は各スレッドで実行されます。
サーバーの設定やパフォーマンスのチューニングについては、『Sun ONE Application Server Performance Tuning, Sizing, and Scaling 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>Windows では常にデフォルトのネイティブプールが使用され、Sun ONE Application Server では初期要求処理用のファイバ (ユーザーがスケジュール設定したスレッド) を使用します。Windows でカスタムの追加プールを使用してもオーバーヘッドは増えません。
次の指令があります。
NativePoolStackSize
ネイティブスレッドプールのスレッドごとにスタックサイズを指定します。
デフォルト値
0 (オペレーティングシステム固有のデフォルト値)
NativePoolMaxThreads
ネイティブスレッドプールの最大スレッド数を指定します。
デフォルト値
128
NativePoolMinThreads
ネイティブスレッドプールの最小スレッド数を指定します。
デフォルト値
1
NativePoolQueueSize
キューでスレッドプールを待機するスレッド数を指定します。プールのスレッドがすべてビジー状態の場合、次の要求処理スレッドはネイティブプールのスレッドが空くまでキューで待機します。キューが満杯の場合は次の要求処理スレッドがキューに入ろうとしても拒否され、クライアントにはビジー応答が返されます。要求処理スレッドは別の受信要求を扱い、いつまでもキューで待機することはありません。
デフォルト値
0 (キューのサイズは無制限)
CGI
この節では、CGI プログラムの要求と関係がある init.conf の指令を示します。次の指令があります。
CGIExpirationTimeout
この指令では、CGI プロセスが終了される前に実行できる最大秒数を指定します。
CGIExpirationTimeout の値はあまり小さくしないようにします。対話型の CGI では 300 秒 (5 分) が適当です。ただし処理に時間がかかる CGI の場合は、CGI プログラムが処理に必要とする最大持続時間を指定します。値を 0 に設定すると CGI の有効期限がなくなり、CGI の処理時間は無制限になります。
Windows プラットフォームでは init-cgi タイムアウトは使用できません。代わりに、CGIExpirationTimeout を使用します。
デフォルト値
0 (無制限)
CGIStubIdleTimeout
指令で設定した秒数の間、アイドル状態にある CGIStub プロセスをサーバーで終了します。プロセスの数が MinCGIStubs になると、サーバーはそれ以上にプロセスを終了しなくなります。
デフォルト値
30
MaxCGIStubs
サーバーが生成する CGIStub プロセスの最大値を制御します。これは CGIStub 実行時の最大同時プロセス数であり、保留要求の最大数ではありません。デフォルト値はほとんどのシステムに適合します。この値を大きくしすぎると実際のスループットが減少します。
デフォルト値
10
MinCGIStubs
デフォルトで起動するプロセス数を制御します。最初の CGIStub プロセスは CGI プログラムが呼び出されると起動します。init.conf ファイルに init-cgi 指令があれば、最小数の CGIStub プロセスが起動時に生成されます。この値は MaxCGIStubs の値より小さくする必要があります。
デフォルト値
2
WingcgiTimeout (Windows のみ)
この値より時間がかかる WinCGI プロセスは、このタイムアウト (秒単位) になると終了します。
デフォルト値
60
エラー記録
この節では、エラー記録に関係がある指令を示します。次の指令があります。
ErrorLogDateFormat
ErrorLogDateFormat 指令では、サーバーログで使用する日付形式を指定します。
構文
ErrorLogDateFormat format
formatには「日時の形式」の形式がすべて使用できます。
デフォルト値
%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
- SSLCacheEntries
- SSLClientAuthDataLimit
- SSLClientAuthTimeout
- SSLSessionTimeout
- SSL3SessionTimeout
Security
Security 指令で SSL をグローバルに有効または無効にするには、サーバーインスタンスへの証明書を有効にします。仮想サーバーで SSL を使用する場合は on にしておきます。on に設定した場合、ユーザーは次の入力をするよう要求されます。
- サーバーの秘密キーが含まれている信頼データベースへのパスワード
- インストールされた暗号化されたハードウェアに必要な PIN
注 管理インタフェースでセキュア待機ソケットを作成すると、init.conf のグローバルなセキュリティが自動的に有効になります。server.xml でセキュア待機ソケットを手動で作成する場合は、init.conf を編集してセキュリティをオンにします。
仮想サーバーの SSL を有効にする方法については、「サーバー設定ファイル」を参照してください。
構文
Security [on|off]
デフォルト値
off
例
Security off
SSLCacheEntries
キャッシュできる SSL のセッション数を指定します。上限はありません。
構文
SSLCacheEntries number
number が 0 の場合は、デフォルト値の 10000 が使用されます。
SSLClientAuthDataLimit
クライアント証明書のハンドシェークフェーズ時にバッファに入れるアプリケーションデータの最大数をバイト単位で指定します。
デフォルト値
デフォルト値は 1048576 (1 MB) です。
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 (8 KB) です。
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 を参照してください。