忍者ブログ

UiPathのメモリリーク対策 追加開発

2021年08月17日
前回、ロボット実行プロセス「UiPath.Executor.exe」が
メモリを掴んだまま落ちる対策を書いた。
https://aki.p-kin.net/Entry/66/

ループ内で呼ばれるモジュールを分離して
別の「UiPath.Executor.exe」で実行することで
メモリを解放することができるようになった。

ところが、依然としてループを回しているプロセスで
1日50メガずつメモリを食っている。

今回は、この対策について。


ロボットの構成は、以下の通り二重ループになっている。

メイン > フォルダループ > ファイルループ(分離)


前回の対策は、ファイルループのプロセスを分離した。

今回は、フォルダループを実行しているモジュールが
メモリ不足で落ちないようにしたい。

ただプロセスを分離するだけでは、途中で落ちてしまうので
落ちる前にフォルダループを終了して、
再びフォルダループを呼び出す処理に変更した。

改良点は以下の通り
●フォルダループの終了フラグを設定
●フォルダループの呼び出しをwhile(flag=0)に変更
●フォルダループ内でカウンタを設定し、カウントアップでループを抜ける
●ループを抜けたときに通常の終了条件を満たすかで終了フラグを設定
●フォルダループを再呼び出し時の初期設定を修正


カウントアップの上限は、適当に100に設定したけど、
本来は設定ファイルを読み込む仕様にすべきなのよね。

イメージはこんな感じ。

【修正前】
すべての処理を1つのプロセスで実行。


【修正後】
ファイルループを別プロセスに分離。


【追加開発】
フォルダループを中断・再開できるようにして別プロセスに分離。


PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字