Sun N1 Grid Engine 6.1 ユーザーズガイド

第 7 章 エラーメッセージと障害追跡

この章では、Grid Engine システムのエラーメッセージ処理について説明し、一般的な各問題の解決方法のヒントを紹介します。

ソフトウェアによるエラーレポートの検出方法

Grid Engine ソフトウェアは、メッセージを特定のファイルに記録したり、電子メールを送信したり、またはこの両方を行って、エラーと警告をレポートします。ログファイルには、メッセージ ファイルとジョブ STDERR 出力が含まれます。

stderr ジョブが開始されると、ジョブ スクリプトの標準エラー (STDERR) 出力の出力先がファイルにリダイレクトされます。デフォルトのファイル名とファイルの保存場所を使用するか、qsub コマンドのオプションを使用してファイル名と場所を指定することができます。詳細は、Grid Engine システムのマニュアルページを参照してください。

sge_qmastersge_schedd、および sge_execd には、個別のメッセージファイルがあります。 ファイルの名前は同じで、messages です。sge_qmaster ログファイルは、マスタースプールディレクトリに保存されます。sge_schedd メッセージ ファイルは、スケジューラスプールディレクトリに保存されます。実行デーモンのログファイルの場所は、実行デーモンのスプールディレクトリです。スプールディレクトリについては、『Sun N1 Grid Engine 6.1 インストールガイド』「ルートディレクトリの下のスプールディレクトリ」を参照してください。

各メッセージは、ファイル内の 1 行を占めます。各メッセージは、縦線記号 (|) で区切られた 5 つのコンポーネントに分割されます。

    メッセージのコンポーネントは、次のとおりです。

  1. 1 番目のコンポーネントは、メッセージのタイムスタンプです。

  2. 2 番目のコンポーネントは、メッセージを生成する Grid Engine システムデーモンを指定します。

  3. 3 番目のコンポーネントは、デーモンが動作しているホストの名前です。

  4. 4 番目は、メッセージの種類です。メッセージの種類は、次のいずれかです。

    • 通知の N (情報提供が目的)

    • 情報の I (情報提供が目的)

    • 警告の W

    • エラーの E (エラー状態の検出)

    • 重大の C (プログラムの異常終了になる可能性あり)

    クラスタ構成で loglevel パラメータを使用して、グローバルまたはローカルベースで、記録するメッセージの種類を指定してください。

  5. 5 番目のコンポーネントは、メッセージのテキストです。


    注 –

    なんらかの理由でエラーログファイルにアクセスできない場合、Grid Engine システムは、対応するホストのファイル /tmp/sge_qmaster_messages/tmp/sge_schedd_messages、または /tmp/sge_execd_messages にエラーメッセージを記録しようとします。


場合によって、Grid Engine システムは、ユーザー、管理者、またはその両方に電子メールでエラーイベントを通知します。Grid Engine システムが送信する電子メールメッセージには、メッセージの本文は含まれません。メッセージのテキストは、メールの件名フィールドにすべて含まれます。

異なるエラーコードまたは終了コードの意味

次の表に、複数のジョブ関連エラーコードまたは終了コードの意味を示します。これらのコードは、あらゆる種類のジョブに該当します。

表 7–1 ジョブ関連のエラーまたは終了コード

スクリプト/方法 

終了またはエラーコード 

意味 

Job スクリプト 

成功 

 

99 

再度キューに入れる 

 

Rest 

成功。アカウンティングファイルの終了コード 

prolog/epilog 

成功 

 

99 

再度キューに入れる 

 

Rest 

キューエラー状態。ジョブは再度キューに入れられる 

次の表に、並列環境 (PE) 構成に関連するジョブのエラーコードまたは終了コードの意味を示します。

表 7–2 並列環境関連のエラーまたは終了コード

スクリプト/方法 

終了またはエラーコード 

意味 

pe_start 

成功 

 

Rest 

キューをエラー状態に設定。ジョブは再度キューに入れられる 

pe_stop 

成功 

 

Rest 

キューをエラー状態に設定。ジョブは再度キューには入れられない 

次の表に、キュー構成に関連するジョブのエラーコードまたは終了コードの意味を示します。これらのコードは、対応メソッドが上書きされた場合だけ有効です。

