[解決済み] Celeryの並行処理、ワーカー、オートスケールの違いについて
2023-07-28 14:20:49
質問
私の
/etc/defaults/celeryd
の設定ファイルで、私は
CELERYD_NODES="agent1 agent2 agent3 agent4 agent5 agent6 agent7 agent8"
CELERYD_OPTS="--autoscale=10,3 --concurrency=5"
デーモンが8つのcelery workerを生成することは理解できたのですが、どのように
autoscale
と
concurrency
が一緒になっています。concurrencyはワーカーが使えるスレッドの最大数を指定するもので、autoscaleは必要に応じて子ワーカーをスケールアップ、スケールダウンさせるものだと思っていました。
タスクは大きなペイロード (約 20-50kB) を持ち、そのようなタスクは 2-3 万件ありますが、各タスクは 1 秒未満で実行されます。ブローカーがすべてのワーカーにタスクを配布し、ペイロードを複数回複製するため、メモリ使用量が急上昇しているのがわかります。
問題は設定にあり、ワーカー + 同時実行 + オートスケールの組み合わせは過剰だと思うので、これら 3 つのオプションが何を行うのか、もっと理解を深めたいと思います。
どのように解決すればいいのでしょうか?
ワーカーとワーカープロセスを区別して考えましょう。celery ワーカーを生成し、これがいくつかのプロセスを生成します (たとえば
--concurrency
と
--autoscale
で、デフォルトではマシンのコア数と同じ数のプロセスが生成されます)。ルーティングを行うのでなければ、特定のマシンで複数のワーカーを実行する意味はありません。
私は、デフォルトのプロセス数で、マシンあたり 1 つのワーカーだけを実行することを提案します。これは、ワーカー間のデータの重複を排除することで、メモリ使用量を削減します。
それでもメモリに問題がある場合は、データをストアに保存し、ワーカーには ID だけを渡します。
関連
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み] 並行処理と並列処理の違いは何ですか?
-
[解決済み] リストにおけるdel、remove、popの違いについて
-
[解決済み] リストとタプルの違いは何ですか?
-
[解決済み] 2つのリストの差を取得する
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenvなどの違いは何ですか?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複