Estimativa de carga para um aplicativo ASP.Net / SQL Server

2

Existe alguma heurística para definir os requisitos do servidor para aplicativos típicos? Vindo de desenvolvimento interno para um punhado de usuários, esta é a nossa primeira implantação de um aplicativo de internet. Internamente, apenas implementamos, monitoramos e agimos, se necessário, mas com um orçamento apertado e tendo que implantar remotamente, tenho que fazer uma estimativa com um grau maior de precisão.

Eu tenho as seguintes fontes de entrada para uma estimativa paramétrica:

Fora do teste, recebo: - o volume de tráfego - o número de solicitações de SQL

E do gerenciamento de projetos, recebo o número de usuários totais e simultaneamente conectados esperados.

Existe uma regra que eu possa aplicar nesses parâmetros?

    
por Oli 03.05.2009 / 16:10

5 respostas

2

Não existe uma fórmula matemática simples para determinar a carga que você estará enfrentando. Sua carga pode mudar drasticamente com base em:

  • As consultas - se você estiver usando cursores, por exemplo, precisará de mais energia do que se usasse operações baseadas em configurações. Só é preciso uma consulta mal projetada para colocar um servidor de joelhos.
  • Os índices - um bom DBA pode fazer a diferença entre um aplicativo que executa de maneira rápida ou lenta.
  • A quantidade de dados históricos - à medida que seu aplicativo fica fora por períodos mais longos, mais dados podem ser armazenados, o que afeta a rapidez com que o SQL Server pode retornar os resultados da consulta. Se o seu aplicativo limpar o histórico rapidamente, melhor ainda.
  • Ajustes de hardware - por exemplo, uma SAN ajustada adequadamente pode sustentar muito mais carga do que uma SAN que não está ajustada corretamente.

Existem escolas de pensamento sobre como fazer planejamento de capacidade, mas é muito mais complicado do que algumas fórmulas.

    
por 03.05.2009 / 23:07
2

Há um número enorme de variáveis que você deve levar em conta, então não há uma maneira fácil de fazer isso. Algumas coisas que você deve considerar (além das excelentes anotações de Brent Ozar):

  • Qual é o tamanho do seu conjunto de dados? Qual é a sua taxa de crescimento e padrão esperados?
  • Como esses serviços serão segregados? Servidores web e sql separados? Seu aplicativo pode ser dimensionado para um farm de cada um?
  • A maior parte do trabalho é feito pelo seu aplicativo no final da Web ou por consultas SQL?

Para um novo aplicativo, a melhor maneira de implantar é comprar alguns servidores escalonáveis significativamente abaixo do seu orçamento. Estabeleça o seu aplicativo o mais lentamente possível (ou seja, dogfood-lo e com alguns clientes confiáveis, então, gradualmente, beta-lo para o público em geral).

Durante esse processo, acompanhe atentamente todas as métricas de desempenho nas quais você pode entrar para determinar onde estão seus afunilamentos. Gaste o dinheiro que você salvou anteriormente ao abrir esses gargalos.

Essa abordagem não permite que você inicie em uma grande tempestade, mas evitará muitas dores de cabeça mais tarde.

    
por 06.05.2009 / 17:58
1

Não há bala de prata; e dependendo da natureza do seu aplicativo, você poderá ver mais carga com menos usuários. Por exemplo, um monte de Ajax em um site pode aumentar drasticamente a carga em servidores Web e BD.

Ouvi dizer que ~ 75 usuários simultâneos por 1GB de RAM e um único Core CPU no servidor da web é uma estimativa segura. Portanto, seu típico Core de 8GB / Quad Server deve lidar com muitos usuários. Se você chegar a esse ponto, a largura de banda também pode começar a desempenhar um papel na sua carga.

Eu não tenho muito experiacne com o SQL Server, mas imagino que números semelhantes se aplicam.

    
por 06.05.2009 / 18:31
0

Não creio que exista uma regra que você possa aplicar, exceto que a única maneira de saber como seu aplicativo irá funcionar é observar o desempenho do seu aplicativo.

Certifique-se de fazer testes de carga segmentando de 1,5 a 2 vezes a carga que suas equipes de projeto antecipam. Se você mantiver essa carga com sucesso, eu continuaria aumentando a carga para que você saiba qual é o ponto de ruptura.

    
por 03.05.2009 / 16:57
0

Quais são suas plataformas web / db?

Se você estiver usando o IIS e o SQL Server, a Microsoft criará algumas ferramentas para teste de estresse / teste de capacidade em seus sites. Ferramentas do IIS

Este artigo parece ser um bom começo para testar o SQL Server.

    
por 05.05.2009 / 02:46