Gunicorn: サービスを長時間実行するとメモリが増加します

作成日 2018年10月10日  ·  3コメント  ·  ソース: benoitc/gunicorn

やあ :
私はフラスコ+ gunicornを使用してAPIサービスを作成します。 ワーカープロセッサ間で大きなデータを共有したいので、gunicorn.confでデータを初期化し、「gunicorn-cgunicorn.conf」を使用して終了します。 gunicorn.conf内のデータは1回だけ実行されるため、すべてのワーカープロセッサが共通の大きなデータを共有します。 私のプログラムのビッグデータは準備ができているだけで、書き込み操作はありません。 しかし、サービスを開始して長時間実行すると、メモリが突然1G増加することがあります。これは、gunicornで何らかの書き込み操作が行われ、システムのコピーオンライトメカニズムが発生する可能性があると思います。 また、ワーカープロセッサ間でビッグデータを共有するにはどうすればよいですか? 私はまだこの問題に混乱しています、あなたの返事を期待してください!!! ありがとうございました!

最も参考になるコメント

これは#1640に関連しています。

これを処理する他の唯一の方法は、Pythonのメモリ管理を回避することです。 おそらくmmapモジュールが役立つかもしれません。

全てのコメント3件

これは#1640に関連しています。

これを処理する他の唯一の方法は、Pythonのメモリ管理を回避することです。 おそらくmmapモジュールが役立つかもしれません。

ありがとうございました!!! とても助かります!

やあ:
あなたが私に提供した情報を使用して、Pythonを2.7から3.7にアップグレードし、gc.freeze()を使用して、ガベージコレクターによって収集される一部のオブジェクトを回避します。 今回は「メモリが急激に1G増加」しているようには見えませんが、各サブプロセッサのメモリが5億以上増加すると、メモリがゆっくりと増加し、その後増加が停止します。 gc.freeze()は機能していて、別のメモリの外観を作ると思います。 私が行った仕事が他の人々の役に立つことを願っています。 ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価