9 votes

Une requête MySQL très lente sur Amazon RDS mais très rapide sur mon ordinateur portable ?

Je viens de migrer vers Amazon RDS pour notre site web et notre requête la plus importante, qui prend 0,2 seconde à exécuter sur mon macbook, prend 1,3 seconde à exécuter sur l'instance RDS la plus chère.

J'ai évidemment désactivé le cache des requêtes (et testé cela) sur mon ordinateur local et les deux bases de données sont exactement les mêmes. InnoDB, les deux ont les mêmes index, etc. Cela nous coûte une fortune (2 000 $ par mois) pour l'instance RDS la plus rapide et je perds rapidement confiance.

0 votes

1,3 seconde à partir d'une instance EC2 ou 1,3 seconde à partir de votre ordinateur portable ? Je soupçonne une latence entre vous et RDS, c'est pourquoi vous devriez vraiment utiliser RDS pour soutenir les instances EC2.

0 votes

Bonjour Eric, c'est 1,3 seconde depuis mon instance EC2 utilisant RDS et 0,2 seconde depuis mon ordinateur portable utilisant une version locale de MySQL, ce qui me surprend !

0 votes

Nous hébergions notre site web à Brisbane, en Australie, et il fonctionnait très rapidement sur de vieux serveurs Dell. Après le déménagement, le lancement d'une instance EC2 rapide, la configuration identique de PHP, etc. et l'utilisation du RDS dans la même région, il fonctionne très lentement. Le RDS semble être le goulot d'étranglement, fonctionnant à environ 60% de CPU sur le RDS le plus cher que nous puissions obtenir.

2voto

Jason Floyd Points 1612

Essayez d'expérimenter avec le Provision IOPS que RDS offre. Quelle que soit la taille de l'instance, les entrées-sorties sont limitées et vous pouvez utiliser les paramètres Provision IOPS, moyennant un coût supplémentaire, pour améliorer les performances des entrées-sorties.

Vous pouvez provisionner jusqu'à 3 To de stockage et 30 000 IOPS par instance de base de données. Pour une charge de travail comprenant 50 % d'écritures et 50 % de lectures sur une instance m2.4xlarge, vous pouvez atteindre 25 000 IOPS pour Oracle et 12 500 IOPS pour MySQL. Cependant, en provisionnant jusqu'à 30 000 IOPS, vous pouvez obtenir une latence plus faible et un débit plus élevé. Le nombre d'IOPS que vous réalisez peut varier par rapport à celui que vous avez provisionné, en fonction de la charge de travail de votre base de données, du type d'instance et du moteur de base de données choisi. Reportez-vous à la section Facteurs qui affectent les IOPS réalisés du Guide de l'utilisateur d'Amazon RDS pour en savoir plus.

Vous pouvez passer d'un stockage standard à un stockage IOPS provisionné et bénéficier d'un débit constant et de faibles latences d'E/S. Ce faisant, vous rencontrerez un court impact sur la disponibilité. Vous pouvez faire évoluer indépendamment les IOPS (par incréments de 1000) et le stockage à la volée, sans temps d'arrêt. Le rapport entre les IOPS provisionnées et le stockage demandé (en Go) doit être compris entre 3 et 10. Par exemple, pour une instance de base de données avec 1 000 Go de stockage, vous pouvez provisionner de 3 000 à 10 000 IOPS. Vous pouvez augmenter ou diminuer les IOPS en fonction de facteurs tels que la variabilité saisonnière du trafic vers vos applications.

Provision IOPS d'AWS RDS

0voto

WillS Points 101

La principale raison devrait être la latence entre votre ordinateur et l'instance Amazon RDS. Où êtes-vous basé ? Si vous êtes aux États-Unis, assurez-vous d'utiliser RDS dans la région US-East ou US-West. Si vous êtes en Europe, au Japon ou en Asie, il existe également des régions.

0 votes

Bonjour Simone, merci de m'avoir répondu. Je suis vraiment inquiet car nous avons dépensé beaucoup d'argent pour passer à AWS et nous avons du mal à le faire ! Le RDS et l'EC2 sont dans la même région et la même zone, donc je ne pense pas que je devrais avoir de la latence ? Les deux sont en ap-southeast-1b. Les deux sont en ap-sud-est-1b. Y a-t-il quelque chose que je devrais faire pour vérifier la latence entre eux ?

0 votes

P.S. - Est-ce que c'est Simone de l'amazon cloud tour ?

0voto

Pianosaurus Points 1734

J'ai eu un problème similaire sur une instance de serveur Rackspace. Les requêtes mettaient des heures à s'exécuter, même avec Innodb configuré au mieux. J'ai fini par passer au produit de base de données dédié proposé par Rackspace. Je pense que les services à forte intensité de disque, tels que les bases de données, ne se développent pas aussi bien sur les serveurs virtualisés où les disques sont partagés entre plusieurs instances. D'une manière générale, il semble que l'on s'accorde à dire que mysql fonctionne mieux sur une infrastructure bare metal ou autre optimisée pour les bases de données. Je peux me tromper, mais c'est la conclusion à laquelle je suis arrivé.

0voto

Fariman Kashani Points 113

Le cache des requêtes MySQL est désactivé par défaut dans RDS. Cela n'améliorera pas les performances de votre requête initiale, mais cela peut accélérer les choses en général.

Vous pouvez définir query_cache_type a 1 et définir une valeur pour query_cache_size . J'ai aussi changé le thread_cache_size de 8 à 24 ans et innodb_io_capacity de 200 à 1900, mais je ne sais pas si ça vous aide.

Créer également Groupes de paramètres de la base de données AWS m'a beaucoup aidé à configurer et à régler les variables de la DB.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X