nginx加载页面很慢

nic*_*_v1 4 performance nginx

我刚刚在一个新环境中部署了 nginx,其配置与我之前使用的配置相同,但我看到了一些非常奇怪的行为。

Nginx 被配置为 Solr 的反向代理,当我尝试通过 nginx 访问 Solr UI 时,大约需要一分钟才能加载。我检查了 Chrome 开发工具,看起来浏览器可以立即下载 6 个文件,但是所有其他请求都处于待处理状态。然后它只在那里停留一分钟,然后一切都被下载并加载页面。之后,浏览速度很快;我认为这主要是因为本地浏览器缓存。

这是配置:

worker_processes  10;
error_log  /directory/path/error.log debug;
pid        /directory/path/nginx1.pid;

events {
     worker_connections  1024;
}

http {
 access_log  /directory/path/access.log;
 proxy_temp_path /directory/path/ 1 2;

upstream backend-test-old {
    server 1.1.1.1:7071;
    server 2.2.2.2:7071;
}

server {
    listen       7071;
    server_name  localhost;
    access_log /directory/path/access_7071.log;
    proxy_ignore_headers "Set-Cookie";
    proxy_hide_header "Set-Cookie";
    location /solr {
        proxy_pass http://backend-test-old;
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我也在日志中看到了很多这些:

2015/07/10 11:06:38 [warn] 31503#0: *120 an upstream response is buffered to a temporary file /dir/path/7/00/0000000007 while reading upstream, client: 111.111.111.111
2015/07/10 11:06:36 [info] 31503#0: *96 client prematurely closed connection, so upstream connection is closed too while connecting to upstream, 
2015/07/10 11:06:36 [error] 31503#0: *101 upstream timed out (110: Connection timed out) while connecting to upstream, client:
Run Code Online (Sandbox Code Playgroud)

现在这在我的开发服务器上不是问题,它运行相同的配置并且应该配置相对相似,所以它可能与系统相关,但我不确定。

任何帮助将非常感激。

谢谢

编辑:

看起来问题是我通过 IP 与主机名指向后端主机。我不确定为什么这是一个问题。我已经实现了这个配置:

worker_processes  10;
error_log  /path/error.log debug;
pid        /path/nginx1.pid;

events {
    worker_connections  1024;
}

http {
     access_log  /path/access.log;
     proxy_temp_path /pathproxy_temp/ 1 2;

    upstream backend-test-old {
        server hostname-for-1.1.1.1:7071;
        server hostname-for-2.2.2.2:7071;
    }

    upstream backend-test-old2 {
        server 1.1.1.1:7071;
        server 2.2.2.2:7071;
    }

    server {
        listen       7071;
        server_name  localhost;
        access_log /path/access_7071.log;
        proxy_ignore_headers "Set-Cookie";
        proxy_hide_header "Set-Cookie";
        location /solr {
                proxy_pass http://backend-test-old;
        }
    }

        server {
        listen       7072;
        server_name  localhost;
        access_log /path/access_7072.log;
        proxy_ignore_headers "Set-Cookie";
        proxy_hide_header "Set-Cookie";
        location /solr {
                proxy_pass http://backend-test-old2;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我通过 7071 它工作正常,但是如果我通过 7072 出现上述性能问题。有没有人有任何想法?

Ana*_*oly 11

缓冲会导致出现问题,将其完全关闭:

proxy_buffering off;
Run Code Online (Sandbox Code Playgroud)

详情请参阅官方文档

当缓冲被禁用时,响应会在收到时立即同步传递给客户端。nginx 不会尝试从代理服务器读取整个响应。nginx 一次可以从服务器接收的最大数据大小由 proxy_buffer_size 指令设置。