A resposta curta é: ninguém pode responder a essa pergunta, exceto você.
A resposta longa é que comparar sua carga de trabalho específica é algo que você precisa se comprometer, porque é um pouco como perguntar "Quanto tempo dura um pedaço de corda?".
Um site estático de uma página simples pode ser hospedado em um Pentium Pro 150 e ainda servir milhares de impressões todos os dias.
A abordagem básica que você precisa adotar para responder a essa pergunta é experimentá- la e ver o que acontece. Existem muitas ferramentas que você pode usar para colocar artificialmente seu sistema sob pressão para ver onde ele se prende.
Uma breve visão geral disso é:
- Coloque seu cenário no lugar
- Adicionar monitoramento
- Adicionar tráfego
- Avaliar resultados
- Corrigir com base nos resultados
- Enxágüe, repita até razoavelmente feliz
Coloque seu cenário no lugar
Basicamente, para testar alguma carga, você precisa de algo para testar. Configure um ambiente para testar. Isso deve ser um palpite bastante próximo do hardware de produção, se possível, caso contrário, você ficará extrapolando seus dados.
Configure seus servidores, contas, sites, largura de banda, etc. Mesmo se você fizer isso em VMs, tudo bem, desde que você esteja preparado para escalar seus resultados.
Então, vou configurar uma máquina virtual de potência média (dois núcleos, 512 MB de RAM, HD de 4 GB) e instalar meu balanceador de carga favorito, haproxy
dentro do Red Hat Linux na VM.
Também terei dois servidores Web atrás do balanceador de carga que vou usar para testar o estresse. Esses dois servidores da web são configurados de forma idêntica aos meus sistemas ativos.
Adicionar monitoramento
Você precisará de algumas métricas para monitorar, por isso vou medir quantas solicitações chegam aos meus servidores da Web e quantas solicitações posso extrair por segundo antes que os usuários comecem a obter um tempo de resposta de mais de dois segundos.
Também monitorarei o uso de RAM, CPU e disco na haproxy
instância para garantir que o balanceador de carga possa lidar com as conexões.
Como fazer isso depende muito de suas plataformas e está fora do escopo desta resposta. Pode ser necessário revisar os arquivos de log do servidor da Web, iniciar os contadores de desempenho ou confiar na capacidade de geração de relatórios da sua ferramenta de teste de estresse.
Algumas coisas que você sempre deseja monitorar:
- utilização do CPU
- Uso de RAM
- Uso de disco
- Latência do disco
- Utilização da rede
Você também pode optar por analisar os impasses do SQL, os tempos de busca, etc., dependendo do que estiver testando especificamente.
Adicionar tráfego
É aqui que as coisas se divertem. Agora você precisa simular uma carga de teste. Existem muitas ferramentas que podem fazer isso, com opções configuráveis:
Escolha um número, qualquer número. Digamos que você verá como o sistema responde com 10.000 hits por minuto. Não importa qual número você escolher, porque você repetirá essa etapa várias vezes, ajustando esse número para cima ou para baixo para ver como o sistema responde.
Idealmente, você deve distribuir essas 10.000 solicitações em vários clientes / nós de teste de carga, para que um único cliente não se torne um gargalo de solicitações. Por exemplo, o Remote Testing do JMeter fornece uma interface central para iniciar vários clientes a partir de uma máquina Jmeter controladora.
Pressione o botão mágico Ir e assista seus servidores da Web derreterem e travarem.
Avaliar resultados
Portanto, agora você precisa voltar para as métricas coletadas na etapa 2. Você vê que, com 10.000 conexões simultâneas, sua haproxy
caixa está suando muito, mas o tempo de resposta com dois servidores da Web é um pouco mais de cinco segundos. Isso não é legal - lembre-se, seu tempo de resposta está apontando por dois segundos. Então, precisamos fazer algumas alterações.
Remediar
Agora, você precisa acelerar o site mais de duas vezes. Então, você sabe que precisa aumentar ou diminuir a escala.
Para aumentar a escala, obtenha servidores Web maiores, mais RAM e discos mais rápidos.
Para expandir, obtenha mais servidores.
Use suas métricas da etapa 2 e teste para tomar essa decisão. Por exemplo, se você viu que a latência do disco era enorme durante o teste, sabe que precisa aumentar o tamanho e obter discos rígidos mais rápidos.
Se você viu que o processador estava sentado a 100% durante o teste, talvez seja necessário expandir para adicionar servidores da Web adicionais para reduzir a pressão nos servidores existentes.
Não existe uma resposta certa ou errada genérica, apenas o que é certo para você. Tente ampliar e, se isso não funcionar, em vez disso. Ou não, depende de você e de alguns pensamentos fora da caixa.
Digamos que vamos expandir. Então, decido clonar meus dois servidores da Web (eles são VMs) e agora tenho quatro servidores da Web.
Enxágüe, repita
Comece novamente a partir da Etapa 3. Se você achar que as coisas não estão indo como o esperado (por exemplo, dobramos os servidores da Web, mas o tempo de resposta ainda é superior a dois segundos), verifique outros gargalos. Por exemplo, você duplicou os servidores da Web, mas ainda possui um servidor de banco de dados de baixa qualidade. Ou você clonou mais VMs, mas como elas estão no mesmo host físico, você alcançou apenas uma contenção mais alta pelos recursos dos servidores.
Você pode usar este procedimento para testar outras partes do sistema. Em vez de atingir o balanceador de carga, tente acessar diretamente o servidor da Web ou o servidor SQL usando uma ferramenta de benchmarking SQL .