Quantas consultas falharão se ocorrer um erro em um único processo de um único host?

Quantas consultas falharão se ocorrer um erro em um único processo de um único host?

Contexto:

Eu tenho um cluster de hosts H que atendem uma API, onde cada host atende a API usando um número P (constante) de processos (python, mas irrelevantes) (de forma assíncrona, mas também irrelevante).

Tenho acesso às seguintes informações (na forma de gráficos):

  • o número antigo (por segundo) de receptor de consultas em todo o cluster, R (t)
  • A latência média (tempo necessário para processar uma solicitação) L= L(t), que também varia com o tempo.
    • a média é superior a segundos e em todos os processos/hosts
  • O número de hosts H(t), que muda ao longo do tempo devido ao escalonamento automático.

Pode ocorrer um erro que mata um processo inteiro e todas as consultas em processo, mas os processos restantes continuam funcionando.

  • A taxa de erro (por exemplo, em #crashes por dia por host) é conhecida e constante, digamos E.

Problema: quero calcular o número (esperado?) de consultas com falha como resultado de uma falha.

Premissas:

  • as consultas são igualmente equilibradas entre hosts e processos.
  • um processo com falha se recupera "imediatamente"

Alguns pensamentos:

  • A qualquer segundo, o número denovoas consultas devem ser R(t) / [P*H(t)].
  • Isso não leva em consideração as consultas "em execução" ainda não concluídas. Acho que quero relacionar isso de alguma forma com L(t)...
  • O inverso do número de novas consultas por segundo, [P*H(t)] / R(t), deveria ser menor que L(t), caso contrário levaria mais tempo para concluir uma consulta do que para receber uma nova, eventualmente sobrecarregando os servidores (o que não está acontecendo!)

informação relacionada