我可能在 50-100 个请求中就有一个遇到此错误。我在 nginx 后面运行 10 个 Thin 实例,我认为我的负载不够高,无法最大化所有 10 个实例的使用量..并且我希望 nginx 会等待,即使所有实例都很忙(也许不是??) 。以前有其他人见过这个吗?我正在尝试找出一种调试它的好方法。
这是我的设置: Rackspace 云服务器 2GB 实例上的 CentOS 5.5 nginx 0.7.67 薄1.2.7 rails 3RC ruby 1.9.2rc2
Nginx 和 10 个 Thin 实例在同一服务器上运行。
最佳答案
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,我需要重定向到另一个 Controller ,所以可缓存? def 检查这一点并告诉caches_action 在这种特殊情况下不要缓存。
关于ruby-on-rails - Nginx 背后的瘦子 "no live upstreams while connecting to upstream",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3528025/