表 7–3 キュー関連のエラーまたは終了コード

スクリプト/方法 

終了またはエラーコード 

意味 

ジョブ開始 

成功 

 

Rest 

成功。ほかの意味は特になし 

一時停止 

成功 

 

Rest 

成功。ほかの意味は特になし 

再開 

成功 

 

Rest 

成功。ほかの意味は特になし 

終了 

成功 

 

Rest 

成功。ほかの意味は特になし 

次の表に、チェックポイント設定に関連するジョブのエラーコードまたは終了コードの意味を示します。

表 7–4 チェックポイント設定関連のエラーまたは終了コード

スクリプト/方法 

終了またはエラーコード 

意味 

チェックポイント 

成功 

 

Rest 

成功。ただし、カーネルチェックポイントの場合、チェックポイントが成功しなかったことを意味する。 

移行 

成功 

 

Rest 

成功。ただし、カーネルチェックポイントの場合、チェックポイントが成功しなかったことを意味する。移行は行われる。 

再開 

成功 

 

Rest 

成功。ほかの意味は特になし 

後処理 

成功 

 

Rest 

成功。ほかの意味は特になし 

正常に実行されたジョブに対して、qacct -j コマンドからの出力は、「failed」フィールドに「0」を示し、「exit_status」フィールドにジョブの終了ステータスを示します。ただし、シェパードがジョブを正常に実行できない場合があります。たとえば、epilog スクリプトが失敗したり、シェパードがジョブを開始できない場合があります。このような場合、「failed」フィールドは、次の表のコードの値のいずれかを表示します。

表 7–5 qacct -j failed フィールドコード

コード 

説明 

acctvalid 

ジョブに対する意味 

No failure 

ジョブは実行され、正常に終了された 

Presumably before job 

ジョブを開始できなかった 

Before writing config 

ジョブを開始できなかった 

Before writing PID 

ジョブを開始できなかった 

On reading config file 

ジョブを開始できなかった 

Setting processor set 

ジョブを開始できなかった 

Before prolog 

ジョブを開始できなかった 

In prolog 

ジョブを開始できなかった 

Before pestart 

ジョブを開始できなかった 

10 

In pestart 

ジョブを開始できなかった 

11 

Before job 

ジョブを開始できなかった 

12 

Before pestop 

ジョブは実行され、PE 停止手続きの呼び出し前に障害が発生した 

13 

In pestop 

ジョブは実行され、PE 停止手続きで障害が発生した 

14 

Before epilog 

ジョブは実行され、epilog スクリプトの呼び出し前に障害が発生した 

15 

In epilog 

ジョブは実行され、epilog 内で障害が発生した 

16 

Releasing processor set 

ジョブは実行され、プロセッサセットは解放できなかった 

24 

Migrating (checkpointing jobs) 

ジョブは実行され、移行される予定 

25

Rescheduling 

ジョブは実行され、再スケジューリングされる予定 

26 

Opening output file 

ジョブを開始できず、stderr/stdout ファイルを開けない 

27 

Searching requested shell 

ジョブを開始できず、シェルを検出できない 

28 

Changing to working directory 

ジョブを開始できず、エラーで開始ディレクトリへ移動した 

100 

Assumedly after job 

ジョブは実行され、信号によってジョブ終了させられた。 

「コード」の列には、「failed」フィールドの値が一覧表示されています。「説明」列には、qacct -j の出力で表示されるテキストが一覧表示されています。acctvalidt に設定されている場合、ジョブアカウンティングの値は有効です。acctvalidf に設定されている場合、アカウンティングレコードのリソース使用率は有効ではありません。「ジョブに対する意味」の列では、ジョブが実行されたのかどうかが示されています。

デバッグモードでの Grid Engine システムのプログラムの実行

重大なエラーが発生した場合に、問題の特定に十分な情報がエラー記録機構によって生成されないことがあります。このため Grid Engine システムは、ほぼすべての補助プログラムとデーモンをデバッグモードで実行する機能が用意されています。デバッグのレベルは、提供される情報の量および深さに応じて異なります。デバッグのレベルは、0 から 10 の範囲で、10 はもっとも詳細な情報を提供するレベル、0 はデバッグ無効です。

