Pergunta

É uma questão complicada que eu estava perguntou outro dia ... Nós estamos trabalhando em um telefonia bastante complexa aplicação (SIP) com C ++ mista e código PHP com banco de dados MySQL e vários componentes de código aberto.

Um engenheiro de telecomunicações nos pediu para estimar o desempenho do aplicativo (que ainda não está pronto). Ele foi como 'bem, você sabe quantos pacotes podem passar pelo kernel do Linux por segundo, mais você pode saber o quão rápido a sua aplicação é, então me diga quantas chamadas vai passar por suas coisas por segundo'.

Parece absurdo para mim, como há um milhão de cenários que podem acontecer (bem, literalmente ...)

No entanto ... há uma maneira para estimar o desempenho do aplicativo (sabendo o hardware que será executado em, ser capaz de executar benchmarks padrão nele, etc) antes do teste real?

Foi útil?

Solução

Você certamente pode obrigado o problema com (máximo rendimento) limites superiores. Não há nada de absurdo nisso. Na verdade, não sabendo que o material indica uma abordagem muito casual para um problema - especialmente no mundo da telefonia.

Você pode trabalhar com o problema sozinho - o que é o "trabalho" mínimo que você tem que realizar para uma transação ou qualquer unidade de tarefa que você tem em seu aplicativo

Algumas mensagens de e para, algum processamento e um banco de dados atingido por exemplo? Como obter informações sobre as peças individuais lhe dará uma idéia do mais rápido rendimento possível. Se você carregar o sistema e ver o desempenho significativamente menor, em seguida, você pode levar algum tempo para descobrir onde você está, possivelmente, perder rendimento com algoritmos ineficientes, etc.

Editar

Para fazer este exercício você precisa saber todos os passos seu aplicativo faz para cada caso de uso. Então você pode identificar a taxa de transferência máxima para cada caso de uso. Você deve definitivamente saber essas coisas antes do lançamento e ir ao vivo.

Eu estou ignorando o pior análise de caso como que - como você apontar -. É um pouco mais difícil

Outras dicas

planejamento de capacidade para Web Performance: Metrics, Modelos e Métodos . Existem também algumas ferramentas que podem fazer este tipo de simulação de eventos discretos:

Este material não é fácil, e as ferramentas comerciais vai custar ya. O livro Planejamento de Capacidade vem com um CD com muita Excel pasta de trabalho modelos e exemplos de modelos que podem saltar começá-lo.

Boa sorte:)

Se você realmente tem que responder isso, você poderia dizer algo como isto:

"Eu não sei fora do topo da minha cabeça. Eu sou vai para estimar isso para você, mas isso vai levar tempo. Obviamente, a precisão da minha resposta depende de quanto esforço (tempo IE) I colocado em minha cálculo estimar. quanto tempo eu deveria colocar em calcular minha estimativa? "

Coloque a parte de trás fardo para eles. Se eles realmente querem uma resposta precisa, eles vão ter que deixá-lo construir pelo menos algumas aplicações de teste que podem simular o ambiente real.

Você pode espiga para medir o desempenho. Todo o seu sistema pode não estar funcionando ainda, mas você sabe como as peças se destinam a se encaixar. Você pode chicote algo em poucas horas que faz o mesmo tipo de trabalho que o aplicativo final será, em todas as camadas, e usá-lo para medir o desempenho de seu projeto.

Lembre-se: protótipos são amplas, spikes são profundas

.

Você deve fazer a estimativa. Uma estimativa não vai lhe dar a resposta certa. Terá, no entanto fazer você pensar sobre o problema. Agora parece que a sua codificação e esperando que tudo vai ficar bem. Ou você está em modo de pânico e sentir que você não tem tempo para as estimativas.

Passe algum tempo pensando sobre isso. Analisar os casos de uso importantes. Pense sobre a memória que você pode precisar; pensar sobre o acesso de banco de dados; pensar sobre o acesso à rede (local e remoto). Estes irão afetar o desempenho do seu sistema. Obter toda a equipe para fazer isso.

Regularmente medir o desempenho do seu sistema durante o desenvolvimento para estes casos de uso importantes. Mock-up componentes / outros sistemas, se for preciso. Analisar os resultados. Como estes se comparam à sua estimativa. Talvez componentes são a memória / database / rede ligada. Talvez você precise de mais memória; acesso ao banco menos; consultas mais simples; caching. Você não tem que fazer essas alterações imediatamente. No entanto, você sabe como o sistema funciona eo que você precisa fazer.

Resultado: surpresas desagradáveis ??Menos no teste do sistema. Menos pânico como os teares data de lançamento.

Você pode definitivamente fazer o planejamento de capacidade com antecedência, mas a qualidade da estimativa depende da qualidade dos dados disponíveis.

A melhor estimativa é construir o sistema em teste, executar cargas de trabalho simuladas, em seguida, prever a capacidade em função dos requisitos de desempenho e carga de trabalho. Estes 3 formam um espaço previsão - dada 2 dos 3, você pode prever o terceiro:

  1. requisitos de desempenho dado e capacidade (hardware ou seja,) você pode calcular a carga de trabalho que você pode manipular.

  2. requisitos de desempenho dado e carga de trabalho, você pode calcular a capacidade (hardware ou seja) que você precisa.

  3. determinada carga de trabalho e capacidade, você pode prever o desempenho esperado.

Isto é verdade em alguns domínios, mas a menos que você seja um especialista nesse domínio, então você não tem idéia. Por exemplo, eu escrever código para controlar robôs industriais. A velocidade é limitada pelo movimento do robô, não pela velocidade de execução do código. Sabendo o quão rápido o robô é e quão longe ele tem que ir, podemos fazer bastante boas estimativas da "velocidade". Eu não teria nenhuma idéia de como estimar o tempo para a sua aplicação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top