UiPathのメモリリーク対策 追加開発
2021年08月17日
前回、ロボット実行プロセス「UiPath.Executor.exe」が
メモリを掴んだまま落ちる対策を書いた。
https://aki.p-kin.net/Entry/66/
ループ内で呼ばれるモジュールを分離して
別の「UiPath.Executor.exe」で実行することで
メモリを解放することができるようになった。
ところが、依然としてループを回しているプロセスで
1日50メガずつメモリを食っている。
今回は、この対策について。
メモリを掴んだまま落ちる対策を書いた。
https://aki.p-kin.net/Entry/66/
ループ内で呼ばれるモジュールを分離して
別の「UiPath.Executor.exe」で実行することで
メモリを解放することができるようになった。
ところが、依然としてループを回しているプロセスで
1日50メガずつメモリを食っている。
今回は、この対策について。
ロボットの構成は、以下の通り二重ループになっている。
メイン > フォルダループ > ファイルループ(分離)
前回の対策は、ファイルループのプロセスを分離した。
今回は、フォルダループを実行しているモジュールが
メモリ不足で落ちないようにしたい。
ただプロセスを分離するだけでは、途中で落ちてしまうので
落ちる前にフォルダループを終了して、
再びフォルダループを呼び出す処理に変更した。
改良点は以下の通り
●フォルダループの終了フラグを設定
●フォルダループの呼び出しをwhile(flag=0)に変更
●フォルダループ内でカウンタを設定し、カウントアップでループを抜ける
●ループを抜けたときに通常の終了条件を満たすかで終了フラグを設定
●フォルダループを再呼び出し時の初期設定を修正
カウントアップの上限は、適当に100に設定したけど、
本来は設定ファイルを読み込む仕様にすべきなのよね。
イメージはこんな感じ。
【修正前】
すべての処理を1つのプロセスで実行。
【修正後】
ファイルループを別プロセスに分離。
【追加開発】
フォルダループを中断・再開できるようにして別プロセスに分離。
PR
Comment