2013-02-12 32 views
3

应用细节:
的Rails 3.1.0
红宝石1.9.2
麒麟4.2.0
resque 1.20.0
的nginx/1.0.14
redis的2.4。 8502错误的nginx + Ruby on Rails的应用

我使用active_admin宝石,对所有URL的响应得到200,
但只有一个网址给生产502错误。

耙路线:

admin_links GET  /admin/links(.:format)           {:action=>"index", :controller=>"admin/links"} 

及其对本地(开发)工作。

本地主机登录:响应码200

Started GET "/admin/links" for 127.0.0.1 at 2013-02-12 11:05:21 +0530 
     Processing by Admin::LinksController#index as */* 
     Parameters: {"link"=>{}} 
    Geokit is using the domain: localhost 
     AdminUser Load (0.2ms) SELECT `admin_users`.* FROM `admin_users` WHERE `admin_users`.`id` = 3 LIMIT 1 
     (0.1ms) SELECT 1 FROM `links` LIMIT 1 OFFSET 0 
     (0.1ms) SELECT COUNT(*) FROM `links` 
     (0.2ms) SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM `links` LIMIT 10 OFFSET 0) subquery_for_count 
     CACHE (0.0ms) SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM `links` LIMIT 10 OFFSET 0) subquery_for_count 
     Link Load (0.6ms) SELECT `links`.* FROM `links` ORDER BY `links`.`id` desc LIMIT 10 OFFSET 0 
     Link Load (6677.2ms) SELECT `links`.* FROM `links` 
    Rendered /usr/local/rvm/gems/ruby-1.9.2-head/gems/activeadmin-0.4.2/app/views/active_admin/resource/index.html.arb (14919.0ms) 
    Completed 200 OK in 15663ms (Views: 8835.0ms | ActiveRecord: 6682.8ms | Solr: 0.0ms) 

生产日志:502响应

Started GET "/admin/links" for 103.9.12.66 at 2013-02-12 05:25:37 +0000 
     Processing by Admin::LinksController#index as */* 
     Parameters: {"link"=>{}} 

Nginx的错误日志

2013/02/12 07:36:16 [error] 32401#0: *1948 upstream prematurely closed connection while reading response header from upstream 

不知道发生了什么,可能有些好友的帮助我出去了。

+0

你能发布你的'rake routes'和你看到的确切错误吗? – 2013-02-12 04:23:57

+0

增加了* log *和'rake routes' – 2013-02-12 05:40:56

+0

Unicorn和Nginx配置请求 – Anatoly 2013-02-12 20:19:49

回答

1

您有超时问题。

应对它

HTTP/1.1 502错误的网关

指示,即nginx的有交谈其上游配置的问题。 http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#502

2013年2月12日7时36分16秒[错误] 32401#0:* 1948上游过早关闭的连接,同时从上游

读取响应头

Nginx的错误日志告诉你Nginx的是实际上能够连接到已配置的上游,但该流程在(完全)收到答案之前关闭了连接。

开发环境:

在15663ms

完成200 OK显然,你需要15秒左右产生在开发机器上的响应。

相反proxy_connect_timeout,此超时会赶上你置身在它的连接池,但不超出 任何回应你的服务器 。请注意,尽管不要将其设置得太低,因为 您的代理服务器可能需要较长时间来响应 目的的请求(例如,当为您提供报告页面时需要一些时间来计算 )。尽管您可以根据 的位置设置不同的设置,但您可以通过 报告页面的位置获得更高的proxy_read_timeout。

http://wiki.nginx.org/HttpProxyModule#proxy_read_timeout

在nginx的侧proxy_read_timeout是在60秒的默认值,所以这是安全

我不知道红宝石(on Rails的)是如何工作的,检查错误日志 - 在超时发生在你的堆栈的那部分

+0

你可以请尝试解决这个问题http://stackoverflow.com/questions/27797234/display-has-to-many-association-activeadmin-rails-not-working-in-分期,但是,WOR – inquisitive 2015-01-06 12:20:17