Pergunta

Estou testando um aplicativo da web .NET.Eu fiz isso por 2 motivos:Eu queria ver como era o desempenho em condições reais e também ter certeza de que não havíamos perdido nenhum problema durante os testes.Tínhamos 30 usuários simultâneos no aplicativo usando-o como fariam durante o curso normal de seus trabalhos.A maioria dos usuários tinha várias janelas do aplicativo abertas.

  • 10 usuários:Nada mal
  • 20 usuários:Desacelerando
  • 30 usuários:Muito, muito lento, mas sem tempo limite

Ele foi carregado no servidor de produção.É um servidor virtual com processador Xeon de 2,66 GHz e 2 GB de RAM.Estamos usando Win2K3 SP2.Temos o .NET 1.1 e 2.0 carregado e estamos usando o SQLExpress SP1.

Verificamos novamente os índices de todas as tabelas e eles estavam como deveriam estar.

Como podemos melhorar o desempenho do nosso aplicativo?

Foi útil?

Solução

Isso é apenas algo em que pensei, mas verifique quanta memória o SQL Server está usando quando você tem mais de 20 usuários - uma das limitações da versão Express é que ela é limitado a 1 GB de RAM.Portanto, pode ser apenas uma questão de não haver memória suficiente disponível para o servidor devido às limitações do Express.

Outras dicas

  1. Você pode estar enfrentando problemas de simultaneidade, dependendo de como seu aplicativo é executado.Tente realizar suas leituras com a palavra-chave “nolock”.

  2. Tente adicionar aliases de tabela para suas colunas (e evite o uso de SELECT *), isso ajuda o MSSQL, pois não é necessário "adivinhar" de qual tabela as colunas vêm.

  3. Se ainda não o fez, mude para SPROCs, isso permite que o MSSQL indexe melhor seus dados para o conjunto de resultados normais de uma determinada consulta.

  4. Tente seguir o plano de execução do seu SPROCS para garantir que eles estejam usando os índices que você acha que estão.

  5. Execute um rastreamento em seu banco de dados para ver a aparência das solicitações recebidas.Você pode notar que um SPROC específico está sendo executado repetidamente:geralmente é um bom sinal armazenar em cache as respostas no cliente, se possível.(listas de pesquisa, etc.)

Atualizar:Parece que o SQL Server Express não é o problema, pois eles estavam usando o mesmo produto na versão anterior do aplicativo.Acho que seu próximo passo é identificar os gargalos.Se você tiver certeza de que está na camada de banco de dados, recomendo fazer um rastreamento do criador de perfil e reduzir o tempo de execução das consultas mais caras.

Este é outro link que uso para coletar estatísticas de DMVs (Exibições de gerenciamento dinâmico) do SQL Server e DMFs (funções de gerenciamento dinâmico) relacionadas.Não tenho certeza se podemos usar na edição Express.Descubra dados ocultos para otimizar o desempenho do aplicativo.


Você está usando o SQL Server Express para um aplicativo web?Pelo que eu sei, tem algumas limitações para implantação em produção.

SQL Server Expresso é gratuito e pode ser redistribuído por ISVs (sujeito a acordo). SQL Server Express é ideal para aprender e criar aplicativos de desktop e pequenos servidores.Esta edição é a melhor escolha para fornecedores de software independentes, desenvolvedores não profissionais e amadores que criam aplicativos clientes.Se você precisar de recursos de banco de dados mais avançados, o SQL Server Express pode ser atualizado facilmente para versões mais sofisticadas do SQL Server.

Gostaria de verificar o desempenho do disco no servidor virtual.Se esse for um dos problemas, recomendo colocar o banco de dados em um fuso separado.

Atualizar:Mude para um fuso separado ou atualize a versão do SQL Server, como Gulzar sugere apropriadamente.

certifique-se de fechar as conexões após recuperar os dados.

Execute o SQL Profiler para ver as consultas enviadas ao banco de dados.Procure consultas que sejam:

  • retornando muitos dados
  • mal construído
  • estão sendo executados muitas vezes
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top