Orchestratorでロボット実行ログを表示する際にエラーが発生する

Question/Problem

Orchestratorでロボット実行ログを表示する際にエラーが発生して、ログが表示できません。

image


Resolution

原因

Orchestatorに表示されるログの件数が多い場合にデータベースから情報を取得する際に時間がかかり、処理のタイムアウトが発生することがあります。
例えば、ロボットが実行するジョブの中で大量にログを出力している、あるいはログの出力設定が「Verbose」や「Trace」になっている場合、ログの出力が多くなって本事象が発生することが考えられます。

なお、データベースへの要求(クエリ)実行時のタイムアウトは30秒となっており、この値は変更することができません。

解決策1 - データベースのログのデータをメンテナンス(クリーンナップ)を実施する

ロボット実行ログに関するテーブルに関してメンテナンスを行い、特にクリーンナップを実施することでデータベースのパフォーマンスが向上し、エラーが解消することが期待できます。

解決策2 - 30秒以内に収まるようなクエリのみを実行する

クエリの条件を次のようなものにすることでタイムアウトが発生する前にデータベースが処理を完了できるようにします。

  • ログの表示期間が1週間のときにエラーが発生する場合、1日にする​。
  • ログレベルやプロセス名でフィルターをかける。

解決策3 - プロセスのフォルダを分ける

もし大量にログ出力するプロセスが1つだけでその他のプロセスのログ出力は少ない場合、それらのプロセスを別のフォルダに配置することで、事象の影響範囲を絞り込むことができます。

解決策4 - SQL Serverのハードウェアスペックを上げる。

例えばハードディスクからSSDへストレージを変更することでパフォーマンスが向上し、エラーが解消することが期待できます。

解決策5 - ログレベルを下げる。

ロボットが実行するジョブのワークフローを編集し、ログレベルを「Information」などに下げることで、ログの出力を減らすことができます。


Error

エラーが発生しました。

System.ComponentModel.Win32Exception (258): 待ち操作がタイムアウトになりました。