客运Nginx => 502生产中的网关错误 [英] Passenger & Nginx => 502 Bad Gateway Errors in Production

查看:90
本文介绍了客运Nginx => 502生产中的网关错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am running Nginx 1.0.6, Passenger 3.0.9, Rails 3.1.1, Ruby 1.9. In my production environment I am seeing the following intermittent warnings in my nginx_error.log file:

2011/11/22 14:44:40 [警告] 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 "

2011/11/22 14:44:40 [warn] 23288#0: *474 an upstream response is buffered to a temporary file /opt/nginx/proxy_temp/2/00/0000000002 while reading upstream, client: 69.172.88.178, server: www.memverse.com, request: "GET /show_all_my_verses HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "www.memverse.com", referrer: "http://www.memverse.com/quick_add/7352"

以及以下不常见的错误,这些错误导致502 Bad Gateway:

and, less frequently, the following error which leads to a 502 Bad Gateway:

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"

2011/11/21 15:35:20 [error] 2118#0: *60762 upstream prematurely closed connection while reading response header from upstream, client: 74.125.44.84, server: www.memverse.com, request: "GET /blogs/feed/9 HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "www.memverse.com"

我已经浏览了Passenger和Nginx文档,并调整了我的nginx.conf文件中的几乎所有设置,但无济于事.我希望有人至少可以指出我正确的方向.

I have crawled through both the Passenger and the Nginx documentation and have tweaked almost every setting in my nginx.conf file but all to no avail. I'm hoping that someone can at least point me in the right direction.

下面是我的nginx.conf:

Below is my 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;
         }
    }
}

我已经在这个问题上困扰了几天,所以任何帮助将不胜感激.老实说,如果有人能解释这两个警告/错误甚至意味着什么,那将是有帮助的.

I've been stumped on this problem for a few days now so any help will be much appreciated. To be honest, if anyone can explain what those two warnings/errors even mean it will be helpful.

推荐答案

第一个问题(上游响应被缓存到临时文件")是由一些内容丰富的页面引起的,并通过增加缓冲区大小来解决如下:

The first problem ("upstream response is buffered to a temporary file") was caused by some pages with a lot of content and was solved by increasing the buffer size as follows:

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

第二个问题(从上游读取响应标头时,上游过早关闭连接")通过增加服务器上的内存并将Passenger切换为保守的生成模式来解决. (这似乎与使用试图运行后台作业的旧Ruby gem密切相关.)

The second problem ('upstream prematurely closed connection while reading response header from upstream') was solved by increasing the memory on the server and switching Passenger to conservative spawn mode. (It appears to have been closely related to using an old Ruby gem which was trying to run background jobs.)

这篇关于客运Nginx => 502生产中的网关错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