Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Apache Webサーバー(IBMi版)の最大CGIジョブ数とサーバー始動時のジョブ数の設定方法

Valenceのバックエンド側プログラムはWebサーバーのCGI(RPG SRVPGM)を使用しています。多数のアクセスが見込まれる場合には、Apache Webサーバーの最大CGIジョブ数と、サーバー始動時のジョブ数を調整することでパフォーマンスを向上させることができます。
Tips では、IBMi版 Apache WebサーバーのCGIジョブ設定方法についてご紹介します。

ValenceのCGIジョブについて

PGM-QZSRCGIジョブ

Valenceのバックエンド側プログラムは、Apache WebサーバーのCGIを使用しています。WebサーバーのCGIジョブはQHTTPSVRサブシステム下にPGM-QZSRCGIと表示されています。

PGM-QZSRCGIジョブについて

クライアントからWebサーバーにリクエストが送信されると、待機しているPGM-QZSRCGIが実行(RUN)されてWebサーバーからブラウザにレスポンスが返却されます。
レスポンスを返却後、PGM-QZSRCGIは再び待機状態(TIMW)に変化します。

つまり、クライアントからのリクエストごとに、PGM-QZSRCGIのジョブが1つ使用されます。
Webサーバーへのリクエストがあり、全てのPGM-QZSRCGIジョブが使用中の場合、自動的にPGM-QZSRCGIのジョブが追加されます。

そのため、多くのクライアント端末から、たくさんのリクエストを処理する必要がある場合には、最大CGIジョブ数の設定と、サーバー始動時のジョブ数を適切に設定することでパフォーマンスを向上させることができます。

最大CGIジョブ数 設定方法

最大CGIジョブ数はPGM-QZSRCGIのジョブが作成される最大数の設定になります。
デフォルトでは「40」が設定されています。

設定は以下の手順で変更できます。

IBM Web Administration for iにアクセス

IBM Web Administration fori の起動

ブラウザのアドレスバーに以下のアドレスを入力します。

http://IBMi IP Address:2001/HTTPAdmin

「IBMi IP Address」の箇所は、利用しているIBMiのアドレスに合わせて変更してください。
上記アドレスにアクセスできない場合は、IBMi上でサービスが停止している可能性があります。
その場合は、以下コマンドでサービスを起動してください。

STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)

http://IBMi IP Address:2001/HTTPAdminにアクセスすると、認証のダイアログが表示されます。Web関連サーバーを操作できる権限を持つユーザープロファイルを利用してログインしてください。デフォルトでは、*ALLOBJ と *IOSYSCFG の特殊権限を持つユーザーまたはそのグループ のユーザープロファイルのみが設定変更可能です。

最大CGIジョブ数の設定

IBM Web Administration for i

IBM Web Administration for i にアクセス後、「管理」タブ > 「HTTPサーバー」タブ > 「サーバー」プルダウンから対象のValenceインスタンスを選択してください。

動的コンテンツおよびCGI

次に、左側メニューから「動的コンテンツおよびCGI」をクリックして、「動的コンテンツおよびCGI」の「一般設定」タブの「最大アクティブCGIジョブ数」を変更してください。
デフォルトでは40が設定されています。設定を変更後、「OK」ボタン、または「適用」ボタンをクリックすることで設定が保存されます。

  ※Webサーバーを再起動後に設定が反映されます。

サーバー始動時のジョブ数 設定方法

動的コンテンツおよびCGI サーバー始動

サーバー始動時のジョブ数の設定も、IBM Web Administration for i の「動的コンテンツおよびCGI」から行えます。「サーバー始動」タブを選択後、事前開始CGIヘルパージョブの設定で「追加」ボタンをクリックしてください。

動的コンテンツおよびCGI サーバー始動 CGIジョブ数

プルダウンで、「CGIジョブ」、「ジョブ数」に事前に開始するジョブ数を指定します。
設定後、Webサーバーを再起動すると反映されます。

起動時のCGIジョブ

設定後、Valence起動時にPGM-QZSRCGIジョブが指定数作成されます。
事前にジョブを作成することにより、ジョブ作成時のオーバーヘッドを減らすことができます。

また、ジョブ数を40以上に設定する場合には、ツール > 構成ファイルの編集 にて ThreadsPerChildの設定を追加してください。

例) ジョブを100に設定する場合

 ThreadsPerChild 100

ジョブ数設定の基準について

CGIの最大ジョブ数設定や、サーバー始動時のジョブ数の値が適切ではなく、多すぎる場合は、ジョブ数分のリソースを消費してしまうため、適正な数を設定する必要があります。

確認する方法としては、CGIの最大ジョブ数を100や150等の大きい値に設定後、多数のアクセスが予想される日のValenceジョブ数を確認します。
このジョブ数が、一番リクエストが多かった際の実行時ジョブ数になりますので、そのジョブ数をサーバー始動時のジョブ数に設定します。

アクセス数が多い場合には、CGIの最大ジョブ数、サーバー始動時のジョブ数を設定いただけますでしょうか。