8.1.1 JP1/AJS2運用上の注意事項について
JP1/AJS2運用上の注意事項を次に示します。
- <この項の構成>
- (1) JP1/AJS2が動作しているホストの設定に関する注意事項
- (2) スケジューラーサービスに関する注意事項
- (3) JP1/AJS2で使用するデータベースに関する注意事項
- (4) その他の注意事項
(1) JP1/AJS2が動作しているホストの設定に関する注意事項
- JP1/AJS2サービスを起動したあとにテストなどでシステムの日時を大幅に変更した場合,ジョブネットの実行スケジュールが影響を受けます。このため,JP1/AJS2サービスを起動したあとは,システムの日時を変更しないようにしてください。
また,JP1/AJS2の運用を開始したあとは,システムの日時を前に戻さないでください。前に戻す必要がある場合は,スケジューラーサービスをコールドスタートしてください。詳細は,「15.13.3 システムの日時を変更する」を参照してください。
- JP1/AJS2は自ホスト名からIPアドレスが解決できる環境で動作させてください。自ホスト名からIPアドレスが解決できない環境では,JP1/AJS2は起動できません。
- システムで使用している文字コードがEUCの場合で,かつ,コマンド実行結果として表示される文字列に日本語が含まれる場合,実行結果の表示がずれることがあります。
- デーモンの文字コードと異なる文字コードでコマンドを実行すると,実行するコマンドによっては統合トレースログにはそれぞれの文字コードでメッセージが出力されます。
- JP1/AJS2がファイルを作成または参照するディレクトリおよびファイルについては,NFSマウントされたディスク上のディレクトリおよびファイルを指定できません。指定した場合の動作については保証できません。
(2) スケジューラーサービスに関する注意事項
- スケジューラーサービスをコールドスタートした場合,実行登録済みのジョブネットの結果情報をすべて消去してからスケジューラーサービスを開始するので,実行結果はすべて無効になります。したがって,コールドスタートのあとには,ジョブネットの再実行登録が必要です。
- JP1/AJS2で退避したユニット定義情報を回復すると,退避元と回復先のネストジョブネットのスケジュール定義が異なる場合があるので注意が必要です。
この現象について,次に示します。
(原因)
次の1~3の条件をすべて満たした場合に発生します。
- スケジュールルールを持つルートジョブネットをコピーし,ネストジョブネットとして定義する。
- 条件1のネストジョブネットを含むジョブネットワーク要素を次に示す機能を使用して退避する。
・ajsbackupコマンド
・ajsexportコマンド
・ajsprintコマンド
・JP1/AJS2 - Viewの退避機能
- 条件2で退避したジョブネットワーク要素を次に示す機能を使用して回復する。
・ajsrestoreコマンド
・ajsimportコマンド
・ajsdefineコマンド
・JP1/AJS2 - Viewの回復機能
(結果)
(原因)の1~3の条件をすべて満たした場合,次の結果になります。
- 退避元のネストジョブネットのスケジュール定義
「上位のジョブネットに依存する」のスケジュール定義が有効となります。
- 回復先のネストジョブネットのスケジュール定義
設定されているスケジュールルールの定義が有効となります。
(対処)
スケジューラーサービスの環境設定パラメーターAJSPRINTNETSCHPRFに「no」を設定後,退避・回復を実行することで,退避元と回復先のユニット定義情報が一致するようになります。この設定はJP1/AJS2 08-00以降を新規にインストールした場合,初期状態で設定されています。08-00より前のバージョンからバージョンアップインストールした場合で,この設定をしていない場合は必要に応じて設定してください。
スケジューラーサービスの環境設定パラメーターAJSPRINTNETSCHPRFの設定方法については,次に示す個所を参照してください。
- Windowsの場合
- マニュアル「JP1/Automatic Job Management System 2 セットアップガイド 4.7.4 ネストジョブネット定義パラメーター出力時のスケジュールルールの出力方法の変更」
- UNIXの場合
- マニュアル「JP1/Automatic Job Management System 2 セットアップガイド 14.1 スケジューラーサービス環境の設定」
(3) JP1/AJS2で使用するデータベースに関する注意事項
- ジョブネットやジョブの実行中に,システム障害などでJP1/AJS2のサービスの処理が中断した場合,JP1/AJS2のデータベースファイルの内容に不整合が発生することがあります。これは,キャッシュメモリー上の内容がディスクに書き込まれない場合に発生します。不整合が発生した場合,JP1/AJS2のサービスを起動しても,処理途中だったジョブネットに対する操作は保証できません。システム障害などでJP1/AJS2のサービスの処理が中断した場合には,JP1/AJS2起動前にデータベースファイルを再編成してください。なお,データベースの再編成に失敗した場合には,再編成できなかったデータベースファイルを再作成またはJP1/AJS2をコールドスタートしてください。
- データベースの種類にISAMを設定しているスケジューラーサービスをコールドスタートする場合,データベースには何もアクセスしてない状態(JP1/AJS2 - Viewをログオフして,JP1/AJS2のコマンドが使用されていない状態)でコールドスタートしてください。アクセスしている状態でコールドスタートすると,登録済み情報のクリアー処理に失敗しサービスが起動できません(Windowsイベントログ,またはsyslogファイルにKAVS0218-Eメッセージを出力して異常終了します)。
- JP1/AJS2のスケジューラーデータベースにISAMを使用する場合,ジョブネットワーク要素を操作するコマンドを同時に複数実行したり,JP1/AJS2 - Viewから多数の接続したりする場合,ISAMのロック資源確保の競合が発生します。このとき,各プロセスのプライオリティ(OSのタスクスケジューリングの優先順位)が異なると,ロック資源確保のバランスに偏りが発生します。この影響によって,プライオリティの低いプロセス(ジョブネットワーク要素を操作するコマンドや,JP1/AJS2 - Viewと連携するajsmonsvrプロセス)が滞留し,プライオリティの高いプロセス(JP1/AJS2スケジューラーサービス)がロック資源を確保するためにCPUを大量に使用する状況となり,JP1/AJS2の処理性能が低下することがあります。逆にサービスのプライオリティが低く,ジョブネットワーク要素を操作するコマンドやajsmonsvrプロセスのプライオリティが高い場合にも同様で,ジョブネットやジョブの起動が滞留する状況となります。このため,ジョブネットワーク要素を操作するコマンドを実行する場合は,サービスと同一のプライオリティで動作する環境で使用してください。
UNIXの場合は,nice値の違いによって顕著に現象が発生することがあるため,プロセス起動時のnice値に注意してください。
- ジョブネットワーク要素を操作するコマンドを実行する場合
JP1/AJS2サービスと同一のnice値でコマンドを実行してください。
- JP1/AJS2 Monitorサービスを起動する場合
JP1/AJS2サービスと同一のnice値でJP1/AJS2 Monitorサービスを起動してください。
- JP1/AJS2のジョブとしてジョブネットワーク要素を操作するコマンドを実行する場合(ジョブにスクリプトを指定して,そのスクリプト内でジョブネットワーク要素を操作するコマンドを実行する場合も含みます)
ジョブネットの「優先順位」のパラメーターを,標準の「なし」から「3」に変更してください。この設定により,JP1/AJS2サービスをnice値20で起動した場合,「なし」は+20で39(nice値の上限は39のため39に丸められます)になりジョブの優先順位が最も低くなりますが,「3」は+0で20に設定されサービスと同一のnice値でジョブが起動されるため,偏りが発生しにくくなります。
- JP1/AJS2で使用するデータベースは,再編成運用が必要です。
07-00の標準である,ISAMのキー再利用機能を使用している場合は,可変長データを保持するテーブルで,徐々に性能劣化が発生しますので,400万ジョブ実行時点で,再編成を行う運用を計画してください。
また,次のファイルが20メガバイトを超えないように監視してください。
- スケジューラーデータベースのAJSSTAT.K01(ただし,ISAM使用時。テーブル名プリフィックスをデフォルトの「AJS」と指定した場合のファイル名です)
- ジョブ実行環境データベースのJPQJOBINFO.K02
このポイントを超えても再編成をしないで運用を続けると,性能が急激に悪化する場合があります。特に,06-71以前のデータベースをそのまま使用し,ISAMのキー再利用機能を使用していない場合は必ず監視してください。キー再利用機能の設定については,「9.2.1 ISAMキー再利用の設定」を,ISAMデータベースの再編成については,「15.14.3 ISAMデータベースを再編成する」を参照してください。
なお,スケジューラーデータベースに組み込みDBを使用している場合であっても,ジョブ実行環境データベースにはISAMを使用していますので,ISAMデータベースの再編成運用は必要です。
スケジューラーデータベースに組み込みDBを使用している場合,空き領域再利用の設定を有効にした上で,ajsembdbreclaimコマンドを定期的に実行することで,長時間の運用ができます。大きな運用変更(大規模ジョブネットの削除や登録解除操作など)があった場合は,ajsembdbstatusコマンドで,未使用セグメント数を確認してください。運用を続けていく上で,使用済みセグメント数が80%を超える場合(JP1/AJS2のセットアップスクリプトによる,組み込みDBの標準セットアップでは,80%,90%,100%使用したタイミングで,syslogファイルまたはWindowsイベントログに,KFPH00211-Iメッセージが出力されます),再利用効率が悪くなっていることが考えられますので,再編成を実施してください。
- JP1/AJS2で使用するISAMデータベースは,テーブルを構成するファイルのサイズが2ギガバイトを超えられません。
ISAMのデータファイルのサイズは,テーブル内に格納されるピーク時のレコード件数によって決まります。
運用によってファイルが肥大化しやすいテーブルについては,次の目安によりファイルサイズを制御できます。
なお,2ギガバイトに近くになると,ディスクI/Oの増加による性能低下や,再編成時の作業ディスク容量を確保できないなどの問題が発生するおそれがありますので,レコード件数を削減してできるだけファイルサイズが小さくなるような運用を検討してください。
- スケジューラーデータベースのAJSSTATテーブル
最大で約139万件のレコードが格納できます。
1個の登録済みルートジョブネット当たりで必要なレコード件数は,「(ルートジョブネットおよび下層のネストジョブネット・ジョブの総数)*(保存世代数 + 確定実行登録した予定世代数 + 1)」(保存世代数には,起動条件成立により生成された枝番実行世代数も含みます)です。登録済みルートジョブネットすべてで算出し,加算した総和が総レコード件数となります。
したがって,このテーブルのファイルサイズは,ルートジョブネット内に存在するユニット数,保存世代数,確定実行登録時に指定する登録期間や予定世代数に対応して増加しますので,これらの数を必要最小限にとどめる構成で運用するようにしてください。また,ジョブネットの実行結果を参照する必要がなくなった時点で,こまめに登録解除するようにしてください。
特に,次のような運用を行う場合は,ファイルサイズ(レコード件数)の見積もりを十分に実施してください。
配下のユニット数が多量なルートジョブネットで運用する場合
保存世代数を小さくしてください。
複数ユニットを一つに束ねるなどユニット数を減らしてください。
起動条件を使用して数秒~数分のオーダーで起動条件が頻繁に成立する場合
起動条件成立間隔・回数,保存世代数をできるだけ削減してください。
起動条件使用時は,このテーブルに最大で次のレコード数が保持されます。
(保存世代数 * 保存世代数)
長期間にわたり確定実行登録をする場合
ジョブネット内のユニット数を減らしてください。
短期間の確定実行登録を繰り返し行う運用にしてください。
- ジョブ実行環境データベースのJPQJOBINFOテーブル
最大で約36万件のレコードが格納できます。ただし,ジョブ起動性能に最も影響を及ぼすテーブルですので,性能低下を防ぐため,格納データ件数は20万件を目安にしてください。
ジョブ実行情報保存日数内で稼働したジョブの数が総レコード件数となりますので,保存日数を小さくするとファイルサイズが肥大化しにくくなります。
- UNIXで,スケジューラーデータベースとして,組み込みDBを使用する場合,サービス起動時およびジョブネットワーク要素を操作するコマンドの環境変数LANGには,組み込みDBサーバセットアップ時と同一の文字コードを指定してください。
- ジョブネットワーク要素を操作するコマンドを実行する場合
コマンドを実行するターミナルまたはコマンドを実行するスクリプトに,あらかじめ環境変数LANGを設定し,exportしてください。
- JP1/AJS2 Monitorサービスを起動する場合
JP1/AJS2 Monitorサービス起動時には,あらかじめ環境変数LANGを設定し,exportしてください。
- JP1/AJS2サービスを起動する場合
次のファイルの環境変数LANGを正しく設定しておいてください。
物理ホストの場合:「/etc/opt/jp1ajs2/conf/jp1ajs_env.conf」
論理ホストの場合:「jp1ajs2_setup_clusterコマンドで指定した共有ディレクトリ/jp1ajs2/conf/jp1ajs_env.conf」
なお,このパラメーターは,JP1/AJS2サービス全体の環境変数LANGによる文字コード環境を変更しますので注意してください(通常,JP1/AJS2稼働環境の文字コードは統一しますので,組み込みDB稼働環境に限らず設定が必要な項目です)。
- スケジューラーデータベースに組み込みDBを使用する場合,JP1/AJS2 - Viewを接続したままJP1/AJS2サービスをコールドスタートすると,スケジューラーサービスのコールドスタート処理はJP1/AJS2 - Viewの終了を待ちます。このため,スケジューラーサービスをコールドスタートする場合には,必ずJP1/AJS2 - Viewを切断してください。
- スケジューラーデータベースに組み込みDBを使用する場合,ジョブネットワーク要素の各ユニットに定義するコメントについて,末尾に連続して設定した任意の数の半角空白文字はすべて無効になります。
コメントの末尾には半角空白文字を使用しないでください。
(4) その他の注意事項
- 一つのジョブネットの中に,大量のジョブネットやジョブの定義をしたり,関連設定を多用したりすると,JP1/AJS2 - Viewの操作性や性能が低下します。操作性や性能を考慮する場合,ジョブネットは2~3段の階層に分け,一つのジョブネットの中に定義するユニット数は50~80程度にすることをお勧めします。
- ジョブネットワーク要素の定義内容に機種依存文字を使用しないでください。機種依存文字を使用した場合,文字化けするおそれがあります。
- JP1/AJS2で使用できる文字については,「5.6.1 システムで使用する言語種別を検討する」を参照してください。
- JP1/AJS2を使用する場合,JP1/Baseのイベントサービス環境の設定で,API設定ファイルのserverパラメーターの通信タイプに「keep-alive」を設定してください。「close」を設定すると,JP1/AJS2が起動時に発行するJP1イベントが発行できなくなったり,統合トレースログにKAVT1040-Eメッセージが出力されてJP1イベント受信監視ジョブ・ログファイル監視ジョブ・Windowsイベントログ監視ジョブがイベントを検知できなくなったり,JP1イベント送信ジョブが異常検出終了したりするなど,正常に動作しない問題が発生することがあります。
設定方法およびAPI設定ファイルについては,マニュアル「JP1/Base 運用ガイド」を参照してください。