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 gem, за всички URL получаващи отговор 200,
но само един URL дава грешка 502 при производство.

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

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

И работи върху местно (развитие).

log на локален хост: код на отговор 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 е имал проблем да разговаря с конфигурирания си upstream. http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#502

2013/02/12 07:36:16 [грешка] 32401#0: *1948 нагоре по веригата преждевременно затворена връзка, докато чете заглавката на отговора от нагоре

Регистърът за грешки на Nginx ви казва, че Nginx действително е успял да се свърже с конфигурирания upstream, но процесът затвори връзката, преди отговорът да бъде (напълно) получен.

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

Завършени 200 OK за 15663ms

Очевидно ви трябват около 15 секунди, за да генерирате отговор на вашата машина за разработка.

За разлика от proxy_connect_timeout, това изчакване ще улови сървър, който ви поставя в своя пул за връзки, но не ви отговаря с нищо извън това. Внимавайте обаче да не зададете това твърде ниско, тъй като вашият прокси сървър може да отнеме повече време, за да отговори на заявки нарочно (напр. когато ви сервира страница с отчет, която отнема известно време за изчисляване). Можете обаче да имате различна настройка за всяко местоположение, което ви позволява да имате по-висок proxy_read_timeout за местоположението на страницата с отчета.

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

От страна на nginx proxy_read_timeout е по подразбиране от 60 секунди, така че е безопасно

Нямам представа как работи ruby ​​(on rails), проверете регистъра на грешките - времето за изчакване се случва в тази част от вашия стек

person Michel Feldheim    schedule 13.12.2013
comment
можете ли да опитате решение на този проблем stackoverflow.com/questions/27797234/ - person inquisitive; 06.01.2015