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.