2

おそらく 50 ~ 100 件のリクエストのうち 1 件でこのエラーが発生します。nginx の背後で 10 個のシン インスタンスを実行していますが、負荷が 10 個のインスタンスすべての使用量を最大にするほど高くないと思います..そして、すべてのインスタンスがビジー状態であっても、nginx が待機することを期待します (そうでない場合もあります??) . 他の誰かがこれを見たことがありますか?私はそれをデバッグする良い方法を見つけようとしています。

これが私のセットアップです: Rackspace Cloud Servers 上の CentOS 5.5 2GB インスタンス nginx 0.7.67 Thin 1.2.7 Rails 3RC Ruby 1.9.2rc2

Nginx と 10 個のシン インスタンスが同じサーバー上で実行されています。

4

1 に答える 1

4

caches_action とアクション内の redirect_to が原因でした。キャッシュへの書き込み (またはキャッシュからの読み取り) とリダイレクトが原因で、接続が途中で閉じられたようです。caches_action の if 条件を使用してリダイレクトが発生するかどうかを検出することで、この問題を回避できました。発生することを検出した場合は、x.cacheable? で false を返しました。

my_controller.rb

caches_action :show, :if => Proc.new { |x| x.cacheable? }

action_controller.rb

def cacheable?
  params[:id]>1000 ? true : false
end

基本的に、params[:id]<1000 の場合、redirect_to 別のコントローラーが必要だったので、キャッシュ可能ですか? def はこれをチェックし、この特定の状況ではキャッシュしないように caches_action に指示します。

于 2010-08-20T14:30:25.543 に答える