11

Ubuntu 10.4 64ビットで実行されているcelerydプロセスは約300あり、アイドル状態ではすべてのプロセスに最大19mb RES、最大174mb VIRTが必要です。したがって、すべてのプロセスでアイドル状態のRAMは約6GBです。アクティブ状態の場合-プロセスには最大100mbのRESと最大300mbのVIRTが必要です

すべてのプロセスはminidom(xmlファイルは<500kb、単純な構造)とurllibを使用します。

質問は-RAMの消費をどのように減らすことができるか-少なくともアイドル状態のワーカーにとっては、おそらくいくつかのセロリまたはPythonオプションが役立つ可能性がありますか?どの部分がメモリの大部分を占めるかを判断する方法は?

UPD:それはフライト検索エージェントであり、1つのエージェンシー/日付に対して1人のワーカーです。10の代理店があり、1つのユーザー検索== 9の日付であるため、1つのユーザー検索ごとに10*9のエージェントがあります。

アイドル状態のワーカー(apacheのMaxSpareServersなど)を回避するために、オンデマンドでcelerydプロセスを開始することは可能ですか?

UPD2:エージェントのライフサイクルは-HTTPリクエストを送信し、応答を10〜20秒待ち、xmlを解析し(0.02秒未満かかります)、結果をMySQLに保存します

4

4 に答える 4

6

これを読む:

http://docs.celeryproject.org/en/latest/userguide/workers.html#concurrency

セロリドごとに1人の労働者がいるようです。それは間違っているようです。celerydごとに数十人の労働者が必要です。システムが非常にビジーで非常に遅くなるまで、ワーカーの数を増やし続けます(そしてcelerydの数を減らします)。

于 2010-12-03T17:09:35.013 に答える
2

S.ロットは正しいです。メイン インスタンスはメッセージを消費し、それらをワーカー プール プロセスに委任します。1 台のマシンで 300 個のプール プロセスを実行しても、おそらく意味がありません。4 または 5 に CPU コアの数を掛けてみてください。それぞれいくつかのプロセスで celeryd よりも多くを実行することで何かを得ることができますが、アプリケーションを実験する必要があります。

http://celeryq.org/docs/userguide/workers.html#concurrencyを参照してください

今後の 2.2 リリースでは、Eventlet プールのサポートに取り組んでいます。これは IO バウンド タスクの優れた代替手段になる可能性があり、最小限のメモリ オーバーヘッドで 1000 以上のスレッドを実行できますが、まだ実験段階であり、バグが修正されています。最終リリース。

http://groups.google.com/group/celery-users/browse_thread/thread/94fbeccd790e6c04を参照してください。

今後の 2.2 リリースでは、オンデマンドでプロセスを追加/削除する自動スケーリングもサポートされます。変更ログを参照してください: http://ask.github.com/celery/changelog.html#version-2-2-0 (この変更ログはまだ完全には書かれていません)

于 2010-12-03T19:48:18.993 に答える
1

ワーカーの自然数は、コアの数に近いです。CPUを集中的に使用するタスクがコア全体を効率的に使用できるように、ワーカーが存在します。ブローカーは、それらを処理するためのワーカーが手元にないリクエストがキューに入れられるようにするためにあります。キューの数は多くなる可能性がありますが、それはブローカーの数も多いという意味ではありません。単一のブローカーで十分です。または、後でワーカーとキューの高速な相互作用が有益であることが判明した場合は、マシンごとに1つのブローカーにキューを分割できます。

あなたの問題はそれとは無関係のようです。あなたのエージェンシーはメッセージキューAPIを提供していないと思います、そしてあなたはたくさんのリクエストを維持しなければなりません。その場合、twistedやnode.jsベースなど、いくつかの(多くないことに重点を置いた)イベントプロセスが必要です。

于 2010-12-03T21:21:45.347 に答える
1

自動スケーリングを使用します。これにより、各 celeryd インスタンスの下にあるワーカーの数を必要に応じて増減できます。http://docs.celeryproject.org/en/latest/userguide/workers.html#autoscaling

于 2013-09-20T16:16:56.807 に答える