2012-07-27 4 views
2

J'écris une application PHP qui utilise MySQL dans le backend. Je m'attends à environ 800 utilisateurs par seconde sur nos serveurs, avec des demandes provenant d'une application iOS. L'application est répartie sur environ 8 scripts PHP diffrenet qui font des requêtes SELECT très simples (parfois avec 1 jointure) et des requêtes INSERT simples où j'insère seulement une ligne à la fois (avec moins de 10kb de données par rangée en moyenne). Theres sur une répartition 50/50 entre SELECTS et INSERTS. Le but est d'utiliser Amazon Web Services et d'héberger l'application sur EC2s pour répartir la charge du processeur et RDS (avec MySQL) pour gérer la base de données, mais je suis conscient que RDS ne passe pas à l'échelle supérieure. Donc, avant de m'engager dans une solution AWS, j'ai besoin de comparer mon application sur notre serveur de développement (pas un million de miles de la solution RDS) pour voir approximativement combien de requêtes mon application et MySQL peuvent supporter (pour les chiffres approximatifs) - avant de faire un benchmark réel sur AWS lui-même. Je crois que je n'ai vraiment besoin que de tester la performance des requêtes dans PHP, car EC2 devrait gérer la charge du processeur, mais j'ai besoin de voir si/comment RDS (MySQL) se débrouille sous ce nombre d'utilisateurs.Performance testant mon application PHP/MySQL pour AWS

Tout conseil sur la façon de gérer cette situation serait apprécié.

Merci d'avance!

Répondre

0

Avez-vous envisagé d'utiliser Apache Benchmark? Devrait faire le travail ici. J'ai aussi entendu de bonnes choses à propos de siege mais je n'ai pas encore testé.

+0

J'ai roulé avec Siege et CurlLoader à la fin. Merci! – Schodemeiss

0

Si vous avez 800 appels d'utilisateurs par seconde, il peut être judicieux de considérer le sharding pour commencer. Concevoir et implémenter le sharding dès le début vous permettra de commencer avec un petit nombre d'hôtes, puis de l'étendre plus facilement plus tard. Si vous concevez pour un seul serveur, même si pour l'instant il gèrera la charge, vous devrez bientôt l'augmenter et il sera beaucoup plus complexe de passer à une architecture de partitionnement lorsque l'application est déjà en production.