J'ai une instance RDS qui me coûte beaucoup d'argent. D'après l'activité de mon compte sur Amazon, je constate que l'instance a reçu environ 800 000 000 de demandes d'E / S au cours des 7 derniers jours.
Pour vous donner un peu de perspective, mon application ne reçoit qu'environ 6 000 visites uniques par jour et ne fait pas autant de connexions à la base de données.
Alors, quelle est exactement une demande d'E / S, et pourquoi ce nombre serait-il si surnaturel? Je suis prêt à faire tout ce qu'il faut pour mon application pour réduire ce coût si nécessaire, mais je ne suis pas sûr de ce qui se passe réellement.
J'apprécierais vos pensées.
mysql
io
amazon-rds
Abe
la source
la source
Réponses:
Ah, Amazon Web Services. L'un des plus gros puits d'argent disponibles. Très bon, mais pas toujours bon marché. En fait, presque jamais bon marché et toujours difficile d'estimer les dépenses.
Une demande d'E / S est une opération sur disque. Qu'il s'agisse d'une lecture ou d'une écriture, vous êtes essentiellement chargé de la quantité de données que vous retirez de leur système. C'est fou.
Vous pouvez estimer les demandes d'E / S que vous effectuez en consultant iostat.
800 000 000 IOrequests en 7 jours .. C'est ~ = 1300 IOPS. Sensationnel. Voilà des performances incroyablement rapides.
Si vous voulez vraiment réduire ce que cela vous coûte, il serait peut-être temps de voir si RDS est vraiment le mieux adapté à votre budget d'application et de projet.
Si vous n'avez que 6 000 visites par jour, vous pourriez améliorer les coûts et les performances avec un serveur dédié (de préférence 2 d'entre eux, un pour la base de données, un pour les services Web). Il est en fait un peu plus difficile de passer cet appel car vous n'en avez pas trop dit sur votre application.
la source
Les «services cloud» ne signifient pas que des choses vont vous coûter des sous. Fondamentalement, une demande d'E / S est tout (c'est-à-dire une base de données ou une page d'index) qui doit être récupéré à partir du disque. Si vous avez une grande base de données et des requêtes utilisant des analyses de table complètes, cela n'est pas surprenant. Vous pouvez envisager de rechercher des requêtes à l'aide de colonnes non indexées pour le filtrage en activant l' option de journalisation des requêtes "non indexées" dans le journal lent MySQL et en ajoutant des index pour les colonnes appropriées. Comme vous n'avez pas la possibilité de modifier directement le fichier de configuration, utilisez la configuration du groupe de paramètres RDS pour définir
log-queries-not-using-indexes
et interroger lamysql.slow_log
table pour les entrées de journal.En outre, envisagez d'exécuter le script d'amorçage de l'optimisation MySQL à partir de votre instance AWS sur l'instance de base de données pour une analyse générale des performances pour voir si une instance plus importante aiderait les choses en raison d'une plus grande quantité de mémoire disponible pour la mise en cache, allégeant ainsi la charge sur le disque. Le script évalue un certain nombre de paramètres de configuration et de compteurs de performances pour fournir des informations sur les goulots d'étranglement possibles et fournir des recommandations génériques.
la source
&
à son code. De toute évidence, personne ne l'avait jamais profilé.)