0

移行とレーキタスクは、基本的に約10,000の新しいレコードが作成された後に停止することに気づきました。他の誰かがこの問題に気づきましたか?Herokuはスロットルを実行していますか?

移行/レイクタスクを細かく分割する以外にアドバイスはありますか?

これはHerokuの既知の問題ですか?

詳細:

  • Rails3.1.10アプリ
  • Heroku Cedar
  • コンソールへのロギングは無効になっていますが、「。」を出力します。書き込みごとに

考え:
最初は、ネットワーク上に出力されるSQLステートメントが多すぎて、接続が遅くなったり、そのような悪い魔法があったりすると思いました。しかし、ロギングを無効にしたので、何も変わりません。また、コードに関係なく発生します。何千ものタイプのレコードを作成すると、それに気づきます。

編集

Suggestionこのコードを呼び出すループでレコードを作成しています:

# in suggestable.rb
# Suggestable polymorphically represents objects which can be suggested

has_many :parent_suggestions, class_name: 'Suggestion', as: :suggestable, dependent: :destroy

# create Suggestion for this suggestable / suggestee
def suggest_to!(suggestee, conf=0)
  get_parent_suggestion_for(suggestee) || 
    parent_suggestions.create(suggestable: self, confidence: conf, suggestee: suggestee)
end
4

1 に答える 1

1

新しく作成された (およびインスタンス化された) 提案がすべて、それらを作成しているループ内のオブジェクトの関連付けにある場合、ガベージ コレクションは行われません。ルート オブジェクトを定期的に再読み込みして、参照を解放してみてください。

于 2013-02-17T07:37:08.850 に答える