nginx carregando a página muito lenta

4

Eu acabei de implantar o nginx em um novo ambiente com a mesma configuração que eu usei anteriormente e estou vendo um comportamento muito estranho.

O Nginx é configurado como um proxy reverso para o Solr, quando tento acessar a interface do usuário do Solr por meio do nginx, demora cerca de um minuto para carregar. Eu verifiquei as ferramentas do Chrome Dev e parece que o navegador pode baixar 6 arquivos logo de cara, no entanto, todas as outras solicitações estão em um status pendente. Então fica ali por exatamente um minuto e depois disso tudo é baixado e carrega a página. Depois disso, a navegação é rápida; Eu acho que isso é principalmente por causa do cache do navegador local.

Aqui está a configuração:

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;
    }
}
}

Também vejo muitos deles nos registros:

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:

Agora, isso não é um problema no meu servidor dev, que executa a mesma configuração e deve ser configurado de forma relativamente semelhante, então pode ser algo relacionado ao sistema, mas não tenho certeza.

Qualquer ajuda seria muito apreciada.

Obrigado

EDITAR:

Parece que o problema é que estou apontando para os hosts de backend por IP vs hostname. Não sei por que isso é um problema. Eu implementei esta configuração:

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;
        }
    }
}

Se eu passar por 7071, funciona bem, no entanto, se eu atingir 7072, o problema de desempenho descrito acima ocorrerá. Alguém tem alguma idéia?

    
por user2630270 10.07.2015 / 17:12

2 respostas

8

O buffer causa problemas, desligue-o completamente:

proxy_buffering off;

Veja os documentos oficiais para detalhes:

When buffering is disabled, the response is passed to a client synchronously, immediately as it is received. nginx will not try to read the whole response from the proxied server. The maximum size of the data that nginx can receive from the server at a time is set by the proxy_buffer_size directive.

    
por 12.07.2015 / 11:02
-1

Tente substituir o conteúdo proxy.conf pelos seguintes valores:

proxy_buffers           32 4m;
proxy_busy_buffers_size     25m;
proxy_buffer_size 512k;
proxy_ignore_headers "Cache-Control" "Expires";
proxy_max_temp_file_size 0;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size        1024m;
client_body_buffer_size     4m;
proxy_connect_timeout 300;
proxy_read_timeout 300;
proxy_send_timeout 300;
proxy_intercept_errors off;
    
por 04.11.2018 / 21:11