2

我在 50-100 个请求中可能有一个收到此错误。我在 nginx 后面运行 10 个瘦实例,我认为我的负载不足以使所有 10 个实例的使用量最大化。我希望即使所有实例都忙,nginx 也会等待(也许不是??) . 有没有其他人见过这个?我正在尝试找出调试它的好方法。

这是我的设置: CentOS 5.5 on Rackspace 云服务器 2GB 实例 nginx 0.7.67 Thin 1.2.7 Rails 3RC Ruby 1.9.2rc2

Nginx 和 10 个 Thin 实例在同一台服务器上运行。

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,我需要重定向到另一个控制器,所以可缓存?def 检查这个并告诉 caches_action 在这种特殊情况下不要缓存。

于 2010-08-20T14:30:25.543 回答