DataFlowが1時間前後でタイムアウトしてしまう場合のチェックポイント
DataFlowは、様々な要因で実行時間が長時間になった場合、タイムアウトエラーにより処理が終了されます。
このとき、タイムアウトエラーにより終了した実行履歴は、DataFlowの[履歴]タブに、以下のようなメッセージで、エラー理由が示されます。
日本語エラーメッセージ : ジョブタイムアウトのため実行に失敗しました。
英語エラーメッセージ : Execution failed due to job timeout
一般的に多くみられるエラーであり、大部分のDataFlowではおおむね24時間を経過した場合に発生することが多いです。何からの要因で長時間、DataFlowの処理を実行したため、タイムアウトエラーを返し、安全に強制終了し処理を停止しています。
しかし、特定の条件に合致する一部のDataFlowにおいては、それよりもずっと短い時間、例えば50分~1時間程度でタイムアウトが発生する場合がございます。
本記事では、その特定の条件をチェックするための方法と、タイムアウトエラーを回避する方法をご説明いたします。
--------------------------------------
1. DataFlowの過去30日間の平均処理時間
DataFlowの履歴タブには、上部に「30日の平均期間」という項目があります。
またその左に小さく、v2 のように、vという文字と数字が記載されています。
これは、そのDataFlowの最新バージョン(※)において、過去30日間の平均実行時間がどれぐらいの長さであるかを示します。このように、DataFlowごとに直近の平均実行時間が記録されており、そのDataFlowをどの程度の処理時間でタイムアウトするかの判断基準に使われています。
※ DataFlowの「バージョン」に関する説明は後述いたします。
この30日の平均期間が、10分間や、それよりも少ない時間になっている場合、タイムアウトとなる特定の条件に合致いたします。
2. タイムアウトエラーが発生した履歴の データ入力 の行数
DataFlowの履歴タブにある、タイムアウトエラーが発生した処理の開始時間と同じ行にある、データ入力箇所をチェックします。ここには、DataFlowが扱う入力DataSetの行数とサイズが表示されています。また、開始時間の左には、バージョンが記載されています。
この行数やサイズが、これまでの履歴と比較して、極端に多くなっていないかをご確認ください。極端に行数やサイズが多くなっている場合、特定の条件に合致いたします。
--------------------------------------
50分~1時間程度の実行時間でタイムアウトエラーが発生しているDataFlowにおいて、以上の2点をチェックしていただき、太字で示した条件に合致する場合は、以下の操作を行うことでタイムアウトエラーの発生が回避され、正常に実行できるようになる可能性があります。
問題の回避手順
- 該当DataFlowの「編集」をクリックし、編集画面を開きます。
- 編集画面上で「保存」をクリックし、編集画面を閉じます。(この時、DataFlowの処理内容を変更する必要はありません)
以上の操作を行うと、新しいバージョンとなります(上記ではv2からv3)。改めてDataFlowを実行することで、50分~1時間程度でタイムアウトエラーにより処理が停止する事象が回避され、正常にDataFlowが実行可能になると考えられます。
回避手順の背景
DataFlowを保存し直すことにより、これまで実行されていたバージョンから新しいバージョンに切り替わります。新しいバージョンにすることで、DataFlowの平均実行時間が再計算されることにより、タイムアウトエラーの発生タイミングの条件も再計算されることで問題が回避されています。
バージョンとは、DataFlowの処理内容や実行スケジュールを記録しているもので、Domoでは同一のDataFlowバージョンごとに平均実行時間や成功率が記録されています。この時平均実行時間に対して、大幅に実行時間が長くなる要因である、「入力DataSetの大幅な行数増加」が発生した場合、これまでの平均実行時間に対して大幅にDataFlowの実行時間が延びてしまうため、50分~1時間程度でタイムアウトエラーが発生する事象が発生します。
この場合、「問題の回避手順」で記載した通り、バージョンを意図的に新しいものにすることで問題が回避できます。
「一過性の原因により、入力DataSetにインポートされたデータが大幅に増えてしまった」「検証のために入力DataSetへ少量のデータを投入してテストし、その後DataFlowは編集せず、入力DataSetへ本番データを投入した」などといったケースで、本事象に直面することが考えられます。
その場合、本記事にて紹介しましたチェックポイントを確認の上、DataFlowのバージョンを更新することで、問題回避ができるかもしれません。
参考になれば幸いです。