Le web dyno contre le worker dyno? Combien/quel rapport ai-je besoin?

J'étais curieux de savoir quelle était la différence entre le web et les dynos ouvrières sur Heroku. Ils donnent une explication d'une phrase sur leur page de prix, mais cela m'a juste laissé confus. Comment savoir combien en choisir? Est-il un ratio je devrais viser? Je suis assez nouveau à ce truc, donc quelqu'un peut donner une explication en profondeur, ou peut-être une sorte de façon que je puisse calculer combien et quel genre de dynos j'aurais besoin?

aussi, je suis confus sur ce qu'ils veulent dire par le nombre d'heures pour chaque puissance.

http://www.heroku.com/pricing

je suis aussi arrivé sur cet article. Comme l'une de leurs solutions suggérées, ils ont dit d'augmenter la quantité de dynos. De quel type de dyno s'agit-il?

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

79
demandé sur varatis 2011-12-08 08:40:31

5 réponses

votre meilleure indication si vous avez besoin de plus de dynos (processus aka sur le cèdre) est vos rondins heroku. Assurez-vous que vous mettez à jour vers la journalisation étendue (c'est gratuit) de sorte que vous pouvez adapter votre log.

vous cherchez l'héroku.les entrées de routeur et la valeur que vous êtes le plus intéressé est la valeur de la file d'attente - si elle est constamment supérieure à 0, alors c'est un bon signe que vous avez besoin d'ajouter plus de dynos. Essentiellement, cela signifie qu'il y a plus de demandes à venir que votre processus peut traiter ainsi ils sont en train d'être mis en file d'attente. S'ils font la queue trop longtemps sans retourner aucune donnée, ils seront chronométrés.

il n'y a pas de ratio idéal, je le crains, vous pourriez avoir une application faisant 100 requêtes par seconde nécessitant de nombreux processus web, mais ne fait tout simplement pas appel à des travailleurs. Vous n'avez besoin de processus worker que si vous faites du traitement en arrière-plan comme envoyer des e-mails, etc.

PS arriéré trop profond serait un processus Dyno web qui en serait la cause.

mise à jour: le 26 mars 2013, Heroku a supprimé la file d'attente et les champs d'attente du log out put.

La file d'attente

et les champs d'attente ont été supprimés des messages de journal de routeur. Aussi, le Heroku routeur ne fixe plus X-Heroku-Dynamomètres À l'Utilisation, X-Heroku-Queue-Depth et X-Heroku-Queue-Wait-Time les demandes entrantes.

56
répondu John Beynon 2013-06-17 07:04:49

Dynos sont essentiellement des processus qui fonctionnent 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 responsable de répondre aux demandes HTTP des utilisateurs. Tous les autres processus sont ce qu'on appelait auparavant les "travailleurs"."Ceux-ci fonctionnent en arrière-plan continu pour des choses comme cron, les files d'attente de traitement, et tout calcul lourd que vous ne voulez pas attacher votre web processus. Vous pouvez également mettre à l'échelle chaque type de processus, de sorte que plusieurs processus de chaque type seront démarrés pour une concurrence supplémentaire. 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 le nouveau plugin Relic pour surveiller ces choses. Jetez un coup d'oeil aux articles sur le modèle de processus et le Procfile dans le dev center de Heroku pour plus de détails.

15
répondu Jimmy Cuadra 2011-12-08 08:40:05

un certain nombre de personnes ont mentionné qu'il n'y a pas de rapport connu et que le rapport des travailleurs du web aux travailleurs 'background' que vous voulez dépend de la façon dont vous avez conçu votre application - qui est correcte. Cependant, j'ai pensé qu'il pourrait être utile d'ajouter qu'en règle générale, vous voulez que vos travailleurs web - et donc les actions du contrôleur qu'ils servent - soient lightning quick et très léger, pour réduire la latence dans les temps de réponse du navigateur action. S'il y a une action de navigateur qui nécessiterait plus que, disons, environ une demi-seconde de temps réel pour servir, alors vous voudrez probablement concevoir une sorte de système qui pousse la majeure partie de cette action sur une file d'attente.

vous concevez alors un ou plusieurs dyno(s) de travailleur hors ligne qui serviront cette file d'attente. Ils peuvent prendre beaucoup plus de temps parce qu'il n'y a pas de réponses HTTP en attente sur leur sortie. Peut-être que la page que vous avez rendue à partir du navigateur initial demande que si vous appuyez sur l'action, Javascript servira à lancer un thread qui vérifie si la requête est terminée toutes les 5 secondes, ou quelque chose du genre.

Je ne peux toujours pas vous donner un ratio à travailler avec pour la même raison que d'autres ont donné, mais espérons que cela vous aide à décider comment concevoir votre application. (Je devrais aussi mentionner que c'est juste une conception de nombreux valables.)

9
répondu eblume 2012-03-31 02:59:13

https://stackoverflow.com/a/19965981/1233555 - Heroku est allé à l'acheminement aléatoire, de sorte que certains dynos peuvent avoir des files d'attente empilées vers le haut (alors qu'ils servent une longue demande) tandis que d'autres dynos sont libres. Évitez cela en vous assurant que toutes les requêtes sont traitées très rapidement dans vos dynos web. Cela permettra de réduire le nombre de dynos web dont vous avez besoin, tout en exigeant plus de dynos ouvrières.

vous devez également vous soucier de votre application Web supportant la concurrence, ce que seuls quelques Rails configs font-essayez Unicorn, ou du code soigneusement écrit (pour les e/s qui ne bloquent pas L'EventMachine) avec Thin.

vous devez probablement essayer, plutôt que de calculer, pour voir combien de dynos de chaque type vous avez besoin. Assurez - vous que leur nouvelle relique signale la file d'attente dyno-voir le lien ci-dessus.

3
répondu ChrisPhoenix 2017-05-23 11:46:28

courte réponse est que vous avez besoin d'autant que vous avez besoin pour garder vos Files d'attente vers le bas.

comme le décrit John, si vous commencez à voir une file d'attente dans vos logs, alors vous avez besoin de plus de dynos. Si vous commencez à voir vos Files d'attente de fond de trop longtemps (comment vous obtenez 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 ratio car il est très dépendant de la conception et de l'utilisation de votre application.

1
répondu Neil Middleton 2011-12-08 15:59:37