DevSecOps

14 ago, 2015

4 maneiras rápidas de otimizar o desempenho do Nginx

Publicidade

Segundo a Wiki, “Nginx (pronuncia-se ‘engine-x’) é um servidor proxy inverso open source para protocolos HTTP, HTTPS, SMTP, POP3, e IMAP, bem como um balanceador de carga, cache de HTTP e um servidor de web (servidor de origem)”. Enquanto todo mundo já ouviu falar do Apache, o Nginx também está com a popularidade lá em cima e, juntos, são responsáveis por servir mais de 50% do tráfego na Internet. Em termos dos sites mais bem classificados do mundo, o Nginx, na verdade, sai na frente do Apache, alimentando 45% dos sites classificados no top 10.000 em volume de tráfego. A razão para a rápida adoção do Nginx é sua velocidade; ele foi criado para lidar com o problema C10K, que foi um desafio da web moderna conforme cada vez mais servidores tinham que começar a manipulação de dezenas de milhares conexões simultâneas.

nginx1

Os números indicam a confiança que as pessoas depositam no Nginx para executar seus serviços de web, especialmente aqueles com a maior quantidade de tráfego. É uma ferramenta de confiança comprovada. Mas, como com qualquer aplicativo, você deve sempre garantir que as coisas estão funcionando tão bem e de forma segura quanto possível. Aqui estão quatro itens com dicas rápidas para garantir que você está tendo o máximo proveito de sua configuração Nginx.

1. Ajuste worker_processes

A arquitetura dos processos master e worker do Nginx é explicada da seguinte forma: “Nginx tem um processo master e muitos processos worker. O principal objetivo do processo master é ler e avaliar a configuração e manter os processos worker. Os processos worker fazem o processamento real das solicitações. Nginx utiliza mecanismos de modelo baseados em eventos e dependentes de OS para distribuir de forma eficiente os pedidos entre os processos worker”.

Em outras palavras, worker_processes fala para o seu servidor virtual quantos núcleos são atribuídos a cada processador, de modo que o Nginx possa gerenciar as solicitações simultâneas de forma otimizada. O caminho da configuração padrão Nginx é: /etc/nginx/nginx.conf.

Para saber quantos processadores você tem em seu servidor de web, execute o seguinte comando.

grep processor /proc/cpuinfo | wc –l

Nesse caso, o número de saída mostra um núcleo da CPU.

É prática comum executar um processo worker por núcleo, portanto, nesse caso, você deve definir os processos worker como 1 para o melhor desempenho no arquivo de configuração Nginx.

worker_processes 1;

2. Habilite a compactação Gzip

O Gzip é um software usado para compressão e descompressão de arquivos. A maioria dos servidores e clientes hoje suporta o Gzip. Quando um navegador compatível com o Gzip solicita um recurso, o servidor comprimirá a resposta antes de enviá-la para o browser. O Gzip é uma ótima maneira de otimizar seu servidor Nginx, assim como tornar as coisas ainda mais eficientes. Existem alguns passos simples para ativar Gzip dentro do seu ambiente Nginx. De acordo com uma fonte:

Crie um arquivo em /etc/nginx/conf.d/gzip.conf com o seguinte conteúdo:

gzip on;

gzip_proxied any;

gzip_types text/plain text/xml text/css application/x-javascript;

gzip_vary on;

gzip_disable “MSIE [1-6]\.(?!.*SV1)”;

Quando o arquivo estiver no lugar, você simplesmente vai reiniciar o servidor e vai, agora, estar servindo os ativos do site com a compressão Gzip.

nginx2

3. Ative o cache para arquivos estáticos

O cache é um mecanismo para o armazenamento temporário das páginas web, a fim de reduzir a largura de banda e melhorar o desempenho. Quando um visitante chega ao seu site, a versão em cache será servida, a menos que ela tenha sido alterada desde o último cache. Dentro de seu ambiente Nginx, você pode adicionar os seguintes comandos para dizer ao computador para que ele armazene em cache os arquivos estáticos da página web para uma acessibilidade mais rápida. O local padrão para isso é: etc/nginx/sites-available/sitename.

location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {

   expires 365d;

}

Nesse exemplo, todos os arquivos .jpg, .jpeg, .png, .gif, .ico, .css e .js obtêm um cabeçalho Expires com uma data de 365 dias no futuro a partir do momento de acesso do browser.

4. Desabilite access_logs

O Nginx registra toda e qualquer ação em um arquivo de log chamado “access.log”. Se você não exigir essa informação, então é preferível desativá-lo, o que vai salvar o seu ambiente de um monte de processamento adicional e espaço no disco rígido. Para desativar os logs, basta escrever a condição off junto à sintaxe access_log como abaixo:

access_log off;

***

Ralph Eck faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://www.monitis.com/blog/2015/05/18/5-quick-tips-to-optimize-your-nginx-performance/