81 votes

Heroku: web dyno vs travailleur dyno? Combien/quel rapport ai-je besoin?

J'étais curieux de savoir quelle est la différence entre web et des travailleurs des dynamomètres est sur Heroku. Ils donnent une phrase d'explication sur leur page des prix, mais cela m'a laissé confus. Comment puis-je savoir combien de choix de chacun? Est-il un ratio je devrais viser? Je suis assez nouveau à ce genre de choses, donc, quelqu'un peut-il donner une explication détaillée, ou peut-être une sorte de façon, je peux calculer le nombre et le type de dynamomètres j'aurais besoin?

Aussi, je suis confus au sujet de ce qu'ils veulent dire par le nombre d'heures pour chaque puissance.

http://www.heroku.com/pricing

Il m'est également arrivé sur cet article. Comme l'un de leurs solutions proposées, ils ont dit à augmenter le montant de dynamomètres. Quel type de dyno sont-ils réfèrent ici?

http://devcenter.heroku.com/articles/backlog-too-deep

58voto

John Beynon Points 23163

Votre meilleure indication si vous avez besoin de plus des dynamomètres (aka processus de Cèdre) est votre heroku journaux. Assurez-vous que vous mettez à niveau à l'expansion de l'exploitation forestière (c'est gratuit), de sorte que vous pouvez la queue de votre journal.

Vous êtes à la recherche pour le heroku.routeur et les entrées de la valeur qui vous intéresse le plus est la file d'attente à valeur si il est constamment supérieure à 0, alors c'est un bon signe que vous avez besoin d'ajouter plus de dynamomètres. Essentiellement, cela signifie qu'il y a de plus en plus de demandes venant de votre processus peut gérer de sorte qu'ils sont en train d'être mis en file d'attente. Si ils sont en file d'attente trop longue sans avoir à retourner toutes les données qu'ils auront expiré.

Il n'y a pas de rapport idéal, j'ai peur, vous pourriez avoir une app de faire de 100 des demandes de seconde ayant besoin de nombreux processus web, mais n'a tout simplement pas faire usage de travailleurs. Vous avez seulement besoin de processus de travail si vous faites le traitement en arrière-plan, comme l'envoi d'e-mails, etc etc.

ps Carnet de commandes trop profonde serait un Dyno web, processus qui serait la cause.

Mise à JOUR: le 26 Mars 2013 Heroku retiré de la file d'attente et attendre les champs à partir du journal.

la file d'attente et attendre que les champs ont été retirés de router les messages du journal. Aussi, le Heroku routeur ne fixe plus X-Heroku-Dynamomètres À l'Utilisation, X-Heroku-Queue-de la Profondeur et de X-Heroku-File d'attente-le Temps d'Attente, les en-têtes HTTP pour les demandes entrantes.

15voto

Jimmy Cuadra Points 13499

Dynamomètres sont fondamentalement les processus qui s'exécutent sur votre instance. Avec la nouvelle Cèdre pile, ils peuvent être configurés pour exécuter n'importe quelle commande du shell. Pour les applications web, vous avez généralement un processus appelé "web", qui est chargé de répondre aux requêtes HTTP provenant des utilisateurs. Tous les autres processus sont ce qui était auparavant appelé "travailleurs". Ces fonctionner en continu en arrière-plan pour des choses comme le cron, le traitement des files d'attente, et de lourds calcul que vous ne voulez pas d'attacher votre processus web. Vous pouvez également modifier l'échelle de chaque type de processus, de sorte que de multiples processus de chaque type sera démarré pour plus de simultanéité. Le montant de chaque que vous utilisez dépend vraiment des besoins de votre application et de la charge qu'il reçoit. Vous pouvez utiliser des outils comme la Nouvelle Relique plugin pour surveiller ces choses. Jetez un oeil à des articles sur le Modèle de Processus et la Procfile dans Heroku du dev center pour plus de détails.

9voto

eblume Points 516

Un certain nombre de personnes ont mentionné qu'il n'existe pas de rapport et que le ratio des web workers pour "toile de fond" les travailleurs que vous voulez dépend de la façon dont vous avez conçu votre application, c'est correct. Cependant j'ai pensé qu'il pourrait être utile d'ajouter que comme une règle générale, vous souhaitez que votre site web - et donc les actions du contrôleur ils sont condamnés à être la vitesse de l'éclair et très léger, pour réduire la latence dans le temps de réponse du navigateur actions. Si il y a un navigateur d'action qui aurait besoin de plus que, disons, environ une demi-seconde de temps réel pour servir, alors vous aurez probablement envie d'architecte une sorte de système qui pousse à la plus grande partie de cette action sur une file d'attente.

Il vous faudra alors concevoir un hors-ligne travailleur dyno(s) qui sera au service de cette file d'attente. Ils peuvent prendre beaucoup plus de temps car il n'y a pas de réponses HTTP attente sur leur sortie. Peut-être que la page que vous avez rendus à partir de la première demande de navigateur qui ont poussé à l'action servira un peu de Javascript qui lance un thread qui vérifie si la demande a fini toutes les 5 secondes, ou quelque chose le long de ces lignes.

Je ne peux pas encore vous donner un ratio de travailler pour la même raison que d'autres ont donné, mais j'espère que cela vous aide à décider comment l'architecte de votre application. (Je devrais aussi mentionner que c'est juste une conception de nombreux valide.)

3voto

ChrisPhoenix Points 339

http://stackoverflow.com/a/19965981/1233555 - Heroku est allé à l'acheminement aléatoire, de sorte que certains des dynamomètres peut avoir des files d'attente de l'empilement (bien qu'ils remplissent une longue demande), tandis que d'autres dynamomètres sont gratuits. Éviter cela, assurez-vous que toutes les demandes sont traitées très rapidement dans votre site web des dynamomètres. Cela permettra de réduire le nombre de web des dynamomètres vous avez besoin, tout en exigeant plus travailleur des dynamomètres.

Vous avez également besoin de prendre soins de votre application web et de soutenir la concurrence, et que seuls certains Rails configs ne - essayez de la Licorne, ou soigneusement code écrit (pour les I/O qui ne bloque pas le EventMachine) avec de Fines.

Vous avez probablement essayer, plutôt que de calculer, pour voir combien de dynamomètres de chaque type que vous avez besoin. Assurez-vous de leur Nouvelle Relique rapports de la puissance de la file d'attente - voir le lien ci-dessus.

1voto

Neil Middleton Points 12203

Réponse courte est que vous avez besoin d'autant que vous avez besoin de garder vos files d'attente vers le bas.

Que Jean décrit, si vous commencez à voir une file d'attente dans les journaux, alors vous avez besoin de plus des dynamomètres. Si vous commencez à voir votre fond files d'attente devient trop longue (comment vous obtenir cette information dépend de ce que vous avez mis en œuvre), alors vous avez besoin de plus de travailleurs.

Il n'y a pas de rapport car il est très dépendante de la conception de votre application et d'utilisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X