10


sidekiq gem の使用 - IO.popen を使用してプロセス (大きなリポジトリの git-tf クローン) を実行し、stdout を追跡してクローンの進行状況を確認する sidekiq ワーカーがあります。

ワーカーを実行していると、カーネル OOM が発生してプロセスが強制終了されるまで、時間の経過とともに sidekiq メモリが大きくなっていることがわかります。サブプロセス (Java プロセス) は総メモリの 5% しか使用していません。

コード内のメモリリークをデバッグ/チェックするにはどうすればよいですか? sidekiqメモリは、popenプロセスを使用したワーカーメモリの合計ですか?
そして、誰もそれを修正する方法を知っていますか?

編集
これは私のワーカーのコードです - https://gist.github.com/yosy/5227250

EDIT 2
sidekiqなしでコードを実行しましたが、メモリリークはありません..これは、sidekiqとtfsの大きなリポジトリでは奇妙なことです

4

1 に答える 1

0

sidekiq でのメモリリークの原因はわかりませんでしたが、sidekiq から抜け出す方法を見つけました。

git-tf を変更して、redis キューからコマンドを受け入れるサーバー コマンドを作成しました。これにより、コードの複雑さが大幅に軽減されます。

git-tf の修正版はこちら: https://github.com/yosy/gittf

いくつかのバグを修正するときに、後でサーバー コマンドに関するドキュメントを追加します。

于 2013-03-28T13:43:47.843 に答える