Interstage HTTP Server 2.4の運用時は、Webサーバで使用している機能や環境定義ファイル(httpd.conf)の定義内容に応じて、システム資源を拡張する必要がある場合があります。
以下の表を参照して必要なシステム資源の設定値/加算値を算出し、本値がシステムのデフォルト値を超える場合、本値を設定してください。ファイルディスクリプタおよびプロセス・スレッドのシステムパラメタ、リソース制限(unit)については、ファイルディスクリプタ数またはプロセス・スレッド数が不足する現象が発生した場合、以下の内容を参考にシステムパラメタの値を設定してください。
■パラメタと必要数
ファイルディスクリプタ
Interstage HTTP Server 2.4全体で使用されるおよそのファイルディスクリプタ数は、多数のアクセスがある状態における各httpdのプロセスがオープンしているファイルディスクリプタに、通信プロセス数の上限値を掛けることで算出することができます(※)。なお、測定時すでにファイルディスクリプタ数不足のエラーが発生してしまっている場合は、一度負荷を減らした状態で測定してください。ファイルディスクリプタ数はアクセス数に比例するため、例えばアクセス数を1/3とした場合、見積もり値は結果を3倍することでおよその見積もりを取得することが可能です。
使用するファイルディスクリプタ数がシステムのデフォルト値を超える場合は、以下システムパラメタの値を更新してください。
システム資源 | パラメタ |
---|---|
システム全体のファイルディスクリプタの最大数 | fs.file-max |
ファイルディスクリプタの最大数 | LimitNOFILE |
ユーザにおいてオープン可能なファイルディスクリプタの最大数 | [リソース制限(/etc/security/limits.conf)] nofile |
(※) httpdのプロセスがオープンしているファイルディスクリプタは、lsofコマンドで確認することが可能です。lsofコマンドについては、Linuxのドキュメントを参照してください。通信プロセス数の上限値については、「1.3 Webサーバのプロセス構成(Solaris/Linux)」を参照してください。
プロセス・スレッド数
生成されるプロセス・スレッド数の目安を以下に示します。多数のアクセスがある場合など、使用するプロセス・スレッド数がシステムのデフォルト値を超える場合は、以下を参考にシステムパラメタに値を設定してください。
システム資源 | パラメタ | 種類 | 必要数 |
---|---|---|---|
システム全体のプロセス・スレッドの最大数 | kernel.threads-max | 加算値 (注1) | (m + 1) × (n ÷ m) + 1 以上 |
[以下の機能を使用する場合] 上記に以下の値を加算してください。 ・CGI機能:(注2) ・Webサーバコネクタ: (n ÷ m) + 16 ・HTTP/2機能:p × (n ÷ m) | |||
[環境定義ファイル(httpd.conf)に以下のディレクティブ("|コマンド実行文"指定)を設定している場合] 上記に以下の値を加算してください。 ・CustomLog:ディレクティブ数 ・ErrorLog:ディレクティブ数 ・TraceLog:1 | |||
プロセス・スレッドの最大数 | LimitNPROC | 設定値 (注1) | 上記と同じ値 |
ユーザにおいて作成可能なプロセス・スレッドの最大数 | [リソース制限(/etc/security/limits.conf)] nproc | 加算値 (注1) (注3) | (m + 1) × (n ÷ m) 以上 |
[以下の機能を使用する場合] 上記に以下の値を加算してください。 ・CGI機能:(注2) ・Webサーバコネクタ: (n ÷ m) + 16 ・HTTP/2機能:p × (n ÷ m) |
m:環境定義ファイル(httpd.conf)のThreadsPerChildディレクティブの設定値。ThreadsPerChildの詳細については「第6章 ディレクティブ一覧」を参照してください。
n:環境定義ファイル(httpd.conf)のMaxRequestWorkersディレクティブの設定値。MaxRequestWorkersの詳細については「第6章 ディレクティブ一覧」を参照してください。
p:環境定義ファイル(httpd.conf)のH2MaxWorkersディレクティブの設定値(未定義の場合は、プロセスあたり利用可能なファイルディスクリプタの値に基づいて決定される値)
注1)複数のWebサーバを運用している場合は、Webサーバごとに必要数を加算してください。
注2)動作するCGIプログラム内で必要となるプロセス数・スレッド数を別途加算してください。
注3)rootユーザに対する設定値に、必要数を加算してください。環境定義ファイル(httpd.conf)のUserディレクティブに設定したユーザを、Interstage HTTP Server 2.4以外のプログラムでも使用する場合は、Userディレクティブに設定したユーザに対する設定値にも、必要数を加算してください。
■システムパラメタの変更手順(/etc/sysctl.conf)
システムパラメタを変更する手順を以下に示します。詳細については、オペレーティングシステムのドキュメントを参照してください。
/etc/sysctl.confファイルを編集します。
上記の表の「種類」欄が「設定値」の場合は、/etc/sysctl.confファイルのパラメタの値を、上記で算出した値に変更します。
以下のコマンドを実行するか、またはオペレーティングシステムを再起動します。
sysctl -p /etc/sysctl.conf
■リソース制限の変更手順(/etc/security/limits.conf)
システムのリソースを制限する手順を以下に示します。詳細については、オペレーティングシステムのドキュメントを参照してください。
/etc/security/limits.confファイルを編集します。/etc/security/limits.confファイルのパラメタ値を、上記で算出した値に変更します。
オペレーティングシステムを再起動します。
■リソース制限の変更手順(unit)
システムのリソースを制限する手順を以下に示します。詳細については、「チューニングガイド」の「Red Hat Enterprise Linuxのunitファイルでの環境定義」を参照してください。
以下の手順では、Webサーバが自動起動/自動停止する設定であることを前提にしています。Webサーバの自動起動の設定方法については、「4.1.3 自動起動の設定」を参照してください。
起動用unitファイル(FJSVahs_start.service)の設定を拡張するための設定ファイルを格納するディレクトリを、以下のパス名で作成します。
/etc/systemd/system/FJSVahs_start.service.d
作成したディレクトリ直下に、拡張子を「.conf」とするファイルを作成します。拡張子「.conf」のファイルがユニット設定拡張用の設定ファイルになります。
作成したユニット設定拡張用設定ファイルをテキストエディタで編集し、パラメタの値を以下の例のように記述します。両方のパラメタを、1つのユニット設定拡張用設定ファイルに記述することもできます。
例
ユニット設定拡張用設定ファイルの記述例
[LimitNOFILEの場合]
[Service] LimitNOFILE=値
[LimitNPROCの場合]
[Service] LimitNPROC=値
オペレーティングシステムを再起動します。