2010-04-18 4 views
0

J'ai une application Web ASP.NET (.NET 2008) utilisant MS SQL Server 2005. Je veux augmenter les performances du site web. Est-ce que quelqu'un sait d'un article contenant des étapes pour le faire, étape par étape, dans SQL (index, etc.), et dans le code?Comment augmenter les performances de mon application Web?

+0

Je pense que dans la performance, il est vraiment important de savoir où vous êtes lent, ou dans d'autres mots, où vous pouvez gagner plus de performance. Avez-vous des problèmes avec js, asp.net, sql server? Ce sont des mondes différents et ont besoin de connaissances différentes. –

+0

ok, codeka et pablocastilla, commençons avec sql server car je pense que le principal problème de lent est en SQL – RMohammed

Répondre

2

Je pense que le mieux que nous pouvons faire à partir d'ici est de vous donner quelques conseils:

  • requête moins de données à partir du serveur SQL (mise en cache, les filtres de requête appropriés)
  • écrire de meilleures requêtes (indexation, rejoint, pagination, etc.)
  • minimiser les blocages inappropriés tels que des serrures entre les différentes demandes
  • assurez-vous d'état de session n'a pas explosé en taille
  • utiliser plus métal/métal plus
  • utilisez le code approprié looping etc

Mais au stress; de ici tout est conjecture. Vous devez profil pour trouver la zone générale pour le suckage, puis profil plus pour isoler le spécifique zone (s); mais commencer par regarder:

  • trace sql entre serveur web et réseau sql-server
  • de trace entre serveur Web et le client (les deux directions)
  • cache/serveurs d'état si votre CPU
  • utilisation de la mémoire sur le serveur Web
+0

Merci Marc, En attente de plus, vous me donnez un bon point de départ, mais si vous me donnez les détails dans certains de ces points ou même un des liens, je serai plus reconnaissant pour vous – RMohammed

+0

+1 pour de bons conseils sur le problème de performance web – wonde

1

Je pense d'abord que vous devez trouver vos goulots d'étranglement et ensuite essayer de les améliorer.

Cela vous aide à effectuer exactement où vous avez un problème de serios.

En outre, vous devez améliorer votre connexion à la base de données. Par exemple, utiliser un motif Lazy, Singletone et également créer une requête Batch au lieu de requêtes individuelles. Il vous aide à diminuer la connexion DB.

Vérifiez votre cache et les structures de boucle appropriées.

une autre chose est d'utiliser des types appropriés, Parexemple si vous avez besoin int donot créer un long et etc

à la fin ypu peut utiliser un Profiler (spécialement dans SQL) andcheckif vos requêtes mises en œuvre aussi bien que possible.

4

