事前開始ジョブの設定

こちらでもちょっとふれましたが、最近はサーバー・ジョブというものが増えてきました。

また、このホスト・サーバー・ジョブと言われるものはほとんどが事前開始ジョブ (Pre-Start Job) というものです。

この事前開始ジョブ、という新しいジョブの種類は、とりあえずは、事前に開始された状態で待機していて、いざリクエストがクライアントからきた時に、のんびり初期化なんぞせずにすぐに応えられる、という役目のためにあるもののようです。

この事前開始ジョブも最初にいくつくらい起動させておけば効率的なのか、といったことを考えた時に DSPACTPJ などというけっこう便利なコマンドがあります。


事前開始ジョブの状態を見るために DSPACTPJ というコマンドがあります。

サブシステムと事前開始ジョブのプログラム名を指定して実行します。

こんな画面がまず出てきます。内容は見ればだいたいわかりますね。

事前開始ジョブはサブシステム記述の中の事前開始ジョブ項目でどのように開始されるか/稼動するかが指定されています。

サブシステム記述から「事前開始ジョブ項目」を選択します。

サブシステムに登録されている事前開始ジョブのリストが出てきます。
目的のものを表示させます。

こちらがその明細になります。

「初期ジョブ数」で指定された分だけ事前開始ジョブが開始され、使用可能なジョブが「限界値」を下回ると、「追加のジョブ数」分だけジョブが起動され、「ジョブの最大数」までそれが繰り返されます。
実際に観察してみると、「限界値」というのは、PSRW で待っているジョブの数のようですね。
「初期ジョブ数」と「限界値」がかなり違う場合は動きがかなりわかりやすいと思います。
たとえば、下の例のように「初期ジョブ数」が 5 で「限界値」が 2 の場合、常に最低 5個ジョブは存在し、そのうち PSRW であるジョブが 2個を下回ると (= 存在しているジョブが 5個だった場合、3個以上のジョブが実行状態になると) 追加で「追加のジョブ数」分のジョブ、この場合で言うと 2個事前開始ジョブが起動される、といった動きになっているようです。

「最大使用数」はあるひとつの事前開始ジョブがその一生の中でどれだけのリクエストを処理できるか、を示します。JDBC のプログラムを実行させてみると、中に含まれる SQL 文の数には関係なく、たとえば Connection の作成から SQL の実行、そして Connection のクローズまでの 1プログラムが 1リクエストということになるようです。
ジョブログがあまり大きくなりすぎたりするのもよくはありませんが、最大使用数を使いきるとジョブは終了し、新しいジョブが起動されます。ジョブの起動には時間がかかり、それを避けるための事前開始ジョブですから、十分に大きくないとこれも意味がありません。*NOMAX 以外には 1-1000 までが指定できます。

「初期ジョブ数」は先の DSPACTPJ で表示された値を考慮した上で指定してください。「使用中」の「平均」くらいは最低開始させておいた方が効率的かという気がします。ただし、この「平均」はジョブがまったく使われていない、アプリケーションのサービス時間以外も含んでの値なので気をつける必要があります。
ジョブの余計な起動を避ける、という意味ではピーク値 + αを指定してもいいのかもしれません。

基本的な考え方としては、こんなかんじになるのではないでしょうか。
DSPACTPJ コマンドで「使用中の事前開始ジョブ数」の「ピーク時の数」を何日間か観察し、その値と「限界値」の値を足した値を「初期ジョブ数」にセットするようにします。
「限界値」は、ピーク時のジョブ数を超えたリクエストが来た時に、当座の対応を行うジョブの数になります。つまり新しく「追加のジョブ数」のジョブを起動する時のバッファー=時間稼ぎになるわけです。次のジョブの準備をしている時に当座のやりくりをしてもらうための頭数です。リクエストがどのくらいの"軍団"で飛んでくるかを予想してセットする、というかんじでしょうか。また、DSPACTPJ コマンドの結果の「プログラム開始要求数」の「待機中のピーク時の数」が参考になります。ここがゼロである限りは待たされていないわけなので問題はないと言えるでしょう。
「追加のジョブ数」は、「初期ジョブ数」と「限界値」が適切にセットされている限りは、あまり大きい値をセットする必要はありません。逆にジョブの新たな起動はシステムにとって負荷のかかる処理であり、定義上、ピークの忙しい時に使われる値ですから、あまり負荷をかけたくない以上、大きな値をセットすることは避けたいところです。
「限界値」と「追加のジョブ数」については多少の試行錯誤が必要になりそうですね ...

ADDPJE コマンドで事前開始ジョブ項目を追加します。「しきい値」というパラメータがありますが、上のサブシステムの中の事前開始ジョブ項目では「限界値」となっているものです。両方とも英語では"Threshold"になっています。

[Top Pageに戻る]

Ads by TOK2