UiPathのメモリリーク対策 ログを仕掛けてみた
2021年04月16日
RPAのメモリリーク対策 ログを仕掛けてみた
前回の記事で書いたメモリリーク問題の続き。
パフォーマンスモニタはいいからソースのどの部分でメモリを消費しているかログを出力させろというのが上司の指示。
まずは公式HPから情報収集。
前回の記事で書いたメモリリーク問題の続き。
パフォーマンスモニタはいいからソースのどの部分でメモリを消費しているかログを出力させろというのが上司の指示。
まずは公式HPから情報収集。
https://www.uipath.com/ja/resources/knowledge-base/out-of-memory
発生箇所を特定するため、ログ出力する処理を複数個所に配置するとか。
◆メッセージをログ
"#001 PrivateMem: " + System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64.ToString
このログを設置すると、該当ログ出力を実行しているロボットプロセス
「UiPath.Executor.exe」で使用しているメモリ使用量をログに吐き出してくれる。
なお、この値はパフォーマンスモニタの以下に相当するとか。
Process > PrivateBytes > UiPath.Executor.exe
Weblio 辞書 > .NET Framework Process.PrivateMemorySize64
どこにどう設置していいかわかんないので、以下のように
ループ処理をしているモジュールの全処理の前後に設置。
"#000 PrivateMem: "
処理1
"#001 PrivateMem: "
処理2
"#002 PrivateMem: "
処理3
"#003 PrivateMem: "
メモリの増加を調べるので、処理の前後に入れるのがポイント。
なお、今回は全くいじったことのないソースファイルだったので、
ログの残り方でプログラムの構造が理解できた。
ログファイルが日付毎に作成されるので、
otbeditのoGrepを使ってPrivateMemでグレップ。
(oGrepについてはこちら)
1行前のメモリ使用量の差分をとって増分をエクセルで計算。
Ctrl+Tでテーブルを定義して、ピボットテーブルで
#の番号とメモリの増分を集計。
#の番号ごとにメモリの増加量とカウト数をsumproductで計算して、
全カウントで割って、平均増加量を計算。
頑張って出したけど、全体的に増えてるねって結論しか出ず。。。
発生箇所を特定するため、ログ出力する処理を複数個所に配置するとか。
◆メッセージをログ
"#001 PrivateMem: " + System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64.ToString
このログを設置すると、該当ログ出力を実行しているロボットプロセス
「UiPath.Executor.exe」で使用しているメモリ使用量をログに吐き出してくれる。
なお、この値はパフォーマンスモニタの以下に相当するとか。
Process > PrivateBytes > UiPath.Executor.exe
Weblio 辞書 > .NET Framework Process.PrivateMemorySize64
どこにどう設置していいかわかんないので、以下のように
ループ処理をしているモジュールの全処理の前後に設置。
"#000 PrivateMem: "
処理1
"#001 PrivateMem: "
処理2
"#002 PrivateMem: "
処理3
"#003 PrivateMem: "
メモリの増加を調べるので、処理の前後に入れるのがポイント。
なお、今回は全くいじったことのないソースファイルだったので、
ログの残り方でプログラムの構造が理解できた。
ログファイルが日付毎に作成されるので、
otbeditのoGrepを使ってPrivateMemでグレップ。
(oGrepについてはこちら)
1行前のメモリ使用量の差分をとって増分をエクセルで計算。
Ctrl+Tでテーブルを定義して、ピボットテーブルで
#の番号とメモリの増分を集計。
#の番号ごとにメモリの増加量とカウト数をsumproductで計算して、
全カウントで割って、平均増加量を計算。
頑張って出したけど、全体的に増えてるねって結論しか出ず。。。
PR
Comment