ruby-on-rails - Nginx 背后的瘦子 "no live upstreams while connecting to upstream"

标签 ruby-on-rails nginx thin

我可能在 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/

相关文章:

jquery - 使用 jQuery 在 Rails 中实现不显眼的动态表单字段

ruby-on-rails - 如何从我的 Rails 应用程序中删除图标

ruby-on-rails - 使用 ActiveSupport::Concern 的 Rails mixin 不起作用

Docker 映射端口并暴露给特定主机

ruby - 异步运行 Sinatra 服务器和子进程

ruby-on-rails-3 - Heroku、Thin 和介于两者之间的一切

ruby-on-rails - 在 Ruby 服务器上解密 Webpush 负载

Bluemix 和 nginx 配置中的 SSL

php - 在 cookie 中为我的每个未登录用户提供唯一的 session ID

ruby-on-rails - https 仅适用于使用瘦服务器 (ssl) 的本地主机