Amazon RDS pour MySQL instance effectue très lent
J'ai publié mon site sur Amazon EC2 (région de Singapour) et j'ai utilisé MySQL RDS exemple pour le stockage de données. Tout fonctionne très bien sauf la performance.
J'ai l'impression que tous mes requêtes, spécialement instruction select, est très lente. Si je vérifie ce problème sur mon PC, il fonctionne très bien. Mais quand j'essaie d'obtenir des données à partir de RDS exemple, il est très lent. Certains des instructions select prend 2-3 secondes pour extraire des données.
J'ai bien à l'écoute de tous les index de table, et normalisé/de-normalisé tel que requis. J'ai fait tous les réglages nécessaires sur RDS personnalisée groupe de paramètres (par exemple. max_connection, tampon etc). Je ne sais pas si je suis absent quelque chose, mais il n'a pas travaillé pour moi - performance n'a pas augmenté.
Donc, quelqu'un peut-il m'aider avec ce problème?
- Juste pour comprendre.. Qui que vous utilisez?
- J'ai le même problème. J'ai essayé la configuration RDS avec un Numérique de l'Océan -- chargement de la page (invoqué DB), est passé de la moyenne de 1.8 s à 5,9 secondes. Donc, recréé l'ensemble de l'installation dans EC2 & RDS dans la même région/cluster et même fuseau horaire. - Je configurer la mise en cache.
Vous devez vous connecter pour publier un commentaire.
Il est intéressant de noter que, pour quelque raison que ce soit, MySQL query cache est DÉSACTIVÉE par défaut dans les RDS. Nous avons appris à la dure à nous cette semaine.
Ce ne sera pas aider à la performance de votre requête initiale, mais il peut accélérer les choses en général.
Pour ré-activer la mise en cache de requêtes:
query_cache_size
etquery_cache_type
(Disclaimer: je ne suis pas administrateur de base de données, donc il y a peut être des choses qui me manque ici)
Il est important d'avoir votre RDS et les instances EC2 pas dans la même région, mais dans la même zone de disponibilité afin de minimiser la latence.
J'ai eu une API hébergé en Irlande sur EC2 et déplacé la Base de données MySQL cluster en Virginie, etats-unis que nous avions mis en place pour un autre projet et l'aller-retour sur chaque requête SQL fait l'API inutilisable.
Pour moi, cela n'a rien à voir avec MySQL, mais plutôt le type d'instance, j'ai été sur
t2.medium
. Le problème est que j'ai couru hors de la CPU crédits en raison de la charge sur la DB était trop élevé et l'équilibre continué à aller vers le bas jusqu'à ce que finalement, j'avais beaucoup moins de crédits horaire puis en cas de besoin.Voici ce que j'ai vu dans RDS CloudWatch sous CPU Usage du Crédit:
Si vous avez le même problème, il peut être temps de passer à une autre instance. Voici la liste des types d'instances:
https://aws.amazon.com/rds/instance-types/
Espère que cette aide.
Abord, je recommande fortement de regarder au-dessus de ces requêtes à l'aide de
Vous pouvez en lire plus à ce sujet sur SHOW FULL PROCESSLIST
Cela va vous montrer le temps nécessaire à chaque requête prendre.
Ensuite, vous pouvez utiliser
Vous pouvez en lire plus à ce sujet sur EXPLIQUER
Cela va vous montrer si vous avez besoin d'une amélioration sur vos requêtes
RDS MySQL rendement peut être augmenté dans une des manières suivantes à condition que le système a de plus lire ratio:
Vous pouvez vérifier où la requête est en prenant le temps, en faisant usage de profilage. Utiliser la requête ci-dessous:
Il vous informera sur l'état de la requête et où la requête est de passer son temps. Si la somme de tous les temps retourné par le profilage est inférieur au temps d'exécution de la requête, alors peut-être que d'autres facteurs, comme la bande passante du Réseau peut en être la cause.