502错误nginx + ruby​​ on rails应用程序

申请详情:
Rails 3.1.0
Ruby 1.9.2
独angular兽4.2.0
resque 1.20.0
nginx的/ 1.0.14
redis 2.4.8

我正在使用active_admin gem ,所有URL的响应200,
但只有一个URL在生产上给出了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 

不知道发生了什么,有人可以帮我一把。

你有一个超时问题。

处理它

HTTP / 1.1 502错误的网关

表明,nginx与其配置的上游交谈时有问题。 http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#502

2013/02/12 07:36:16 [error] 32401#0:* 1948上游过早关闭连接,同时从上游读取响应头

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

你的开发环境:

在15663ms完成200 OK

显然你需要大约15秒来在你的开发机器上产生响应。

与proxy_connect_timeout相比,这个超时会捕获一个服务器,将您置于连接池中,但是除此以外不会对您做出任何响应。 请注意,尽管不要将其设置得太低,因为您的代理服务器可能需要较长时间才能有意识地响应请求(例如,在为您提供需要一些时间计算的报告页面时)。 尽管您可以为每个位置设置不同的设置,但您可以为报表页面的位置提供更高的proxy_read_timeout。

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

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

我不知道如何ruby(在rails上)工作,检查错误日志 – 超时发生在你的堆栈的一部分