■想定される原因
スケジュールトリガー、ファイルトリガーでは、各トリガーに設定しているスクリプトの実行を開始する条件を満たしていることを確認する、専用のスレッド(監視スレッド)を立ち上げて、監視処理を実行しています。
DataSpiderServer で メモリ不足のエラーが発生した場合に、この監視スレッドが処理に必要なメモリを確保できずに、ダウンしてしまうことがあります。
この場合、ダウンした後にはスレッドによる監視処理が実行されないため、条件を満たしてもトリガーからスクリプトが起動されない状態となります。
また、監視スレッドは、DataSpiderServer を起動するときにのみ、作成されます。
■確認方法
server.log、server.error.log または、XML ログを確認して、OutOfMemory エラーが発生しているか確認してください。
また、バージョン 2.4.4 以降の環境では、以下の修正により、server.log にトリガーが停止したログが出力されるため、こちらから確認することができます。
・以下のトリガーで、DataSpiderServer で「OutOfMemoryError」が発生するなどしてトリガーの発火を行うことができない状態になった場合、server.log にログレベル「FATAL」でメッセージを出力するようにしました。
対象となるトリガーは以下の通りです。
- スケジュールトリガー
- ファイルトリガー
- AppFabric トリガー
出力されるメッセージは以下の通りです。
・スケジュールトリガーの場合
「<トリガー名> was terminated.」
・ファイルトリガー、AppFabric トリガーの場合
「<トリガー名> trigger task was terminated.」
なお、スケジュールトリガーにつきましては server.error.log に「Exception in thread "ScheduleExecutor"」が出力される場合もございますので、こちらからもご確認いただけます。
■回避策
再度、スケジュールトリガー、ファイルトリガー、AppFabric トリガーがスクリプトの実行を開始する状態にする場合には、DataSpiderServer を再起動してください。
■対処方法
監視スレッドの停止時に発生していたエラーを解消することが必要となります。
多くの場合は、スクリプトでメモリ不足のエラーが発生していることが原因です。この場合は、FAQ No.21213 を参照の上でご対応をお願いします。
※参考情報にリンクを記載します。
■調査のための情報
特にエラーが発生していないのにもかかわらずトリガーがスクリプトの実行を開始しない場合や発生しているエラーの原因が不明な場合には、以下の情報と合わせて、サポートセンターにお問い合わせをお願いいたします。
・ログ
$DATASPIDER_HOME/server/logs/server.log
$DATASPIDER_HOME/server/logs/server.error.log
エラーが発生しているスクリプトが特定できている場合は、マイログから、そのときの実行結果のログをダウンロードして添付してください。
・発生時刻
スケジュールトリガー、ファイルトリガー、AppFabricトリガーが、スクリプトの実行を開始するはずだった時刻について、教えてください。
また、スクリプトでエラーが発生していたことを確認している場合には、エラーが発生していた時刻についても教えてください。
・プロジェクト
スクリプトでエラーが発生している場合は、そのスクリプトを含むプロジェクトをマイプロジェクトからダウンロードして、添付してください。
※エラーが発生していたバージョンを指定してダウンロードしてください。
・トリガーの設定内容
スクリプトの実行を開始しなかったトリガーの、すべての設定画面について、画面キャプチャを添付してください。
バージョン 3.0 以降では、トリガーを指定してエクスポートすることができるため、該当のトリガーを指定してエクスポートしたファイルを添付していただいてもかまいません。