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模式來解決。 (它似乎與使用試圖運行後臺作業的老紅寶石密切相關。)