3

我正在运行Nginx 1.0.6,Passenger 3.0.9,Rails 3.1.1,Ruby 1.9。在我的生产环境我看到在我nginx_error.log文件以下间歇警告:Passenger&Nginx => 502生产中的坏门错误

2011/11/22十四点44分四十秒[警告] 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”, 上游:乘客:UNIX:/ passenger_helper_server:”主持人: “www.memverse.com”,引用: “http://www.memverse.com/quick_add/7352

和,较不频繁地,下面的错误这导致502错误网关:

2011年11月21日15时35分二十○秒[错误] 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; 
     } 
    } 
} 

我已经难倒这个问题了几天,现在所以任何帮助将非常感激。说实话,如果任何人都可以解释这两个警告/错误甚至意味着它会有所帮助。

+0

你有没有想过这个? – AnApprentice

回答

6

第一个问题(“上游响应被缓冲到一个临时文件”)是由一些网页与大量内容引起的,通过增加缓冲器大小解决如下:

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

第二个问题('上游过早关闭连接,同时读取来自上游的响应头')通过增加服务器上的内存并将Passenger切换到保守的spawn模式来解决。 (它似乎与使用试图运行后台作业的老红宝石密切相关。)