Je travaille actuellement sur du code lourd Ajax et je me demande comment mon serveur évoluera au fur et à mesure que de plus en plus d'utilisateurs commenceront à utiliser mon application web. C'est seulement sur mon serveur de test interne pour le moment et je me demandais comment je pourrais simuler quelques centaines ou milliers d'utilisateurs pour que je puisse voir comment il gère une charge plus lourde. Il est écrit en PHP/MySQL et je ne voulais vraiment pas trouver des centaines d'ordinateurs à configurer et à tester manuellement :) Merci d'avance, tout conseil ou conseil est très apprécié.Test du code Scales
Répondre
Apache Benchmark. Il est livré avec Apache Web Server. Fonctionne un peu comme ceci: Pour 100 demandes à l'aide de 10 threads simultanés, utilisez cette commande:
ab -n 100 -c 10 http://localhost/
Remplacer l'url localhost avec une url que votre code AJAX appellera. La sortie vous donnera un bon rapport sur la façon dont les demandes ont été traitées. Certains des chiffres intéressants sont:
Complete requests
Failed requests
Requests per second
Ce que je l'ai fait, ce qui donnera une idée très approximative, est d'écrire une application qui peut créer des dizaines ou des centaines de fils, et a frappé au hasard des dizaines de serveurs de fois chaque , avec des utilisateurs uniques. Donc, j'avais 100 utilisateurs de test uniques, et je voudrais créer 100 threads et juste continuer au hasard à faire quelques opérations à des intervalles aléatoires.
Cela vous dira si vous avez des problèmes d'échelle. En fin de compte, vous aurez un problème, car vous avez seulement une connexion réseau, ce qui ralentira la vitesse, donc ce n'est pas parfait.
Vous pouvez également utiliser junitperf pour vous aider, car vous pouvez ensuite vérifier si chaque test prend trop de temps à répondre. Le meilleur moyen est de faire ces tests, de les mettre sur autant de machines que possible et de les faire fonctionner en même temps, pour avoir 10 ordinateurs prétendant être 10 ou 100 personnes, c'est plus efficace qu'un ordinateur prétendre être chacun de ces gens.
Vous ne voulez pas que le serveur Web et les tests soient sur le même ordinateur, sinon cela gâcherait sérieusement les résultats car le serveur Web n'obtiendra que quelques cycles du processeur.
Compte tenu de ce problème, je voudrais enregistrer une session utilisateur. Ensuite, écrivez le code client qui reproduit cet ensemble d'appels.
Une autre option serait d'utiliser VMware. (note, je suis un employé) Il suffit de créer un tas de machines virtuelles et se connecter à votre site avec chacun d'eux. Cela signifie encore beaucoup de travail manuel, mais au moins vous n'avez pas besoin d'autant de machines pour faire les tests.
Je recommande LoadUI http://www.loadui.org/
- 1. Test du code transactionnel
- 2. Unité/Intégration Test du code utilisant HttpCurrentContext
- 3. Test si stocké Procs "Parse"/"Compiler" à partir du code
- 4. Test du code .NET dans des environnements de confiance partielle
- 5. MbUnit - Échec du test/résultat du test dans TestFixtureTearDown
- 6. Test Impact sur le changement de code
- 7. Le code fonctionne mais le test échoue
- 8. Test d'intégration Code C++ de NUnit dans le code managé
- 9. Test de code unitaire qui appelle VirtualPathUtility.ToAbsolute
- 10. Test du 'Ctrl' du clavier en C#
- 11. Comment planifier l'heure du test
- 12. Test du kit iPhone Store
- 13. Test utilisateur du site Web
- 14. Test du logo Windows 7
- 15. Comment accélérer l'exécution du test de grails
- 16. Test du site Web ASP.NET MVC
- 17. Code de test unitaire qui envoie des messages JMS
- 18. Test de l'unité iPhone - Erreurs du lieur
- 19. débogage du code Python
- 20. Perl: Blocage du signal PAS retardé comme il se doit -> Code de test fourni
- 21. Exécuter le code à la fin du module/classe, comme le test/unité de Ruby
- 22. Performances différentes entre Java et le code C# lors du test de l'URL
- 23. Débutant au test de code Python, besoin d'aide!
- 24. Test d'un Container.DataItem avec le code en ligne
- 25. Étendre xUnit.NET pour utiliser du code personnalisé lors du traitement d'une classe et de la localisation des méthodes de test
- 26. Test du contrôleur RSpec - réponse vide.body
- 27. Paramètres du navigateur/Test de capacité Page
- 28. Détection du lecteur de test de flash
- 29. Attirer les "Bons" utilisateurs du test bêta
- 30. Test du câblage de la cible-action
Dans la même veine que 'ab', il y a Tsung - http://tsung.erlang-projects.org/ Je l'ai utilisé et il est un outil fantastique. – inerte