やあ :
私はフラスコ+ gunicornを使用してAPIサービスを作成します。 ワーカープロセッサ間で大きなデータを共有したいので、gunicorn.confでデータを初期化し、「gunicorn-cgunicorn.conf」を使用して終了します。 gunicorn.conf内のデータは1回だけ実行されるため、すべてのワーカープロセッサが共通の大きなデータを共有します。 私のプログラムのビッグデータは準備ができているだけで、書き込み操作はありません。 しかし、サービスを開始して長時間実行すると、メモリが突然1G増加することがあります。これは、gunicornで何らかの書き込み操作が行われ、システムのコピーオンライトメカニズムが発生する可能性があると思います。 また、ワーカープロセッサ間でビッグデータを共有するにはどうすればよいですか? 私はまだこの問題に混乱しています、あなたの返事を期待してください!!! ありがとうございました!
これは#1640に関連しています。
これを処理する他の唯一の方法は、Pythonのメモリ管理を回避することです。 おそらくmmapモジュールが役立つかもしれません。
ありがとうございました!!! とても助かります!
やあ:
あなたが私に提供した情報を使用して、Pythonを2.7から3.7にアップグレードし、gc.freeze()を使用して、ガベージコレクターによって収集される一部のオブジェクトを回避します。 今回は「メモリが急激に1G増加」しているようには見えませんが、各サブプロセッサのメモリが5億以上増加すると、メモリがゆっくりと増加し、その後増加が停止します。 gc.freeze()は機能していて、別のメモリの外観を作ると思います。 私が行った仕事が他の人々の役に立つことを願っています。 ありがとう!
最も参考になるコメント
これは#1640に関連しています。
これを処理する他の唯一の方法は、Pythonのメモリ管理を回避することです。 おそらくmmapモジュールが役立つかもしれません。