L'optimisation des performances est un processus très spécifique. Je ne connais aucun article traitant directement de la manière d'y parvenir, mais je peux vous donner un bref aperçu des étapes à suivre lorsque je dois améliorer les performances d'une application/d'un site Web.

  1. Profil.

    Commencez par collecter des données de performance. À la fin du processus de réglage, vous aurez besoin de quelques chiffres pour comparer pour prouver que vous avez fait une différence.Cela signifie que vous devez choisir des processus spécifiques que vous surveillez et enregistrez leurs performances et leur débit. Par exemple, sur votre site, vous pouvez enregistrer la durée d'une connexion. Vous devez garder cela très étroit. Choisissez une action spécifique que vous voulez enregistrer et chronométrer. (Utilisez un outil pour effectuer le chronométrage, ou mettez du code Stopwatch dans votre application pour signaler les temps. Aussi, ne l'exécutez pas une seule fois, exécutez-le plusieurs fois, essayez de vous assurer que tout l'environnement est configuré pour que vous puissiez dupliquer Essayez de vous rapprocher le plus possible de votre environnement de production: assurez-vous que votre code est compilé en mode édition et qu'il s'exécute sur de vrais serveurs distincts, pas uniquement sur une seule boîte, etc.

  2. instrument.

    maintenant, vous savez ce que l'action que vous voulez améliorer, et vous avez un temps cible à battre, vous pouvez instrumenter votre code. Cela signifie l'injection (manuellement ou automatiquement) supplémentaire code qui chronomètre chaque appel de méthode, ou chaque ligne et enregistre les heures et/ou l'utilisation de la mémoire dans la pile d'appels.

    Il y a beaucoup d'outils qui peuvent vous aider et automatiser certains d'entre eux. (Microsoft's CLR profiler (gratuit), Redgate - Ants (commercial), les éditions supérieures de studio visuel ont des choses intégrées, et loads more) Mais vous n'avez pas besoin d'utiliser des outils automatiques, il est parfaitement acceptable de simplement utiliser la classe Stopwatch pour chronométrer chaque bloc de votre code. Ce que vous cherchez est un goulot de bouteille. Le plus probable est que vous trouverez une grande partie du temps total consacré à un tout petit peu de code.

  3. Réglage.

    Maintenant, vous avez des données de synchronisation, vous pouvez commencer à accorder.

    Il y a deux approches à considérer ici. Premièrement, prenez une perspective globale. Considérez si vous avez besoin de re concevoir la pile d'appels entière. Répétez-vous quelque chose inutilement? Ou faites-vous juste quelque chose dont vous n'avez pas besoin? Deuxièmement, maintenant vous avez une idée de l'endroit où votre goulot de bouteille est, vous pouvez essayer et trouver des moyens d'améliorer ce peu de code. Je ne peux pas donner beaucoup de conseils ici, car cela dépend du goulot de votre bouteille, mais il suffit de chercher à l'optimiser. Peut-être avez-vous besoin de mettre en cache des données pour ne pas avoir à faire deux fois la boucle. Ou lotez les appels SQL afin que vous puissiez en faire un seul. Ou resserrez vos filtres de requête pour que vous renvoyiez moins de données.

  4. Re-profile.

    C'est l'étape la plus importante que les gens oublient souvent. Une fois que vous avez réglé votre code, vous devez absolument le re-profiler dans le même environnement que celui dans lequel vous avez exécuté votre profilage initial. Il est très courant de faire des ajustements mineurs qui pourraient améliorer les performances et finir par le dégrader à cause de une façon inconnue que le CLR gère quelque chose. Ceci est beaucoup plus commun dans les langues gérées parce que vous ne savez souvent pas exactement ce qui se passe sous les couvertures.

Maintenant, répétez simplement si nécessaire.

Si vous êtes susceptible d'optimiser les performances, je trouve qu'il est bon d'avoir toute une série de tests de performance automatisés que je peux exécuter pour vérifier les performances et le débit de différentes activités. De cette façon, je peux les exécuter avec chaque version et enregistrer les changements de performance à chaque version.Cela signifie aussi que je peux vérifier que, après une session de réglage des performances, je sais que je n'ai pas aggravé la performance d'un autre domaine.

Lorsque vous effectuez un profilage, ne pensez pas toujours au temps nécessaire pour exécuter une seule action. Envisagez également le profilage sous charge, avec beaucoup d'utilisateurs connectés. Parfois, les applications fonctionnent très bien lorsqu'un seul utilisateur est connecté, mais quand elles touchent un certain nombre d'utilisateurs, tout s'arrête brusquement. Peut-être parce qu'ils passent soudainement plus de temps à changer de contexte ou à échanger de la mémoire sur le disque. Si c'est le débit que vous voulez améliorer, vous devez déterminer ce qui cause la limite de débit.

Enfin. Consultez cet article MSDN énorme sur Improving .NET Application Performance and Scalability. Plus précisément, vous voudrez peut-être regarder chapter 6 et chapter 17.

+0

Merci beaucoup, simon, je vous lis répondre avec soin :) – RMohammed

Questions connexes