2013-02-12 12 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