Configuração do servidor/parâmetro importante para 500Req/Second

Configuração do servidor/parâmetro importante para 500Req/Second

Estou configurando um servidor para ser usado como servidor nginx para um site de tráfego muito intenso. Espera-se receber tráfego de um grande número de endereços IP simultaneamente. Espera-se obter 500Req/segundo com pelo menos 20 milhões de IPs exclusivos conectando-o.

Um dos problemas que notei no meu servidor anterior estava relacionado ao iptables/ipconntrack. Não estou ciente desse comportamento e ficaria feliz em saber quais parâmetros de uma máquina ubuntu/debian (32/64) bits devo ajustar para obter o desempenho máximo do servidor. Posso colocar muita RAM no servidor, mas a tarefa de missão crítica são os tempos de resposta. Idealmente, não queremos que nenhuma conexão fique suspensa/esgotada/esperando e queremos tempos de resposta gerais tão baixos quanto possível.

Responder1

Você realmente precisa do iptables? Se você deseja obter tanto desempenho em uma única caixa, sugiro removê-la completamente. Se você configurar cuidadosamente a máquina, removendo todos os serviços, exceto o nginx, configurando o SSH para escutar em uma interface não pública (VPN, lan, etc.), então você poderá escapar sem um firewall. Isso pelo menos eliminaria o seu único problema.

Você está tentando fazer isso emumservidor web, ou alguns deles? Mesmo um simples round robin de DNS ajudaria você a distribuir a carga para algumas máquinas diferentes. Definitivamente, você também desejaria vários servidores para confiabilidade.

Responder2

Esta questão é bastante ampla. Meu melhor conselho para você é dar um passo atrás e pensar em como você vai dimensionar seu aplicativo. Você deseja aumentar (alguns servidores grandes) ou expandir (muitos servidores pequenos) ou possivelmente uma combinação. Depois de descobrir sua estratégia de escalonamento, você também poderá projetar uma estratégia de HA em torno disso.

Duvido muito que você veja 20 milhões de itens únicos no segundo em que o site for lançado (só para lhe dar uma perspectiva, isso o tornaria um dos 200 melhores sites).

Tenha um bom plano para escalar com seu tráfego e não ultrapasse a capacidade de seus servidores, permita-se algum espaço para picos e obtenha novos equipamentos à medida que seu tráfego aumenta.

Recebemos essas perguntas de vez em quando. É bom pensar no futuro, mas não planeje ter uma infraestrutura que será capaz de lidar com 20 MM/60 MM/100 MM únicos imediatamente, você estará desperdiçando seu dinheiro e terá uma infraestrutura que está em grande parte parada lá parado.

Agora, para responder à sua pergunta, nós do Stack Overflow (atualmente) usamos iptable e estamos executando módulos conntrack em nossos roteadores front-end sem problemas. Eu sugeriria postar uma nova pergunta com detalhes sobre o problema exato que você está vendo ao executar iptables/*conntrack* sob carga.

E finalmente uma boa leitura

Como executamos S[OFU]/Stack Exchange
Blog de alta escalabilidade

Responder3

500 solicitações por segundo realmente não são muito, se tudo o que você está fazendo é servir arquivos estáticos relativamente pequenos. Por outro lado, se forem grandes ou complexos (baseados em sessão ou dependentes de banco de dados, por exemplo), isso representa uma grande carga de trabalho.

Considere colocar um proxy reverso como o Varnish na frente desta solução, configurado para usar um pool malloc como cache. A VCL adequadamente ajustada permitiria armazenar em buffer a maior parte do site na memória, o que significa que o nginx teria que servir apenas alguns bits selecionados. Certifique-se também de definir noatime no sistema de arquivos.

informação relacionada