Como melhorar o desempenho do NGINX?

Acompanhe as novidades e ultimas postagens.

NGINXGenericName √© um c√≥digo aberto, gratuito servidor web usado para uma ampla gama de t√≥picos, incluindo proxy de correio, proxy reverso, balanceador de carga e HTTP cache. A solu√ß√£o fornece um alto padr√£o de desempenho com baixo peso e, embora ainda seja bastante novo em compara√ß√£o com alguns dos servidores da Web alternativos no mercado, o NGINX √© incrivelmente popular. Sua configura√ß√£o padr√£o oferece desempenho de alta velocidade, por isso certamente ir√° impression√°-lo desde o in√≠cio – mas existem maneiras de aumentar ainda mais seu desempenho. Tudo o que voc√™ precisa fazer √© ajustar algumas de suas configura√ß√Ķes.

Em nosso guia rápido para melhorar o desempenho do NGINX, exploraremos várias técnicas eficazes que você pode experimentar. Observação: ao montar este guia, usamos o NGINX com o sistema Ubuntu 22.04 LTS.

Ajustar os processos de trabalho do NGINX

No NGINX, um processo de trabalho lida com todas as solicita√ß√Ķes do servidor da web. Para gerenciar a solicita√ß√£o, um processo de trabalho ser√° gerado como v√°rios processos de trabalho e um processo mestre gerencia todos eles e analisa a configura√ß√£o.

O par√Ęmetro do processo de trabalho est√° ativado automaticamente na configura√ß√£o padr√£o do NGINX. Isso inicia o processo de trabalho de acordo com o n√ļcleo da CPU dispon√≠vel. Como voc√™ j√° deve saber se verificou a documenta√ß√£o oficial do NGINX, auto √© o par√Ęmetro recomendado, pois √© a maneira mais eficaz de manter o processo de trabalho de acordo com o n√ļcleo da CPU dispon√≠vel.

N√£o tem certeza de quantos n√ļcleos existem em seus processos? Execute este comando para descobrir:

$ grep processor /proc/cpuinfo | wc -l

√Č f√°cil ajustar o valor padr√£o do processo de trabalho do arquivo de configura√ß√£o NGINX, encontrado em /etc/nginx/nginx.conf. Voc√™ pode querer atualizar seu servidor para ter um n√ļmero maior de processadores de n√ļcleo se achar que ele est√° sendo afetado por um n√≠vel excessivo de tr√°fego.

Modificando o n√ļmero de conex√Ķes de trabalho

A quantidade total de conex√Ķes simult√Ęneas que todos os processos de trabalho dispon√≠veis podem manipular √© conhecida como ‚Äúconex√£o de trabalho‚ÄĚ. O processo de trabalho √© capaz de lidar com 512 conex√Ķes ao mesmo tempo por padr√£o, mas voc√™ pode alterar isso.

No entanto, antes de ajustar o valor, verifique o sistema de conexão máxima para permitir o uso do código abaixo para atualizar a configuração de acordo:

$ ulimit -n

Para impulsionar o NGINX ao seu potencial m√°ximo, configure o valor da conex√£o do trabalhador para o sistema de conex√£o m√°ximo permitido pelo sistema no nginxarquivo .conf.

Comprimindo o conte√ļdo para aumentar o tempo de entrega

Ao compactar o conte√ļdo da Web, o NGINX utiliza o gzip para aprimorar o tempo de entrega do conte√ļdo e reduzir o uso de largura de banda de rede.

Você pode ver a configuração do gzip no estado comentado, mas é livre para remover o comentário do gzip e modificá-lo para atender às suas necessidades individuais. O processo de compactação Gzip utiliza recursos do sistema, portanto, se seus recursos já forem limitados, considere ajustar a configuração de acordo com os requisitos. Por exemplo, compactar apenas um determinado tipo de arquivo pode funcionar.

Cache de conte√ļdo est√°tico

A maior parte do conte√ļdo √© fornecida para navegadores ou clientes estaticamente hoje, e o armazenamento em cache de arquivos est√°ticos garante que o conte√ļdo seja carregado mais rapidamente. Al√©m disso, reduzir√° a solicita√ß√£o de conex√£o NGINX, pois o conte√ļdo ser√° carregado do cache.

