私は、20 個のワーカー プロセスで同期ワーカー タイプを使用して、Gunicorn で実行している Flask アプリを持っています。アプリは起動時に大量のデータを読み取りますが、これには時間がかかり、メモリを使用します。さらに悪いことに、各プロセスが独自のコピーをロードするため、さらに時間がかかり、メモリが 20 倍消費されます。データは静的で変更されません。データを一度ロードして、20 個のワーカーすべてで共有したいと思います。
この設定を使用するとpreload_app
、1つのスレッドでのみロードされ、最初は1倍のメモリしか使用しませんが、リクエストが届き始めると20倍に膨れ上がるようです。データへの高速ランダムアクセスが必要なので、国際PC。
Gunicorn プロセス間で静的データを共有する方法はありますか?
ベストアンサー1
メモリマップファイルを使用すると、プロセス間でページを共有できます。
メモリ消費統計は通常誤解を招きやすく、役に立たないことに注意してください。通常は、vmstat の出力を検討して、スワップが大量にあるかどうかを確認する方がよいでしょう。