2017-06-20 3 views
3

J'ai une application utilisant DynamoDB et j'ai remarqué qu'ils ont juste implémenté l'autoscaling qui est génial. J'aime le concept et le timing de mon application est plutôt parfait. Cependant, je reçois encore quelques problèmes que je me demande si je ne peux pas modifier les paramètres à supprimer.DynamoDB AutoScaling encore étranglements

Mon application obtient des pics d'utilisation précis, donc je pense que c'est une chose idéale à utiliser, mais avec l'autoscaling, je suis encore en train de ralentir. Voici mes graphiques de lecture pour les 12 dernières heures: autoscaling

Comme vous pouvez le voir, quand il cloue l'utilisation est bas, il étrangle pendant une minute ou deux jusqu'à ce que la mise à jour entre en jeu, puis fonctionne. C'est bon je suppose et mieux que pas de mise à l'échelle, mais je voudrais qu'il ne pas étrangler du tout ...

Est-il possible de dire à DynamoDB de ne jamais étrangler à moins qu'il ne dépasse 100 (ou 200 ou tout ce que je définis comme la limite supérieure)? Juste si elle subit une montée subite augmenter le débit pendant 15 minutes ou quoi que ce soit jusqu'à ce que la montée subite est terminée?

+0

Bien sûr - augmentez votre capacité minimale. :) En parlant de cela, quelles valeurs utilisez-vous pour cela et pour votre seuil cible? Sérieusement, bien sûr, vous ne pouvez pas utiliser une capacité qui n'existe pas réellement. En outre, il semble que vous effectuez beaucoup de numérisation, ce qui est relativement coûteux en termes de consommation de capacité. –

+0

ha, bien vrai je suppose mais le but était d'éviter les coûts supplémentaires :). J'ai été fixé à 5 minimum, 200 maximum, et 70% cible d'utilisation. Je suis passé à 50% d'utilisation pour voir ce que ça fait ... Je vais regarder mon code et voir ce que je peux faire de balayage excessif, merci pour le conseil ... – sfaust

Répondre

1

Autoscaling utilise CloudWatch. Vous pouvez voir ces alarmes en accédant au tableau de bord CloudWatch et rechercher les alarmes qui incluent votre nom de table et "NE PAS MODIFIER OU SUPPRIMER" dans la description. Pourquoi est-ce que je vous dis cela?

Eh bien, le CloudWatch a une certaine granularité de période minimale. Actuellement c'est 1 minute. Cela signifie qu'il attendra au moins 1 minute avant de déclencher un événement à ses auditeurs. Par conséquent, il faudra au moins une minute après le démarrage de la charge pour augmenter la capacité. En fait, ce sera encore plus, car l'augmentation de la capacité prend aussi du temps. Bottom line: si vous avez un très grand pic, certaines requêtes peuvent être limitées, puisque la mise à l'échelle automatique ne sera pas encore effective et bursting peut être épuisée.

La solution simple mais coûteuse augmentera la capacité initiale.

Si vous connaissez le pic à venir à l'avance (par exemple, si vous exécutez une tâche périodiquement ou si vous atteignez des pics de clients à certains moments), vous pouvez utiliser API pour modifier automatiquement la mise à l'échelle automatique.

+0

Hm. L'API peut être idéale puisque j'avais un script précédent pour changer le débit sur des minuteurs spécifiques, il est possible que je puisse simplement changer l'autoscaling sur les mêmes périodes. Cependant, les exemples sont tous Java, savez-vous si c'est Java seulement maintenant ou pouvez-vous faire cela avec PHP? Je ne vois aucune des classes autoscaling dans l'API PHP ... – sfaust

+0

Je suis à peu près sûr qu'il n'y a pas de support PHP direct. Vous pouvez utiliser AWS CLI. Je ne suis pas vraiment en PHP, mais pouvez-vous invoquer CLI de PHP? J'ai utilisé cette approche pour mes scripts. – Tarlog

+0

Hmm, pas sûr. J'ai aussi un hébergeur donc je ne sais pas si je peux installer CLI sur mon hébergeur ... Merci pour l'idée, cependant, de vérifier dans ... – sfaust