デバッグレベルを設定するために、Grid Engine システムの配布には、.cshrc または .profile リソースファイルに対する拡張機能が用意されています。csh または tcsh のユーザーの場合は、ファイル sge-root/util/dl.csh が含まれています。sh または ksh のユーザーの場合は、対応するファイルの名前は sge-root/ util/dl.sh です。標準のリソースファイルに、これらのファイルを取り込む必要があります。csh または tcsh のユーザーの場合は、.cshrc ファイルに次の行を含めます。


source sge-root/util/dl.csh

sh または ksh のユーザーの場合は、.profile ファイルに次の行を含めます。


. sge-root/util/dl.sh

いったんログアウトして、ログインし直すと、次のコマンドを使用してデバッグレベルを設定できます。


% dl level

level が 0 より大きい場合、Grid Engine システムのコマンドを開始すると、トレース出力を STDOUT に書き込むようコマンドに強制します。トレース出力には、警告メッセージ、ステータスメッセージ、エラーメッセージ、および内部的に呼び出されたプログラムモジュールの名前が含まれます。メッセージには、ユーザーが指定するデバッグレベルに応じて、エラーの報告に役立つ行番号情報も含まれます。


注 –

デバッグトレースを監視するには、大きなサイズのスクロール行バッファーを持つウィンドウを使用するようにします。たとえば、1000 行のスクロール行バッファーを使用します。



注 –

ウィンドウが xterm の場合は、xterm ログ記録機構を使用して、あとでトレース出力を調べることができます。


デバッグモードで Grid Engine システムデーモンの 1 つを実行すると、デーモンが端末接続を維持して、トレース出力を書き出します。こうした端末接続は、使用している端末エミュレーションの割り込み文字を入力することによって打ち切ることができます。たとえば、Control-C などを使用します。

デバッグモードを無効にするには、デバッグレベルを 0 に戻します。

dbwriter デバッグレベルの設定

sgedbwriter スクリプトは、dbwriter プログラムを開始します。このスクリプトは、sge_root /dbwriter/bin/sgedbwriter に保存されています。sgedbwriter スクリプトは、dbwriter の構成ファイルである dbwriter.conf を読み取ります。この構成ファイルは、sge_root/cell /common/dbwriter.conf に保存されています。この構成ファイルは、dbwriter のデバッグレベルを設定します。例は次のとおりです。


#
# デバッグレベル
# 有効な値: WARNING、INFO、CONFIG、FINE、FINER、FINEST、ALL
#
DBWRITER_DEBUG=INFO

dbwriter コマンドの –debug オプションを使用すると、dbwriter により作成されるメッセージの数を変更できます。通常は、デフォルトのデバッグレベルである info を使用してください。より詳細なデバッグレベルを使用すると、dbwriter によって出力されるデータの量が大幅に増加します。

次のデバッグレベルを指定できます。

warning

重大なエラーと警告のみが表示されます。

info

多数の参考メッセージが追加されます。info がデフォルトのデバッグレベルです。

config

たとえば規則の処理に関する、dbwriter 構成に関連する追加の情報が得られます。

fine

さらに多くの情報が作成されます。このデバッグレベルを選択すると、dbwriter によって実行されるすべての SQL 文が出力されます。

finer

デバッグ用に使用します。

finest

デバッグ用に使用します。

all

すべてのレベルの情報を表示します。デバッグ用に使用します。

問題の診断

Grid Engine システムには、問題の診断に役立ついくつかの報告手段が用意されています。次の節では、それらの使用方法を簡単に説明します。

保留中のジョブが振り分けられない

保留中のジョブが実行可能な状態であることが明らかであるにもかかわらず、振り分けられない場合があります。Grid Engine システムには、その理由を診断するために、qstat -j job-id qalter-w v job-id のユーティリティーとオプションのペアがあります。

このコマンドは、基本的にジョブが割り振られない理由を一覧表示します。この目的のため、ドライスケジューリングが実行されます。スロットを含めて消費可能なすべてのリソースが、そのジョブ用に完全に利用可能であるとみなされます。同様に、負荷値も変化するため、すべての負荷値は無視されます。

