Gunicorn / Flask アプリのプロセス間で静的グローバルデータを共有する 質問する

Gunicorn / Flask アプリのプロセス間で静的グローバルデータを共有する 質問する

私は、20 個のワーカー プロセスで同期ワーカー タイプを使用して、Gunicorn で実行している Flask アプリを持っています。アプリは起動時に大量のデータを読み取りますが、これには時間がかかり、メモリを使用します。さらに悪いことに、各プロセスが独自のコピーをロードするため、さらに時間がかかり、メモリが 20 倍消費されます。データは静的で変更されません。データを一度ロードして、20 個のワーカーすべてで共有したいと思います。

この設定を使用するとpreload_app、1つのスレッドでのみロードされ、最初は1倍のメモリしか使用しませんが、リクエストが届き始めると20倍に膨れ上がるようです。データへの高速ランダムアクセスが必要なので、国際PC

Gunicorn プロセス間で静的データを共有する方法はありますか?

ベストアンサー1

メモリマップファイルを使用すると、プロセス間でページを共有できます。

python.org/3 のライブラリ

メモリ消費統計は通常誤解を招きやすく、役に立たないことに注意してください。通常は、vmstat の出力を検討して、スワップが大量にあるかどうかを確認する方がよいでしょう。

おすすめ記事