2016-11-02 1 views
1

Je rencontre un problème avec mon installation NGINX + Passenger + Rails. Une demande prend une éternité à s'exécuter et n'est pas annulée. Je ne suis pas sûr quelle est la raison, je n'ai pas d'erreurs dans mon fichier error.log. Étonnamment, si je passe à Puma en tant que serveur Web, tout fonctionne correctement.Nginx + Passenger + Rails HTTP 499 dans les journaux après un long fonctionnement

Le code qui provoque le problème dans mon application est marquée par un commentaire:

def build_redirect_url 
    raise ArgumentError.new("not implemented for provider") if checkout_settings[:package_provider] != "expedia_click_and_mix" 
    opts = { 
     :hotels   => [hotel], 
     :from_date   => from_date, 
     :to_date   => to_date, 
     :from_airport_code => from_airport.code, 
     :to_airport_code => to_airport.code, 
     :number_of_adults => number_of_adults.to_i, 
     :cache    => false, 
     :piid    => checkout_settings[:unique_identifier] 
    } 
    # the below line never finishes. takes like 30 seconds 
    searcher = PackageKraken::ListKraken::HotelGrouper.new(opts) 
    details_url = searcher.search.first.details_url 
    filter_id = search_filter_setting.id 
    build_filter_redirect_url(filter_id, "expedia_click_and_mix", hotel.id, details_url) 
    end 

Nous ne faisons jamais défiler devant le searcher =. Il semble que le processus meurt avant. Donc, ce que j'ai fait est de vérifier mon fichier journal nginx pour les problèmes, mais je n'ai que cela. Cependant, il semble avoir un code d'erreur 499.

C'est ce que j'ai dans mon fichier journal:

79.236.111.56 - - [02/Nov/2016:14:28:30 +0100] "GET /packages/package_redirect_url?checkout_settings=%7B%22package_identifier%22%3A%22v5-8a5c783c4b614f2d8018117d4c7fa1f5-8-8-1%22 
%2C%22package_provider%22%3A%22expedia_click_and_mix%22%7D&from_airport_id=b2ccff00-2186-482e-a74f-6892c8fd7f77&from_date=2016-11-09+01%3A00%3A00+%2B0100&hotel_id=14245&number_of 
_adults=1&to_airport_id=aabc5cd4-36e6-45c9-b027-e0ed4b209414&to_date=2016-11-15+01%3A00%3A00+%2B0100 HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWeb 
Kit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36" 

Voici ma config de site pour le site:

server { 
    listen 80; 
    server_name tripl.de www.tripl.de; 
    return 301 https://$host$request_uri; 
} 

server { 
    listen 443; 
    server_name tripl.de; 
    ssl on; 
    ssl_certificate /etc/nginx/ssl/wildcard-cert.crt; 
    ssl_certificate_key /etc/nginx/ssl/wildcard-cert.key; 
    return 301 https://www.tripl.de$request_uri; 
} 

# Production server 
server { 
    proxy_connect_timeout  600; 
    proxy_send_timeout   600; 
    proxy_read_timeout   600; 
    send_timeout    600; 
    listen 443; 
    server_name www.tripl.de; 
    ssl on; 
    ssl_certificate /etc/nginx/ssl/wildcard-cert.crt; 
    ssl_certificate_key /etc/nginx/ssl/wildcard-cert.key; 

    client_max_body_size 4G; 
    keepalive_timeout 60; 
    passenger_enabled on; 
    root   /home/deployer/app_production/current/public; 
    proxy_set_header  X-Forwarded-Proto https; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
location/{ 
    if ($request_method = 'OPTIONS') { 
     add_header 'Access-Control-Allow-Origin' '*'; 
     add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
     # 
     # Custom headers and headers various browsers *should* be OK with but aren't 
     # 
     add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
     # 
     # Tell client that this pre-flight info is valid for 20 days 
     # 
     add_header 'Access-Control-Max-Age' 1728000; 
     add_header 'Content-Type' 'text/plain charset=UTF-8'; 
     add_header 'Content-Length' 0; 
     return 204; 
    } 
    if ($request_method = 'POST') { 
     add_header 'Access-Control-Allow-Origin' '*'; 
     add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
     add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
    } 
    if ($request_method = 'GET') { 
     add_header 'Access-Control-Allow-Origin' '*'; 
     add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
     add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
    } 
} 

} 

Et voici ce que j'ai dans mon passenger.conf:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; 
passenger_ruby /home/deployer/.rbenv/shims/ruby; 

Des idées ce qui pourrait être faux?

Merci

Répondre

1

Le problème me utilisait Celluloid dans certains domaines. Apparemment, le passager n'aime pas engendrer de nouveaux fils.