3

数日前、私たちのサイトでトラフィックが急増しました。負荷を処理するためにスケールアップしている間に、単一のサーバーが限界に達し、リクエストがタイムアウトし始めました。その間、いくつかのリクエストによってレコードが作成されていました。問題は次のモデルに由来します。

class List < ActiveRecord::Base
  before_save :set_published_at
  def set_published_at
    if published? && published_changed?
      self.published_at = Time.now
    end
  end
end

何らかの理由で、この時期に公開された一部のリストは、published=true ですが、published_at=nil でした。

このモデルには他にも多数のコールバックと 1 つのオブザーバーがありますが、それらのどれも published_at 属性には影響しません。これは、5 分のウィンドウに集中した 5 つのレコードで発生しました。

published_at 属性が null であり、モデルがまだ published=true で保存されているのはなぜですか?

4

1 に答える 1

0

おそらく何らかの理由で、あなたが重い負荷をかけられたときにpublished? && published_changed?評価されました。false

于 2012-12-13T01:33:19.150 に答える