2016-01-20 1 views
2

Je m'attends à une forte augmentation du trafic demain (presse, etc) sur mon site. Je veux être capable de gérer le trafic sans qu'il ne baisse. Je sais que je dois ajouter des dyno et le coût n'est pas trop prohibitif, car il est seulement temporaire de garder la file d'attente vers le bas.Ajouter Dyno temporaire pour Spike dans le trafic sur mon site (Heroku Rails App)

J'utilise New Relic Add-On pour surveiller

Ce poste est vraiment utile: https://serverfault.com/questions/394602/how-to-prepare-for-a-huge-spike-in-traffic-for-launching-a-website-hosted-on-her

Cependant, après avoir lu ce poste et verser sur Heroku docs Je n'ai pas été en mesure de comprendre comment je fait Pour ce faire ...

Quelle commande puis-je exécuter ou à partir de quelle interface puis-je lancer un nouveau dyno pour gérer le trafic Web ajouté? Puis, avec quelle commande puis-je exécuter ou à partir de quelle interface est-ce que j'élimine ce dyno supplémentaire quand le trafic est revenu à des niveaux normaux? Heroku parle d'un tas de différents types de dyno, etc, mais je n'ai aucune idée de celui que je suis censé utiliser et comment en créer un nouveau.

Répondre

1

Heroku a un platform-api gem qui vous sera utile dans ce cas. Ajoutez d'abord la gemme à votre Gemfile et installez-le.

gem platform-api 

Une fois installé, la configuration du client Heroku, de préférence dans un initialiseur

$heroku = PlatformAPI.connect(ENV['HEROKU_API_KEY', default_headers: {'Accept' => 'application/vnd.heroku+json; version=3'}) 

Vous pouvez trouver comment obtenir une API Heroku KEY here

Maintenant, la partie de mise à l'échelle. Je suppose que vous avez des métriques internes pour décider quand mettre à l'échelle (par le nombre de processus, le nombre de requêtes, etc.). La commande ci-dessous échelle le nombre de dynos dont vous avez besoin,

$heroku.formation.update(APP_NAME, PROCESS_NAME, {quantity: DYNO_COUNT}) 

Cela échelle le processus spécifié de l'application pour un nombre X de dynos chaque fois que nécessaire.

Vous pouvez utiliser la même commande pour réduire le nombre de dynos. En outre, au-dessous commande vous aider à obtenir le nombre de dynos actuellement provisionnés pour un processus particulier

info = $heroku.formation.info(APP_NAME, PROCESS_NAME) 
info['quantity'] 

Pour obtenir le nombre de TOUS dynos provisionnés à votre application, utilisez

$heroku.app.info(APP_NAME) 

EDIT:

Si vous préférez le faire manuellement, vous pouvez le faire dans le tableau de bord du heroku lui-même. Ou si vous préférez la ligne de commande, installez heroku toolbelt et ci-dessous est la commande pour la mise à l'échelle de l'application.

heroku ps:scale process_name=dyno_count -a app_name 

Pour obtenir la liste des dynos provisionnée

heroku ps -a app_name 
+0

Est-il possible de le faire manuellement comme je surveille les nouveaux numéros de relique? – Javier

+0

Je préférerais ne pas l'automatiser pour ça maintenant. Peut-être en bas de la ligne mais à ce stade, je veux juste un contrôle manuel. – Javier

+0

Mis à jour par la réponse, y compris les étapes manuelles. – avinoth