ガバナー構成ファイル

ガバナー構成ファイルには、データベースに対して実行されるアプリケーションを管理する規則が含まれています。

ガバナーはそれぞれの規則を評価し、規則が真と評価されたときに、指定されたとおりの処置を行います。

ガバナー構成ファイルは、モニターするデータベース (必須)、CPU 使用量統計が格納されるアカウント・レコードに書き込むインターバル、およびガバナー・デーモンのスリープ・インターバルを識別する一般節で構成されています。 構成ファイルには、オプションでアプリケーション・モニターの規則ステートメントが 1 つ以上含まれる場合もあります。 以下の指針は、一般節と規則ステートメントの両方に適用されます。
  • 一般的なコメントは中括弧 ({ }) に入れて区切る。
  • ほとんどの場合、値は大文字、小文字、または大/小文字混合で指定する。 例外はアプリケーション名 (applname 節の後に指定) で、大/小文字の区別があります。
  • 一般節または規則ステートメントは、それぞれセミコロン (;) で終了する。

規則を更新する必要が生じた場合には、ガバナーを停止しないで構成ファイルを編集します。 各ガバナー・デーモンは、構成ファイルが変更されたことを検出し、 ファイルを再度読み取ります。

パーティション・データベース環境では、ガバナー構成ファイルは、 各データベース・パーティション上のガバナー・デーモンが同一の構成ファイルを読み取れるように、 すべてのデータベース・パーティションにマウントされるディレクトリーに作成する必要があります。

一般節

ガバナー構成ファイルには、以下の節は複数回指定できません。
dbname
モニター対象となるデータベースの名前または別名。 この節は必須です。
アカウント n
各接続ごとの CPU 使用量統計を格納するアカウント・レコードが書き込まれるインターバル (分単位)。 このオプションは、Windows オペレーティング・システムでは使用できません。 一部のプラットフォームでは、CPU 統計はスナップショット・モニターから使用できません。 これに該当する場合、account 節は無視されます。

account のインターバル未満で完結する短いセッションが発生した場合、ログ・レコードは作成されません。 ログ・レコードが作成される場合、 そこには前の接続に関するログ・レコード以来の CPU 使用量を反映する CPU 統計が含まれます。 ガバナーが停止してから再開した場合、CPU 使用量は 2 つのログ・レコードで反映される場合があります。これらはログ・レコードのアプリケーション ID を介して識別できます。

間隔 n
デーモンがウェイクアップする時間間隔 (秒単位)。 この節を指定しない場合、デフォルト値の 120 秒が使用されます。

規則節

規則ステートメントは、アプリケーションの管理方法を指定します。 これらのステートメントは、規則節と呼ばれるより小さな構成要素で構成されます。 規則節を使用する場合、次のように、規則ステートメントに特定の順序で出現する必要があります。
  1. desc: 規則に関するコメント。単一引用符または二重引用符で囲みます。
  2. time: 規則が評価される時刻。
  3. authid: アプリケーションがステートメントを実行するときの 1 つ以上の許可 ID。
  4. applname: データベースに接続する実行可能ファイル、またはオブジェクト・ファイルの名前。 この名前には、大文字と小文字の区別があります。 アプリケーション名にスペースが含まれる場合、名前は二重引用符で囲む必要があります。
  5. setlimit: ガバナーが検査する制限。例えば、CPU 時間、返される行の数、アイドル時間などがあります。 一部のプラットフォームでは、CPU 統計はスナップショット・モニターから使用できません。 これに該当する場合、setlimit 節は無視されます。
  6. action: 制限に達した場合に実行する処置。 処置が指定されていない場合、 制限に達すると、 ガバナーはアプリケーションに対して作動しているエージェントの優先順位を 10 低くします。 アプリケーションに対して実行できる処置には、エージェントの優先順位を下げる、データベースから強制切断する、または運用についてのスケジューリング・オプションを設定するなどが含まれます。
規則節を組み合わせて 1 つの規則ステートメントを作ります。各節は規則ステートメントごとに 1 回までしか使用できません。
desc "Allow no UOW to run for more than an hour"
setlimit uowtime 3600 action force;

