Arquitetura do Nginx
O Nginx escala bem porque foi projetado com uma arquitetura diferente dos servidores tradicionais. Entender isso ajuda a configurá-lo melhor.
Processo master e workers
Quando o Nginx inicia, ele cria dois tipos de processo:
- Master: lê a configuração, abre as portas e gerencia os workers. Não atende requisições.
- Worker: são os processos que realmente atendem as conexões dos usuários.
Você define quantos workers existem com a diretiva worker_processes.
worker_processes auto;
events {
worker_connections 1024;
}
Com auto, o Nginx cria um worker por núcleo de CPU.
Modelo orientado a eventos
Cada worker não cria um processo por conexão. Em vez disso, ele usa um laço de eventos que monitora muitas conexões ao mesmo tempo. Quando uma conexão tem dados prontos, o worker a processa e segue para a próxima.
Isso é chamado de modelo assíncrono e não bloqueante.
Por que escala bem
Esse desenho traz vantagens:
- Pouca memória mesmo com muitas conexões.
- Não há custo de criar e destruir threads o tempo todo.
- Aproveita bem servidores com vários núcleos.
Resumo
O master gerencia, os workers atendem. Cada worker lida com milhares de conexões usando eventos assíncronos, o que torna o Nginx leve e capaz de escalar.