Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 乘客及;Nginx=>;502生产中的网关错误_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1_Nginx_Passenger - Fatal编程技术网

Ruby on rails 乘客及;Nginx=>;502生产中的网关错误

Ruby on rails 乘客及;Nginx=>;502生产中的网关错误,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,nginx,passenger,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Nginx,Passenger,我运行的是Nginx 1.0.6、Passenger 3.0.9、Rails 3.1.1、Ruby 1.9。在我的生产环境中,我在nginx_error.log文件中看到以下间歇性警告: 2011/11/22 14:44:40[警告]23288#0:*474上游响应是 缓冲到临时文件/opt/nginx/proxy_temp/2/00/0000000002 读取上游时,客户端:69.172.88.178,服务器: www.memverse.com,请求:“获取/显示所有我的诗篇HTTP/1.1”

我运行的是Nginx 1.0.6、Passenger 3.0.9、Rails 3.1.1、Ruby 1.9。在我的生产环境中,我在nginx_error.log文件中看到以下间歇性警告:

2011/11/22 14:44:40[警告]23288#0:*474上游响应是 缓冲到临时文件/opt/nginx/proxy_temp/2/00/0000000002 读取上游时,客户端:69.172.88.178,服务器: www.memverse.com,请求:“获取/显示所有我的诗篇HTTP/1.1”, 上游:“乘客:unix:/passenger\u helper\u服务器:”,主机: “www.memverse.com”,推荐人:

并且,导致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\u helper\u 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;
         }
    }
}
我已经在这个问题上被难倒了几天了,所以任何帮助都将不胜感激。老实说,如果有人能解释这两个警告/错误的含义,这将是有帮助的。

第一个问题(“上游响应缓冲到临时文件”)是由一些包含大量内容的页面引起的,通过增加缓冲区大小来解决,如下所示:

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

通过增加服务器上的内存并将乘客切换到保守的繁殖模式,解决了第二个问题(“上游在从上游读取响应头时过早关闭连接”)。(这似乎与使用一个旧的Ruby gem试图运行后台作业密切相关。)

对我来说,帮助丑陋黑客在备份服务器的同一上游使用nginx retry 502

upstream backend {
    server a.example.net;
    server a.example.net backup;
}

server {
    listen   80;
    server_name www.example.net;

    proxy_next_upstream error timeout http_502;

    location / {
        proxy_pass http://backend;
        proxy_redirect      off;
        proxy_set_header    Host              $host;
        proxy_set_header    X-Real-IP         $remote_addr;
        proxy_set_header    X-Forwarded-for   $remote_addr;
    }
}

你有没有想过?