Como melhorar o desempenho do NGINX?

Não encontrou o que procurava? Faça uma pesquisa

Search

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: