Existe alguma maneira de testar o desempenho do site sob carga

9

Criei um site Asp.net MVC e o hospedei em um provedor de hospedagem compartilhada. Como meu site envolve uma idéia muito genérica, ele pode ter um número de usuários simultâneos em algum momento no futuro.

Então, eu estava pensando em uma maneira de testar o desempenho do meu site em carga. Como o desempenho do site quando 100 ou 1000 usuários estiverem online ao mesmo tempo e navegando no site. Isso também me fará entender se minhas consultas LINQ estão bem escritas ou não.

Pankaj Upadhyay
fonte

Respostas:

12

Primeiro de tudo, o termo adequado é teste de estresse . Existem algumas soluções para testes de estresse de sites, uma solução hospedada que eu recomendo é o loadimpact . O que eles fazem é bombardear seu site com solicitações de vários servidores em todo o mundo e fornecer um relatório analítico de como seu site lidou com o estresse. Eles têm um teste gratuito, onde você pode ter uma ideia geral, mas para mais, terá que pagar uma taxa de assinatura.

Esses tipos de testes testam apenas o site do ponto de vista dos visitantes. Para obter informações mais específicas, você deve criar um perfil local do seu aplicativo, e eu realmente não tenho mais nada a acrescentar às respostas anteriores. Estou usando o Apache JMeter também. .

E, por último, como qualquer desenvolvedor web consciente do desempenho, dê uma olhada no YSlow :

O YSlow analisa o desempenho da página da Web examinando todos os componentes da página, incluindo componentes criados dinamicamente usando JavaScript. Ele mede o desempenho da página e oferece sugestões de melhoria.

O YSlow para Firefox está integrado à ferramenta de desenvolvimento da Web Firebug para Firefox.

Na maioria das vezes, acho que o Javascript é o gargalo real e não o código de back-end ou o banco de dados. É claro que consultas mal escritas podem ser uma grande penalidade de desempenho, mas depois de lidar com elas, sempre execute o YSlow e siga suas sugestões, isso salva a vida.

Leitura adicional:

no StackOverflow, é claro!

yannis
fonte
Explore outras soluções antes de pagar a taxa de assinatura do loadimpact, é claro. Existem algumas soluções semelhantes. Eu adoro ele, mas o trabalho pago a taxa não me :)
yannis
Vou usar o teste gratuito .... não quero testes rigorosos por enquanto, pois não faz sentido no momento ... só quero ter a idéia :-)
Pankaj Upadhyay
7

Você está em hospedagem compartilhada, portanto, é improvável que você possa executar testes que sejam adequadamente indicativos de desempenho, pois não há garantia do nível de recursos que seu aplicativo terá acesso a qualquer momento.

No entanto, o que eu faria nessa situação é começar executando um teste isoladamente em uma caixa dedicada (pode ser seu próprio laptop); use uma ferramenta como o conjunto de testes de carga do Visual Studio ou o JMeter (que eu pessoalmente não suporto) e crie um conjunto de testes que representam um caminho típico através do seu aplicativo (você poderá obter informações sobre um caminho típico através do uso do Google Analytics. Se isso não estiver disponível, você pode usar apenas o que achar provável, mas lembre-se de que isso não fornecerá uma linha de base tão precisa). Em seguida, faça um teste de aceleração, inicie com 1 usuário e adicione lentamente usuários até atingir o pico de carga estimado. Isso deve mostrar o quão bem o seu sistema se comporta como um todo (eu pessoalmente gosto de ir um pouco mais além para garantir que eu tenha espaço).

A última coisa que você deve fazer é executar uma ferramenta de criação de perfil como o ANTS performance profiler durante a execução do teste (lembre-se de que isso adiciona alguma sobrecarga). Isso permitirá que você identifique consultas e métodos de execução demorada, fornecendo dicas sobre onde seu aplicativo é realmente lento (uma dica: quase nunca é exatamente onde você pensa que será).

O principal problema que você terá é, como eu disse primeiro, que você está em uma hospedagem compartilhada, por isso será quase impossível fazer qualquer emulação realista do ambiente ao vivo. No entanto, se o seu aplicativo tiver uma quantidade razoável de espaço livre em um ambiente semelhante aos recursos prometidos, você deve ter certeza de que o código pode se manter na sua hospedagem, mesmo que você atinja os limites do seu ambiente antes do esperado.

Ed James
fonte
obrigado por esclarecer a diferença entre o teste de hospedagem compartilhada e o próprio servidor.
Pankaj Upadhyay
3

Você pode procurar ferramentas como JMeter ou The Grinder .

Eu só usei o JMeter até agora, é uma ferramenta gráfica que permite criar planos de teste com bastante facilidade. Você pode simular vários usuários com vários threads. Você também pode registrar usos típicos do seu site, vinculando seu navegador a um proxy JMeter e realizando o trabalho real, para que você não precise escrever as solicitações do zero. O Grinder é baseado em script, se bem me lembro, pode ser uma boa opção também.

ftr
fonte
1

Também gosto do Loadimpact para testes de estresse. Uma coisa que costumo usar para verificações rápidas no meu site é o Apache Bench. Quando eu quiser executar alguns testes finais, procurarei um serviço pago.

Meu trabalho também investiu no WebLoads, que é muito caro, mas nos permite testar todos os nossos sites internamente. Eu não recomendo embora.

uadrive
fonte
0

Não acho que o teste de carga possa ser feito manualmente, pois consumirá mais tempo do que o esperado e será uma tarefa tediosa. Você provavelmente pode optar pelo Load Runner, que pode ser usado por muitos usuários.

dsdsf
fonte
0

Um script de Autohotkey (AHK) pode simular um usuário humano. Deixe funcionar o dia todo.

Você pode deixá-lo rodar em várias caixas para simular alguns usuários. O bom é que o estilo de teste está completamente sob seu controle. Você pode ter 1 script AHK enviando spam para um recurso de relatório e ver se isso afeta os usuários de outros recursos.

Embora eu não esteja familiarizado com as habilidades de encadeamento do AHK, a simulação de milhares de usuários pode ser difícil. Você pode estar vinculado pelo número de computadores que possui.

mike30
fonte