複数の規則がアプリケーションに適用される場合、そのすべてが適用されます。 通常、最初に検出された制限に関連付けられた処置が最初に適用される処置となります。 規則節に -1 の値を指定した場合は例外が発生します。この場合、同じ節の後続の指定値は、それより前の指定値のみをオーバーライドできます。前に置かれた規則ステートメントの他の節は、有効なままになります。

例えば、1 つの規則ステートメントで rowssel 100000 節と uowtime 3600 節を使用して、経過時間が 1 時間を超えた場合、または選択された行が 100 000 行を超えた場合には、そのアプリケーションの優先順位を低くするように指定しているとします。 次の規則では、uowtime -1 節を使用して、同じアプリケーションに無制限の経過時間を許可するように指定しているとします。 この場合、 アプリケーションが 1 時間を超えて実行されたとしても、 その優先順位は変更されません。 つまり、uowtime -1uowtime 3600 をオーバーライドします。 ただし、アプリケーションが 100 000 行を超える行を選択した場合は、rowssel 100000 がまだ適用されるため、優先順位が低くなります。

規則適用の順序

ガバナーは、規則を構成ファイル内の最初から最後まで処理します。 ただし、特定の規則ステートメントの setlimit 節が、先行する規則ステートメントの同じ節よりも緩やかな場合は、より制限的な規則が適用されます。 以下の例では、ADMIN の制限は 5000 行のままです。最初の規則の方がより制限的であるためです。
desc "Force anyone who selects 5000 or more rows."
setlimit rowssel 5000 action force;

desc "Allow user admin to select more rows."
authid admin setlimit rowssel 10000 action force;
緩やかな規則で、それより前のより制限的な規則をオーバーライドするには、-1 を指定して、新しい規則を適用する前に、前の規則をクリアします。 例えば、以下の構成ファイルでは、最初の規則がすべてのユーザーを 5000 行に制限します。 2 番目の規則は ADMIN に対するこの規則をクリアし、3 番目の規則は ADMIN の制限を 10000 行にリセットします。
desc "Force anyone who selects 5000 or more rows."
setlimit rowssel 5000 action force;

desc "Clear the rowssel limit for admin."
authid admin	setlimit rowssel -1;

desc "Now set the higher rowssel limit for admin"
authid admin 	setlimit rowssel 10000 action force;

ガバナー構成ファイルの例

{ The database name is SAMPLE; do accounting every 30 minutes;
  wake up once a second. }
dbname sample; account 30; interval 1;

desc "CPU restrictions apply to everyone 24 hours a day."
setlimit cpu 600 rowssel 1000000 rowsread 5000000;

desc "Allow no UOW to run for more than an hour."
setlimit uowtime 3600 action force;

desc 'Slow down a subset of applications.'
applname jointA, jointB, jointC, quryA
setlimit cpu 3 locks 1000 rowssel 500 rowsread 5000;

desc "Have the governor prioritize these 6 long apps in 1 class."
applname longq1, longq2, longq3, longq4, longq5, longq6
setlimit cpu -1
action schedule class;

desc "Schedule all applications run by the planning department."
authid planid1, planid2, planid3, planid4, planid5
setlimit cpu -1
action schedule;

desc "Schedule all CPU hogs in one class, which will control consumption."
setlimit cpu 3600
action schedule class;

desc "Slow down the use of the Db2 CLP by the novice user."
authid novice
applname db2bp.exe
setlimit cpu 5 locks 100 rowssel 250;

desc "During the day, do not let anyone run for more than 10 seconds."
time 8:30 17:00 setlimit cpu 10 action force;

desc "Allow users doing performance tuning to run some of
     their applications during the lunch hour."
time 12:00 13:00 authid ming, geoffrey, john, bill
applname tpcc1, tpcc2, tpcA, tpvG
setlimit cpu 600 rowssel 120000 action force;

desc "Increase the priority of an important application so it always
      completes quickly."
applname V1app setlimit cpu 1 locks 1 rowssel 1 action priority -20;

desc "Some people, such as the database administrator (and others),
     should not be limited. Because this is the last specification
     in the file, it will override what came before."
authid gene, hershel, janet setlimit cpu -1 locks -1 rowssel -1 uowtime -1;