Qual distribuição é mais comumente usada para modelar o tempo de resposta do servidor?

16

Eu tenho um aplicativo baseado em servlet em que medo o tempo necessário para concluir cada solicitação desse servlet. Eu já calculo estatísticas simples como média e máximo; No entanto, gostaria de produzir uma análise mais sofisticada e, para isso, acredito que preciso modelar adequadamente esses tempos de resposta.

Certamente, digo, os tempos de resposta seguem uma distribuição bem conhecida, e há boas razões para acreditar que a distribuição é o modelo certo. No entanto, não sei o que essa distribuição deveria ser.

Lembre-se de Log-normal e Gamma, e você pode ajustar um dos tipos de dados de tempo de resposta real. Alguém tem uma visão sobre qual distribuição os tempos de resposta devem seguir?

Sean Owen
fonte

Respostas:

16

A distribuição Log-Normal é a que eu acho melhor para descrever latências de tempos de resposta do servidor em toda a base de usuários durante um período de tempo.

Você pode ver alguns exemplos no site apropriadamente nomeado lognormal.com, cuja atividade é medir a distribuição da latência do site ao longo do tempo e muito mais. Não tenho afiliação com o site, exceto por ser um usuário feliz. Veja como é a distribuição; tempo de resposta (por exemplo, carregamento da página da web) versus número de respostas:

uma distribuição log-normal

Observe que neste gráfico, a escala de tempo de carregamento (eixo X) é linear. Se você alternar o eixo x para uma escala de log, a forma da distribuição pareceria mais normal (em forma de sino) no lado direito do pico.

arielf
fonte
Este PDF realmente parece um Fréchet na minha opinião.
usεr11852 diz Reinstate Monic
4

Exemplo de gráfico.  Veja o artigo para mais detalhes.

Minha pesquisa mostra que o melhor modelo é determinado por algumas coisas: 1) Você está preocupado com o corpo, a cauda ou ambos? Se não for "ambos", a modelagem de um conjunto de dados filtrado pode ser mais útil. 2) Você quer um muito simples ou muito preciso? ou seja, quantos parâmetros?

Se a resposta para 1 foi "ambos" e 2 foi "simples", Pareto parece funcionar melhor. Caso contrário, se 1 for "corpo" e 2 for "simples" - escolha um modelo erlang filtrado. Se 1 foi "ambos" e 2 foi "preciso", você provavelmente deseja um modelo de mistura gaussiana em seus dados no domínio do log - efetivamente um ajuste lognormal.

Eu tenho pesquisado isso ultimamente, e não achei o tópico suficientemente bem coberto na internet pública, então acabei de escrever uma postagem no blog detalhando minha pesquisa sobre esse tópico.

Andrew Charneski
fonte
11
Obrigado pelo gráfico. Com base na distribuição tri-modal (aproximadamente) que você possui, acredito que essa não é uma configuração simples (servidor único). Você parece ter algum middleware ou back-ends mais lentos. Isso faz com que a resposta geral fique mais lenta quando o servidor voltado para o usuário aguarda a resposta dos subsistemas de back-end potencialmente armazenados em cache. Também não está claro o que os eixos X e Y representam. Você inverteu o tempo de carga (originalmente eixo X) e as contagens (originalmente eixo Y)?
Arielf
Obrigado pelo seu feedback! O conjunto de dados de origem era mais parecido com pings do que solicitações de serviço da web, mas eu acho que a distribuição trimodal se deve principalmente a duas coisas: 1) A principal assimetria bi-modal se deve a dois caminhos de rede, enquanto 2) a terceira O componente deve-se a cenários de recuperação de erros tcp. Mas isso é apenas um palpite ... meu foco principal era a utilidade empírica de vários modelos, não o processo e a teoria. Mas não tenho muita certeza do que você está perguntando sobre o eixo invertido ... você tem um exemplo de plotagem?
Andrew Charneski
Além disso, minhas desculpas pelo gráfico desleixado. O eixo x é microssegundos e o eixo y é a densidade de probabilidade. (Sim, eu sei ... desculpe ... ver o notebook para a ciência reprodutível.)
Andrew Charneski