UiPathのメモリリーク対策(個人的メモ)
2021年04月09日
会社で使っているRPAロボットが30時間程度稼働したところで停止するらしい。
イベントビューワーで該当日時のログを確認したところ
「out of memory」メモリ不足でした。
メモリを増設したものの焼け石に水。
ネットで調べると、
「ワークフローの作り方を工夫する」だって。
https://forum.uipath.com/t/topic/93508
使っている変数を確認したけど、
フラグとしてint32が5,6個、日付型の変数が3つ、数文字のstr型など、
3000回程度のループ(30時間分)でメモリ不足になるとは思えん。
イベントビューワーで該当日時のログを確認したところ
「out of memory」メモリ不足でした。
メモリを増設したものの焼け石に水。
ネットで調べると、
「ワークフローの作り方を工夫する」だって。
https://forum.uipath.com/t/topic/93508
使っている変数を確認したけど、
フラグとしてint32が5,6個、日付型の変数が3つ、数文字のstr型など、
3000回程度のループ(30時間分)でメモリ不足になるとは思えん。
怪しいのは、ログデータを書き出すためにメモ帳をこねくり回してること。
変数の受け渡しをせずにクリップボードを使ってること。
ひとまず、パフォーマンスモニタのログを仕掛けて様子見。
メモリ状況ってプロセスごとに見れることがわかったので、
Uipathとメモ帳のメモリ推移を仕掛けてみた。
原因特定できたとして、ワークフローを修正するのしんどいなぁ・・・。
他の方法を調べていたら、windows7にはメモリクリーナーがあるとか。
https://applica.info/windows-memory-release
って、マイクロソフトからのダウンロード終わってるし。
https://www.qam-web.com/?p=14713
さらに調べると、「rundll32.exe」でメモリ解放ができるとか。
「rundll32.exe advapi32.dll,ProcessIdleTasks」をCMDで実行するだけ。
これは試しても良さそう。
Uipathにメモリ不足への対応について書いてあった。
画面要素を取得するために保存したスクリーンショットがメモリ食うのか?
https://www.uipath.com/ja/resources/knowledge-base/out-of-memory
てか、そもそもUipathのメモリ要件満たしてねーじゃん・・・。
最低4Gじゃ、32bitのPCは全部アウトだね。
https://www.iimhs.co.jp/uipath/overture/
最後に整理すると・・・
問題が発生したときは、発生日時のイベントビューワーを確認する
情報をすべて出したうえで、原因について仮説を立てる
仮説を立証するためのログ取りを行う
原因を特定したら対策について効果とリスクを検証する
対策をすぐに実行する
障害対応は初動全力!
リカバリーが効くうちに対処しておけば大事には至らない。
PR
Comment