2015-07-24 1 views
1

Je travaille sur l'analyse. Je veux savoir à quel point l'analyse est évolutive. Je sais le fait qu'il sert 30 demandes/seconde. Mais pratiquement combien d'utilisateurs simultanés peuvent accéder à l'analyse? Je sais que l'application différente sert taux de demande différent qui varie également en fonction du modèle d'utilisation des utilisateurs. Mais disons que nous avons une application pour la campagne de don de sang, alors quelle est l'évolutivité que nous pouvons attendre de l'analyse?Combien d'utilisateurs simultanés peuvent analyser?

+0

essayer cet article - il sera utile http://stackoverflow.com/questions/11283729/how-scalable-is-parse –

+0

@AlexG J'ai déjà lu cet article –

Répondre

0

Le niveau gratuit parse.com se limitera en effet à 30 req/s.

Comment cela se traduit par un certain nombre d'utilisateurs, dépend de deux facteurs:

  • combien de demandes ne une application do par jour?
  • Quelle est l'intensité du trafic?

Le premier facteur est entièrement déterminé par votre application. Certaines applications "appellent à la maison" tout le temps (et aussi fréquemment à partir de l'arrière-plan grâce à un service). D'autres applications ne se connecteront qu'occasionnellement et téléchargeront un tas de contenu qui durera longtemps. Le comportement de votre application dépend du nombre de messages, de leurs besoins de latence et de la capacité de votre service à combiner les messages en attente en une seule requête. En tant que développeur d'applications, vous êtes le seul à pouvoir proposer une estimation correcte.

Pour le deuxième facteur (burstyness) je peux faire une approximation en supposant Poisson distribution des demandes.

est ici un simple script python qui donne un aperçu de la fonction de probabilité de Poisson:

import math 

def poisson_probability(nr_devs, device_rps, total_rps): 
    # Returns the probability of total_rps requests per second, 
    # assuming nr_devs devices, each making device_rps (mean) 
    l = math.ceil(nr_devs * device_rps) 
    return (l ** total_rps) * math.exp(-1 * l)/math.factorial(total_rps) 

def cumulative_poisson_probability(nr_devs, device_rps, cutoff_probability=0.999999): 
    c = 0.0 
    for i in xrange(1000): 
     p = poisson_probability(nr_devs, device_rps, i) 
     c += p 
     print "RPS: %d\tprobability: %1.6f\tcumulative: %1.6f" % (i, p, c) 
     if c > cutoff_probability: 
      break 

Essayons 100k des dispositifs qui génèrent une demande par 2 heures en moyenne:

>>> cumulative_poisson_probability(100000, 1.0/7200.0) 

... 
RPS: 26 probability: 0.001299 cumulative: 0.998691 
... 
RPS: 35 probability: 0.000001 cumulative: 0.999999 

Avec ces chiffres que vous avoir une probabilité de 99,9% d'obtenir 26 demandes maximum dans une seconde donnée, et une probabilité de 99,9999% d'obtenir maximum 35 demandes dans une seconde donnée. Cela signifie que vous devriez dépasser les 26 rps environ toutes les 1000 secondes (~ 20 minutes) et 35 rps une fois par million de secondes (~ 11 jours).