2009-09-05 7 views
5

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

11

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 
+0

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

0

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.

0

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.

Questions connexes