3

ここではCelery初心者ですが、CeleryがRedisにあまりにも多くのものを入れているという構成の問題があると思います

私の目標は、可能であれば、Redis が使用しているメモリの量を削減または最適化することです。

セロリのジョブが「たくさん」実行される、かなり大きなDjangoプロダクションがあります。私のsettings.pyには

BROKER_BACKEND = "redis"

Redisからtop -p13907大量のメモリを使用しています(ボックスでは、Celeryのみが使用しています):

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
13907 redis     20   0 10.5g 3.3g  532 S    0 42.8 109:38.94 redis-server  

このCELERY_TASK_RESULT_EXPIRES設定を見つけました。これは、設定ファイルに追加する必要があるようです。

デフォルトでは、ドキュメントから、1 日 (86400 秒) に設定されているように見えます。

これは私が変えたいものですか?それとも、もっと調べるべき設定がありますか?私が確信していないもう1つのことは、追加する場合、「安全な」秒数を設定するにはどうすればよいですか?

4

1 に答える 1

0

セロリの呼び出し元が結果をクリーンアップするのを忘れている可能性があり、これらの結果は有効期限が切れるまでメッセージキューサーバーに保存されると思います。セロリでは、呼び出す必要があります

r.get()

結果を取得してメッセージキューで消去します。この関数を呼び出さずに結果のみにアクセスする場合:

r.result

結果はメッセージ キュー サーバーによって引き続き保持され、メモリを大量に消費します。

于 2014-03-10T02:09:19.117 に答える