TACでジョブコンダクターのタスクが実行中のまま終わらない

問題の説明

 TACでジョブコンダクターのタスクが実行中のまま終わらなく、テクニカルログにはデータベースに関するエラーが多数出ている。

 

原因

 典型的な例として2つの原因があります。

  • 同時実行されるタスク数が多い(未調整時の目安は30以上)
    設定されているデータベースへの接続数や実行スレッド数を超えてタスクを実行しようとしているため、リソース不足で問題が出ます。
  • 1日でスケジュールされているタスクの数が多い(未調整時の目安は1日5000~10000件以上)

    タスクが起動されると実行の可否にかかわらずデータベースのtaskexecutionhistoryテーブルにすべて記録されます。複数のタスク、例えば10タスクを毎秒起動すると一日で864,000件(10×60×60×24)、デフォルトでは15日間保持されるため12,960,000件のレコードがデフォルトで保持され、パフォーマンス(データの読み書き)に多大な影響を与えます。代表的な例として、TACのタイムラインにアクセスするとTAC全体のレスポンスが大幅に低下し、そこに常時リモート接続しようとしているStudioにも影響が及びます。

また、タスクのステータスが実行中だとしても実際には実行されてなく、データベースのステータスと実際のステータスがマッチしていない状態となります。

 

解決策

TACを再起動することで状態は一時的に復旧しますが、すぐに再発すると想定されます。以下の設定をご確認ください。

 

■ 同時実行されるタスク数が多い場合

以下資料のRecommended configurationを参考にチューニングを行ってください。

https://help.talend.com/reader/fA2wnGge2dZHfbRCAIEnNg/Re3PWARKLmrpIdIgQbHsNw

 

■ 1日でスケジュールされているタスク数が多い場合

業務上、短時間で回す必要がないタスクのスケジュール間隔の改善を検討してください。次にconfigurationテーブルのdashboard.conf.taskExecutionsHistory.timeBeforeDeletingOldExecutionsの値をデフォルトの1296000秒(15日)から一度10万件以下になるように設定し、様子を見て調整してください。また、TalendはH2データベースの本番運用を推奨しておりませんが、ご利用の場合はパフォーマンスが出ないため数千件になるように調整してください。なお、値の変更方法は以下の2つの方法があります。

  • データベースを直接書き換える
  • <Talend_HOME>/tac/apache-tomcat/webapps/org.talend.administrator/WEB-INF/classes/configuration.propertiesに以下のプロパティーを挿入し、TACを再起動します。
    dashboard.conf.taskExecutionsHistory.timeBeforeDeletingOldExecutions=XXX
    ※ 再起動後はconfiguration.propertiesから当該のプロパティーがデータベースに反映されファイルからは無くなります。

 

Version history
Revision #:
3 of 3
Last update:
‎07-17-2018 07:32 PM
Updated by:
 
Contributors