Nginx: Otimizando o tempo de resposta do servidor para um site HTTP em cache

6

Eu tenho um site com todas as páginas veiculadas pelo cache http do nginx e raramente invalidado ou expirado.

O tamanho médio total de download da página é de cerca de 2 MB Mas, apesar de ser um site estático sem lógica engraçada, minha resposta do servidor é de cerca de um segundo

Gravei$request_timedonginxechegouacercade400milissegundosdoservidor

ecadaarquivonamédiade20-30KB

400milissegundospareceserumabsurdo.

EstouportrásdoCloudflaree

sendfileon;tcp_nopushoff;tcp_nodelayon;keepalive_timeout300s;keepalive_requests10000;

Oquedevofazerparareduzirotempoderespostaparaointervalode150milissegundos?

Editar:primeirapartedomeutunning.

RealizeiquenãotinhaoSSLOSCPativado.Tweakedcodeto

#https://github.com/autopilotpattern/wordpress/issues/19ssl_session_cacheshared:SSL:50m;ssl_session_timeout1d;ssl_certificate/etc/letsencrypt/live/site.com/fullchain.pem;ssl_certificate_key/etc/letsencrypt/live/site.com/privkey.pem;ssl_trusted_certificate/etc/letsencrypt/live/site.com/chain.pem;sslon;ssl_protocolsTLSv1TLSv1.1TLSv1.2;ssl_ciphers'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';ssl_prefer_server_cipherson;ssl_staplingon;ssl_stapling_verifyon;

Vourelatarmelhorias.

Editar2:

EsteéoresultadodotestedapáginadaWebparaoacessodaconexão3GdaÍndiaaumservidordacostaoestedosEUA

    
por Quintin Par 23.10.2018 / 23:19

1 resposta

1

Eu não acho que você esteja preparado para a questão da otimização. Primeiro você precisa descobrir onde o tempo está indo.

Eu não acho que você está falando sobre o tempo para exibir no seu navegador, então, por enquanto, deixe o seu navegador fora dele. Use ferramentas leves de linha de comando como curl e ab para coletar suas informações de tempo. Usar essas ferramentas em sua área de trabalho ou em um servidor bem conectado diferente daquele que atende a esse site pode ser útil para descartar problemas com seu sistema, rede ou navegador local.

Execute alguns testes usando ab (vem com as ferramentas do apache) ou curve-os, executando-os no seu servidor, para que você esteja atrasando a rede e o cloudflare para fora da imagem. você precisará jogar com as opções para obter uma conexão com seu servidor http local, não para onde o DNS aponta e, ainda assim, usar o cabeçalho Host correto. Como está o seu atraso agora? Isso deve informar se o problema está no seu servidor da Web ou fora dele. Inclui as vantagens do seu cache nginx, mas não qualquer cache do cloudflare.

Se esse bit no seu servidor for rápido, você estará vendo o cloudflare e a rede. Caso contrário, continue procurando no seu servidor.

Além de observar quanto tempo a solicitação leva da perspectiva do cliente, você também pode modificar seu formato de log nginx para obter mais informações de tempo em seus registros. Eu normalmente uso algo como:

log_format  combined  '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$request_time" "$msec"';

Deixo esta configuração de registro permanentemente estabelecida para a maioria dos servidores com os quais trabalho, se as circunstâncias permitirem.

Se você ainda estiver vendo seu atraso registrado no campo $request_time em seus registros, top ou atop ou semelhante poderá ajudar a determinar se o tempo está sendo gasto no nginx ou se está aguardando algum outro processo .

Quando você descobre qual tipo de processo tem atraso, é provável que você consiga descobrir o que está acontecendo usando strace . ltrace às vezes é útil de forma semelhante e, ocasionalmente, é necessário ir para um perfil completo ou rastrear com informações de tempo usando um depurador, embora isso geralmente seja uma abordagem bastante demorada. Definitivamente comece com strace .

Espero que você tenha mais algumas perguntas, mas em vez de se concentrar nos detalhes de todas as áreas possíveis que podem ser motivo de preocupação. Que tal tentar o acima e, em seguida, adicionar mais detalhes sobre o que descobriu?

    
por 30.10.2018 / 05:26