502 ошибка nginx + приложение ruby ​​on rails

Сведения о приложении:
Rails 3.1.0
Ruby 1.9.2
unicorn 4.2.0
resque 1.20.0
nginx/1.0.14
redis 2.4.8

Я использую гем Active_admin для всех URL-адресов, получающих ответ 200,
но только один URL-адрес выдает ошибку 502 при производстве.

рейк маршруты:

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

И его работа над местным (развитие).

Журнал localhost: код ответа 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

не знаю, что происходит, может кто-нибудь приятель помочь мне.


person Raghvendra Parashar    schedule 12.02.2013    source источник
comment
Не могли бы вы опубликовать свой rake routes и точную ошибку, которую вы видите?   -  person Gaurav Agarwal    schedule 12.02.2013
comment
добавлены журнал и rake routes   -  person Raghvendra Parashar    schedule 12.02.2013
comment
Пожалуйста, настройте Unicorn и Nginx   -  person Anatoly    schedule 13.02.2013
comment
В этом случае восходящая ошибка означает, что ваши процессы Unicorn не работают должным образом. Можете ли вы вставить свой конфиг единорога? Также можете ли вы наблюдать за выводом команды top, чтобы увидеть, есть ли скачки памяти в приложении?   -  person Anirudhan J    schedule 07.12.2013
comment
Вы нашли решение этой проблемы?   -  person inquisitive    schedule 06.01.2015
comment
@rkp Пожалуйста, помогите.....   -  person inquisitive    schedule 06.01.2015
comment
@rkp: Не могли бы вы попробовать решение этой проблемы stackoverflow.com/questions/27797234/   -  person inquisitive    schedule 06.01.2015


Ответы (1)


У вас проблема с тайм-аутом.

Что делать

HTTP/1.1 502 Плохой шлюз

Указывает, что у nginx возникла проблема при общении с настроенным восходящим потоком. http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#502

12.02.2013, 07:36:16 [ошибка] 32401#0: *1948 вышестоящее соединение преждевременно закрыто при чтении заголовка ответа от вышестоящего

Журнал ошибок Nginx сообщает, что Nginx действительно смог подключиться к настроенному восходящему потоку, но процесс закрыл соединение до того, как ответ был (полностью) получен.

Ваша среда разработки:

Выполнено 200 OK за 15663 мс

По-видимому, вам нужно около 15 секунд, чтобы сгенерировать ответ на вашем компьютере для разработки.

В отличие от proxy_connect_timeout, этот тайм-аут перехватывает сервер, который помещает вас в свой пул соединений, но не отвечает вам ничем, кроме этого. Будьте осторожны, не устанавливайте слишком низкое значение, так как вашему прокси-серверу может потребоваться больше времени для ответа на запросы намеренно (например, при предоставлении вам страницы отчета, для вычисления которой требуется некоторое время). Однако вы можете иметь разные настройки для каждого местоположения, что позволяет вам иметь более высокое значение proxy_read_timeout для местоположения страницы отчета.

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

На стороне nginx значение proxy_read_timeout по умолчанию равно 60 секундам, так что это безопасно.

Я понятия не имею, как работает ruby ​​(на рельсах), проверьте журнал ошибок - тайм-аут происходит в этой части вашего стека

person Michel Feldheim    schedule 13.12.2013
comment
не могли бы вы попробовать решить эту проблему " title="display имеет много ассоциативных рельсов activeadmin, которые не работают в постановке, но работают"> stackoverflow.com/questions/27797234/ - person inquisitive; 06.01.2015