Que signifie IOPS (en Amazonie EBS) dans la pratique?

j'ai quelques images nécessaires pour une application. Il y a beaucoup d'images (50.000+) mais la taille globale est petite (40 Mb). Au départ, j'ai pensé que J'utiliserais simplement S3 mais il est douloureusement lent à télécharger. Comme solution temporaire, j'ai voulu joindre un EBS contenant les images et ce serait très bien. Cependant, en lisant un peu à propos d'EBS General Purpose (gp2) j'ai remarqué la description suivante:

GP2 est le type de volume EBS par défaut pour les instances EC2 D'Amazon. Ils les volumes sont soutenus par des disques à l'état solide (Ssd) et sont adaptés pour un large gamme de charges de travail transactionnelles, y compris le dev / test environnements, applications interactives à faible latence et volumes d'amorçage. GP2 est conçu pour offrir des latences de millisecondes à un chiffre,livrer un performance de base cohérente de 3 IOPS / GB jusqu'à concurrence de 10 000 IOPS, et fournissent jusqu'à 160 MB/s de débit par volume.

c'est cette quantité de 3 IOPS/GB qui m'inquiète. Ce n' ce que cela signifie dans la pratique? Supposons que vous ayez besoin d'un site de commerce électronique pour un petit nombre d'utilisateurs (p. ex. < 10 000 demandes par minute) et que ces images doivent être récupérées. Amazon décrit comment IOPS sont mesurés:

lorsque les petites opérations d'e / s sont physiquement contiguës, Amazon EBS tente de les fusionner en une seule entrée/sortie jusqu'à la taille maximale. Pour par exemple, pour les volumes SSD, une seule opération d'E/S de 1 024 KiB compterait comme 4 opérations, tandis que 256 Les opérations d'E/S à 4 KiB compteraient pour 256 opérations.

est-ce que cela signifie que si je veux récupérer 50 images de 10kB chacune en moins d'une seconde, j'aurais besoin de 50 IOPS et facilement dépasser la ligne de base de 3 IOPS?

UPDATE:

grâce à la suggestion de Mark B, j'ai pu utiliser S3 pour télécharger mes fichiers. Cependant, je me demande encore quelle quantité de IOPS est nécessaire pour effectuer des tâches communes telles que l'exécution d'une base de données ou servir d'autres fichiers pour une application web. Je serais heureux d'entendre quelques valeurs de référence concernant les valeurs minimales de IOPS basé sur votre expérience.

18
demandé sur Robert Smith 2016-05-05 21:48:40

2 réponses

il manque le " / GB" une partie de cette déclaration. La ligne de base est 3 IOPS par GB. Si votre volume EBS est de 100 Go, alors vous aurez une ligne de base de 300 IOPS. Pour un volume EBS GP2 vous devez multiplier la taille du volume par 3 pour obtenir le IOPS.

notez que tout volume GP2 inférieur à 1TB peut aussi éclater à une vitesse de 3000 IOPS, donc toute augmentation limitée de IO devrait quand même donner de très bons résultats.


aussi, je vais ajouter que S3 sonne comme un meilleur ajustement pour votre cas d'utilisation. Si vous voyez lente vitesse de téléchargement de S3, c'est un problème qui peut être résolu. Vous pouvez utiliser CloudFront pour fournir un emplacement de bord à proximité que vous pouvez télécharger.

D'après mon expérience, les uploads vers S3 ne sont jamais plus lents que les uploads vers une instance EC2 à laquelle votre volume EBS serait attaché.


mise à Jour:

pour répondre à votre question supplémentaire, le minimum IOPS nécessaire dépendra de nombreuses variables telles que la quantité de RAM disponible, le type d'application que vous exécutez, la qualité des caches de l'application en mémoire, la taille moyenne de vos opérations IO, etc. Il est vraiment difficile de déterminer un nombre exact et de déclarer que vous avez besoin exactement X IOPS pour une application.

vous devez également vous rappeler que tout volume inférieur à 1TB dans la taille peut encore éclater jusqu'à 3000 IOPS pendant plusieurs secondes. Donc, même si votre application a besoin de IOPS élevé quand il est utilisé, s'il ne voit pas beaucoup d'usage, la fonction IOPS burst pourrait être tout ce dont il a besoin.

en général je commence habituellement avec quelque chose comme un volume de 100 Go avec 300 IOPS et tester la performance de mon application contre cela. Un serveur web qui fonctionne entièrement en RAM pourrait ne jamais avoir besoin de plus que cela. Pour quelque chose comme une base de données, vous commenceriez probablement avec la quantité d'espace disque que vous pensez que vous aurez besoin et ensuite commencer les tests de performance. CloudWatch montrera le quantité de IOPS que votre application utilise, et si vous le voyez maxer aux limites de votre volume alors vous savez que vous devez augmenter les IOPS disponibles. Rincez et répétez jusqu'à ce que vous ne maximisiez plus les IOPS disponibles lors de vos tests de performance.

12
répondu Mark B 2016-05-20 21:03:47

la réponse de@Mark B est probablement correcte, en ce qu'elle indique que vos IOP sont basés sur la taille de votre volume EBS. Pour ce que vous voulez, S3 est la meilleure option.

mais en fonction de votre cas d'utilisation et de vos besoins, EBS peut être nécessaire. Cela est particulièrement vrai si vous souhaitez exécuter une base de données. Dans ce cas, vous avez deux options.

vous pouvez obtenir des IOPS fournis - si vous savez que vous avez besoin de 5000 IOPS, mais seulement besoin de 100 Go de stockage (qui avec gp2 serait normalement vous fournir avec environ 300 IOPS), vous pouvez utiliser des volumes io1. Il y a un coût supplémentaire à cela, et vous voudrez vous assurer qu'il est attaché à une instance optimisée EBS, mais vous pouvez obtenir jusqu'à 20k IOPS si nécessaire.

Si vous faites beaucoup de lectures séquentielles (lecture dans un grand ensemble de données? puis il y a un nouveau type de EBS, st1. C'est bon pour 500MB/s, et est moins de la moitié du coût de gp2.

enfin, il y a un autre scénario que vous pourriez considérer (disons, vous êtes un peu un fou, et veulent essayer de faire des choses étranges). Si vous pouvez récupérer une archive de quelque part, et que tout ce qui vous intéresse est de la servir à partir d'un système de fichiers très rapide, vous pouvez la mettre sur une instance qui a du stockage d'instance. C'est un SSD attaché localement, donc c'est très rapide. Le seul inconvénient est que lorsque votre instance s'arrête, vous données ont disparu.

pour répondre à votre mise à jour, "combien de IOPS avez-vous besoin pour une base de données", la réponse est "cela dépend". Chaque moteur de base de données différentes exigences, et chaque utilisation de base de données a des modèles d'utilisation différents. Jetez un oeil à si vous souhaitez plus d'informations. Mais, fondamentalement, de test et de moniteur. Si vous êtes inquiet, sur la provision au lancement, et réduire au besoin. Ou Devinez, et augmentez si vous rencontrez des problèmes - est-il plus important de minimiser les coûts, ou fournir une bonne performance à vos utilisateurs finaux?

3
répondu chris 2017-04-13 12:42:39