エラー状態 E と報告されるジョブまたはキュー

ジョブまたはキューのエラーが、qstat 出力で、大文字の E で示されます。

ジョブがエラー状態になるのは、Grid Engine システムがジョブを実行しようとして、そのジョブに固有の理由で実行に失敗した場合です。

キューがエラー状態になるのは、Grid Engine システムがジョブを実行しようとして、そのキューに固有の理由で実行が失敗した場合です。

Grid Engine システムには、ジョブ実行エラーが発生した場合に、ユーザーおよび管理者がその診断情報を収集するための一連の機能が用意されています。キューおよびジョブのエラーの状態のどちらも、原因はジョブの実行失敗にあります。そのため、診断の機能は両方の種類のエラー状態に適用できます。

一般的な問題の障害追跡

この節では、一般的な問題の原因の診断と対処に役立つ情報を説明します。

一般的なアカウンティングおよびレポートコンソールエラー

問題:

Version 2.0.3 の Sun Web コンソールのインストールが失敗し、次のエラーメッセージが表示される。


# ./inst_reporting
...
Register the N1 SGE reporting module in the webconsole

    Registering com.sun.grid.arco_6u3.

Starting Sun(TM) Web Console Version 2.0.3...
Ambiguous output redirect.
対処方法:

このバージョンの Sun Web コンソールは、ログインシェルとして /bin/sh を持つユーザー noacces のみがインストールできます。次のコマンドを使用してユーザーを追加します。


# useradd -u 60002 -g 60002 -d /tmp -s /bin/sh -c "No Access User" noaccess
問題:

簡単なクエリー定義の「table/view」ドロップダウンメニュー にエントリがないが、テーブルがデータベースで定義されている。

対処方法:

Oracle データベースを使用している場合に、通常、この問題が発生します。レポートモジュールのインストール時に、誤ったデータベーススキーマ名が指定されています。Oracle では、データベーススキーマ名は dbwriter によって使用されるデータベースユーザーの名前と同じになります。デフォルトの名前は arco_write です。Postgres では、データベーススキーマ名は public にしてください。

問題:

接続が拒否される。

対処方法:

smcwebserver が停止している可能性があります。smcwebserver を起動または再起動してください。

問題:

クエリーリストまたは結果リストが空である。

対処方法:

原因は次のいずれかが考えられます。

問題:

使用可能なデータベーステーブルリストが空である。

対処方法:

原因は次のいずれかが考えられます。

問題:

選択可能なフィールドリストが空である。

対処方法:

テーブルが選択されていません。リストから表を選択します。

問題:

フィルタリストが空である。

対処方法:

フィールドが選択されていません。1 つ以上のフィールドを定義してください。

問題:

ソートリストが空である。

対処方法:

フィールドが選択されていません。1 つ以上のフィールドを定義してください。

問題:

定義したフィルタが使用されていない。

対処方法:

フィルタがアクティブでない可能性があります。未使用のフィルタを変更して、アクティブにしてください。

問題:

高度なクエリーの遅延結合が無視され、実行がエラーになる。

対処方法:

遅延結合マクロに構文エラーがあります。高度なクエリーの遅延結合マクロの正しい構文は、次のとおりです。


latebinding{attribute;operator}
latebinding{attribute;operator;defaultvalue}
問題:

前の画面に戻るために breadcrumb を使用したが、ログイン画面が表示された。

対処方法:

セッションがタイムアウトになっています。再度ログインして、セッション時間を app.xml で増やしてください。

問題:

ビュー構成を定義したが、デフォルト構成が表示されている。

対処方法:

定義されたビュー構成は表示設定になっていません。ビュー構成を開いて、使用するビュー構成を定義してください。

問題:

ビュー構成を定義したが、最後の構成が表示されている。

対処方法:

定義されたビュー構成は表示設定になっていません。ビュー構成を開いて、使用するビュー構成を定義してください。

問題:

クエリーの実行に時間がかかりすぎる。

対処方法:

データベースから得られた結果が膨大です。結果に制限を設定するか、フィルタ条件を追加してください。