Quels sont les moyens de trouver les goulots d'étranglement dans une application web?
Comment puis-je comparer les performances de mes applications web?
Est-il un moyen de trouver les goulots d'étranglement dans une application web?
EDIT: je ne demande pas à propos de tout avant la fin de réglages comme les images, les css etc. Ce que je veux savoir, c'est comment le profil de l'extrémité arrière de l'application, de sorte que je ne sais qui, des méthodes de requêtes à modifier pour augmenter les performances.
Vous devez vous connecter pour publier un commentaire.
Concernant les goulets d'étranglement sur le serveur d'applications, vous pouvez utiliser un outil de profilage de de voir comment beaucoup de temps est passé dans chaque partie de votre code, la quantité de mémoire utilisée, etc. Pour PHP, webgrind semble être populaire, basé sur l'interface façon de profilage. Quelque chose comme dotTrace ferait la même chose pour un ASP.NET app. Notez que quand il s'agit de bases de données, outils de profilage, comme cela va seulement vous montrer la base de données les requêtes sont lent-pas pourquoi ils sont lents. Pour cela, vous aurez besoin de regarder dans la base de données spécifique de profilage...
Un autre aspect de l'application web d'étranglement est de savoir combien de temps il faut effectivement un navigateur pour télécharger tout (CSS et JavaScript des importations, des images, etc.) et le rendu de la page. Il y a plusieurs compagnies comme Keynote qui ont des robots qui ont frappé votre site à partir de partout dans le monde, d'analyser les performances, et vous donner des recommandations sur les changements que vous pouvez faire pour obtenir la sortie de votre application pour le navigateur et le rendu le plus rapidement possible (par exemple, "utiliser la compression gzip et de mettre votre code JavaScript à la fin de la page à la place de la tête", etc.). Vous pouvez également le faire yourslelf sur une plus petite échelle, bien sûr. Par exemple, Firefox plugins comme Jiffy et YSlow va faire le travail.
Pour tout web app, vous pouvez essayer d'utiliser l'extension Firebug, avec le Yahoo extension YSlow (Firebug). Très utile dans les performances de page.
http://developer.yahoo.com/yslow/
Traçage est un excellent point de départ
Fiddler est un bon outil pour le trafic de journalisation et de surveillance. Il fonctionne sur le client et vous pouvez voir ce que les demandes et les réponses aller entre le client et le serveur web. Vous pouvez facilement analyser les pages lentes et de détecter les raisons (à de nombreuses demandes, des pages de grande taille, ...)
Spécifiquement pour ASP.Net, il y a mécanisme de suivi qui peut créer des logs détaillés pour les applications web. Log affiche les informations de temps et vous pouvez trouver des fonctions d'exécution. (Article MSDN: ASP.NET Traçage Aperçu
essayez d'utiliser certains moteurs d'essai comme PHPUnit au stress de votre application, et l'utilisation de votre shell pour voir ce que les processus sont plus longs à résoudre.
sur Unix/Linux, vous pouvez utiliser le 'haut' de la commande
sur Windows, utilisez le gestionnaire des tâches (extended)
Si vous utilisez Perl, alors Devel::NYTProf est super incroyable.
J'ai un tutoriel que j'ai fait à quelques reprises à l'OSCON et MySQL conférence sur "Monde réel Web: Performance & Évolutivité" (diapositives disponibles en PDF), vous trouverez peut-être intéressant.
Liées threads:
Pourriez-vous être plus précis sur la plate-forme (XP, Vista, Server 2000, 2003, 2008) et de la méthode d'exécution de l'application (IIS, Windows Service). Comme mentionné ci-dessus, la localisation est un bon début, mais il existe d'autres outils en fonction de l'environnement de l'application web est configurée sur ainsi.
Activer la fonctionnalité de traçage, trace=true si c'est une application web et le mettre dans la trace des déclarations au début et à la fin de vos méthodes de feu. Cela vous donnera une très détaillé de lecture des tiques dans le système et, par conséquent, la durée de chaque partie prend à exécuter.
Si vous avez une bibliothèque qui est appelé alors vous pouvez aussi faire la trace dans la à l'aide httpcontext.Actuel.Trace.Écrire à la sortie de ce que vous avez besoin de regarder. Sinon, si votre application est vraiment capricieux, vous pouvez écrire votre propre fonction pour stocker des instructions de suivi dans une variable partagée et écrire dans une base de données ou d'un autre mécanisme une fois que le script est exécuté.
Si vous voulez un moyen générique de trouver les goulots d'étranglement, essayez d'utiliser un HTTP outil de surveillance. Cela vous permet de voir quels sont les types de demandes prennent plus de temps, ou si ils sont de retour les messages d'erreur. Vous pouvez ensuite utiliser une plate-forme spécifique, outil de profilage à zéro sur des zones spécifiques de votre application sur la base des données de l'outil.
J'aime utiliser un proxy HTTP outil comme Charles de faire ce type d'analyse.
Première étape est rapide et sale. Essayez-le sur un iPhone, un ordinateur portable avec une connexion 3G, un ordinateur avec une connexion internet par satellite et d'un windows mobile PDA. Si cela fonctionne, vous avez terminé. Si non, trianguler.