web-dev-qa-db-fra.com

Comment puis-je déterminer le nombre d'IOP dont j'ai besoin pour ma base de données AWS RDS?

Je migre une partie d'une base de données mysql vers AWS. Les données en question sont écrites à 99% et chaque ligne a environ 1k de champs varchar, un datetime et 4 ints.

J'estime que nous aurons besoin de 20 à 25 000 enregistrements insérés/heure pendant les heures de pointe.

J'ai exécuté iostat -h sur la base de données actuelle, et il a rapporté environ 40 tps.

Comment déterminer le type d'IOPS dont j'ai besoin?

14
chris

Vous devrez le tester.

Vous pouvez effectuer certains calculs des enveloppes pour approximer le nombre d'E/S par insert, le multiplier par le nombre de transactions par seconde, ajouter dans une salle tampon, etc., mais il est beaucoup plus facile de simplement le tester.

La chose la plus simple à faire est d'allouer une meilleure estimation, puis de revenir en arrière et de l'augmenter ou de la diminuer pour qu'elle corresponde à vos tests réels. C'est l'un des luxes de l'utilisation d'un environnement basé sur le cloud, les changements matériels sont faibles en coûts d'investissement et ces changements ne nécessitent généralement que des mises à jour de configuration. Avec les volumes EBS, vous ne pouvez pas simplement augmenter le nombre d'IOPS, vous devez également augmenter la taille du volume 1 . Vous pouvez toujours simplement créer un nouveau volume et copier vos données. Il y aura des temps d'arrêt, mais si vos données ne sont pas énormes , cela ne devrait pas être beaucoup plus que ce serait une copie brute.

Voici une estimation du nombre d'E/S nécessaires. Encore une fois, c'est juste une supposition, car les détails dépendent du nombre d'index et de la fluidité ou de la fluidité de votre trafic. À 25 000 tx/heure, vous avez ~ 7 tx/s. La taille de chaque ligne n'est pas particulièrement pertinente car elle est inférieure à la taille d'une seule E/S (4K). Chaque transaction fera entre 1 et 5 IOP (insert principal plus quelques insertions d'arbre d'index), alors disons ~ 35/s.

Je dis commencer avec le strict minimum de 100 IOPS et évoluer si nécessaire.

11
sehrope

J'ai utilisé l'outil iostat de base (iostat -h) pour avoir une idée du nombre d'iops que j'utilisais actuellement. À partir de cela, j'ai extrapolé combien j'utiliserais si j'avais moins de 4 fois cette quantité de charge et j'allais avec cette quantité. Pour moi, cela a fonctionné à 780 IOPS, donc je suis allé avec 800 IOPS.

7
Mark D

J'utilise iostat pour déterminer la quantité d'IOPS que mon application effectue. iostat le signale comme tps. Ko/t vous aide à déterminer si le montant du transfert est inférieur à la taille du bloc, 256 Ko. J'exécute iostat avec un temps d'attente d'une seconde, c'est-à-dire iostat -w 1.

0
Prof Mo