Se você deseja iniciar o cache, coloque o comando abaixo em seu arquivo de configuração do host virtual:

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

Ao inserir este comando, você garantirá que o arquivo de recurso seja armazenado em cache por 30 dias, embora possa configurar a data de expiração do cache de acordo com seus requisitos pessoais.

Ajustando o tamanho do buffer

O buffer pode aumentar a efici√™ncia da comunica√ß√£o cliente-servidor retendo uma parte da resposta enquanto o buffer √© preenchido. Quando a resposta for maior que o tamanho do buffer, o NGINX gravar√° a resposta no disco ‚ÄĒ e isso pode afetar negativamente o desempenho. Mas n√£o se preocupe: voc√™ pode alterar o tamanho do buffer para atender √†s suas necessidades.

Para alterar o tamanho do buffer, coloque isso na seção http:

http {

…

client_body_buffer_size 80k;

client_max_body_size 9m;

client_header_buffer_size 1k;

...

}

O que significa cada parte?

  • Client_body_buffer_size: Especifica o tamanho exato do buffer para manter os dados de resposta do cliente.
  • Client_header_buffer_size: Gerencia o tamanho do cabe√ßalho do cliente (um valor de 1k geralmente √© eficaz).
  • Client_max_body_size: Reduz a resposta m√°xima do corpo do cliente: o NGINX apresentar√° uma mensagem ‚ÄúRequest Entity Too Large‚ÄĚ quando o tamanho do corpo for maior que seu valor.

Habilitar buffer de registro

Ao depurar problemas e auditar, o registro √© cr√≠tico. O log armazena dados em solicita√ß√Ķes que afetam ciclos de E/S e CPU o suficiente para causar problemas de desempenho. Mas permitir o armazenamento em buffer no log permite diminuir esse tipo de impacto. Quando o tamanho do buffer atingir seu limite, o NGINX criar√° o conte√ļdo do buffer para registrar.

Para ativar o buffer, adicione par√Ęmetros de buffer com valores de tamanho apropriados √† diretiva log:

access_log‚Äā/var/log/nginx/access.log‚Äāmain‚Äābuffer=16k;

Como alternativa, se você deseja desativar o log de acesso porque não precisa mais dele, digite o seguinte comando:

access_log off;

Colocar um limite nos valores de tempo limite

Colocar um limite no valor do tempo limite pode aumentar o desempenho: ele aguardará a solicitação de cabeçalho e corpo do cliente pelo período especificado e, se os dados de resposta não chegarem nesse slot, o NGINX ativará um tempo limite.

Voc√™ pode gerenciar o valor do tempo limite com o seguinte comando ‚ÄĒ copie e cole na se√ß√£o http:

client_body_timeout 10;

client_header_timeout 10;

keepalive_timeout 13;

send_timeout 10;

O corpo do cliente e o tempo limite do cabeçalho referem-se ao período que o NGINX tem para ler o cabeçalho e o corpo de uma solicitação do cliente. A solicitação será encerrada quando esta não for concluída quando o tempo permitido terminar.

Keepalive_timeout refere-se ao período de tempo que a conexão keep-alive permanece aberta depois que o NGINX fecha a conexão do cliente.

Por fim, send_timeout refere-se ao tempo que um cliente precisa para receber a resposta do NGINX.

Abertura de cache de arquivo

Praticamente tudo √© um arquivo em Linux, e quando voc√™ usa open_file, os descritores de arquivo e todos os arquivos acessados ‚Äč‚Äčregularmente ser√£o armazenados em cache no servidor. Servindo est√°tica html arquivos com cache de arquivo aberto melhorar√£o o desempenho do NGINX, pois ele abre e armazena o cache na mem√≥ria por um per√≠odo de tempo espec√≠fico.

Para iniciar o cache, insira isto na √°rea http:

http {

...

open_file_cache max=1024 inactive=10s;

open_file_cache_valid 60s;

open_file_cache_min_uses 2;

open_file_cache_errors on;

Conclus√£o

Isso encerra nosso guia rápido para aumentar o desempenho do NGINX. Esperamos que essas oito técnicas ajudem você a aproveitar melhor esse incrível servidor da web.

Link Original

Compartilhar:

Deixe um coment√°rio