セカンダリhttpコールの作成にセロリを使用しています。サードパーティのHTTP API呼び出しを呼び出すタスクは100以上もあります。いくつかのタスクはAPIを一括して呼び出します。たとえば、朝の午前4時に50万件のリクエストが発生します。また、1秒間にほぼ1回または2回要求を受け取るAPI呼び出しの連続ストリームもあります。セカンダリHTTPコール用セロリの最適化
APIコールの応答時間の大部分は500〜800ミリ秒です。
私たちはセロリで非常に遅い送達速度を見ています。上記のタスクのほとんどでは、最大配信レートは約100/s(最大)からほぼ1/s(最小)です。私はこれが非常に貧しく、何かが間違っていると信じていますが、私はそれが何であるか把握できません。
3台のサーバーのクラスターで開始し、7台のサーバーのクラスターを段階的に作成しましたが、改善はありませんでした。我々は、オートスケールから固定された10,20,50,100人の作業者まで、さまざまな並行性の設定を試みました。結果のバックエンドはなく、ブローカーはRabbitMQです。
私たちのタスク実行時間は非常に短く、たいていは1秒未満ですので、プリフェッチカウントをさまざまな値に無制限にしようとしました。
--time-limit=1800 --maxtasksperchild=1000 -Ofair -c 64 --config=celeryconfig_production
サーバ64 G RAM、CentOSに6.6です。
あなたは何が間違っているのか、それを解決する方法の指針を教えていただけますか?
geventsと一緒に行くべきですか?私はそれが何であるかほとんど考えていませんが。
RabbitMQのキューはどのくらい充満していますか? RabbitMQは、キューが空の場合に最も高速です。 RabbitMQマシンのCPU使用率を監視できます。 CPU使用率が高い場合は、RabbitMQが大規模なキューサイズに対応するために多大な労力を費やしている可能性があります。 – LearnerEarner
あなたはこれに注意を払ったが、サードパーティのサーバが負荷のかかった状態で動作しているかどうかチェックしたことがありますか?同時リクエスト数が多い場合でも500〜800msで応答しますか? – LearnerEarner
http://www.rabbitmq.com/blog/2012/05/11/some-queuing-theory-throughput-latency-and-bandwidth/ – LearnerEarner