移行とレーキタスクは、基本的に約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