Passenger & Nginx => 502 плохих шлюза в производстве - PullRequest
3 голосов
/ 23 ноября 2011

Я использую Nginx 1.0.6, Passenger 3.0.9, Rails 3.1.1, Ruby 1.9.В моей производственной среде я вижу следующие прерывистые предупреждения в моем файле nginx_error.log:

2011/11/22 14:44:40 [warn] 23288 # 0: * 474 ответ восходящего потока:буферизируется во временный файл / opt / nginx / proxy_temp / 2/00/0000000002 при чтении в восходящем направлении, клиент: 69.172.88.178, сервер: www.memverse.com, запрос: «GET / show_all_my_verses HTTP / 1.1», восходящий поток: «passenger: unix: / passenger_helper_server: ", хост:" www.memverse.com ", реферер:" http://www.memverse.com/quick_add/7352"

и, реже, следующая ошибка, которая приводит к неправильному шлюзу 502:

2011/11/21 15:35:20 [ошибка] 2118 # 0: * 60762 восходящее преждевременно закрытое соединение при чтении заголовка ответа из восходящего потока, клиент: 74.125.44.84, сервер: www.memverse.com, запрос: "GET / blogs / feed / 9 HTTP / 1.1", восходящий поток: "passenger: unix: / passenger_helper_server:", хост: "www.memverse.com"

Я просканировалчерез документацию по Passenger и Nginx и почти каждыйв моем файле nginx.conf, но все безрезультатно.Я надеюсь, что кто-то может, по крайней мере, указать мне правильное направление.

Ниже мой nginx.conf:

user  root;
worker_processes  4;

error_log  logs/error.log  error; # debug | info | notice | warn | error | crit
pid        logs/nginx.pid;

events {
    worker_connections  1024; # max_clients = worker_processes * worker_connections
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;

    keepalive_timeout  65;

    # Configure Passenger
    passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.9;
    passenger_ruby /usr/local/bin/ruby;

    passenger_log_level 1;
    passenger_debug_log_file /home/avitus/logs/passenger.log;

    rails_framework_spawner_idle_time 0;
    rails_app_spawner_idle_time 0;

    passenger_pool_idle_time 0;
    passenger_use_global_queue on;
    passenger_max_pool_size 15;

    server {
       listen 80;
       server_name www.pariday.com pariday.com;
       root /home/avitus/pariday.com/current/public;
       access_log /home/avitus/pariday.com/current/log/nginx_access.log main;
       error_log /home/avitus/pariday.com/current/log/nginx_error.log info;
       passenger_enabled on;
    }

    server {
        listen 80;
        server_name www.assetcorrelation.com assetcorrelation.com;
        root /home/avitus/assetcorrelation.com/current/public;
        access_log /home/avitus/assetcorrelation.com/current/log/nginx_access.log main;
        error_log /home/avitus/assetcorrelation.com/current/log/nginx_error.log info;
        passenger_enabled on;
    }

    server {
         listen       80;
         server_name  localhost;

         location / {
             root   html;
             index  index.html index.htm;
         }
    }
}

Я был озадачен этой проблемой в течение нескольких днейТеперь любая помощь будет высоко ценится.Если честно, если кто-нибудь сможет объяснить, что означают эти два предупреждения / ошибки, это будет полезно.

1 Ответ

6 голосов
/ 19 июня 2012

Первая проблема («восходящий ответ буферизован во временный файл») была вызвана тем, что на некоторых страницах было много содержимого, и была решена путем увеличения размера буфера следующим образом:

proxy_buffers 8 16k;
proxy_buffer_size 32k;
passenger_buffers 8 16k;
passenger_buffer_size 32k;

Вторая проблема («преждевременно закрытое соединение в восходящем направлении при чтении заголовка ответа из восходящего потока») была решена путем увеличения памяти на сервере и переключения Пассажира в консервативный режим вызова. (Похоже, он был тесно связан с использованием старого драгоценного камня Ruby, который пытался запускать фоновые задания.)

...