Quelles stratégies avez-vous utilisées pour améliorer la performance des applications web?[fermé]

StackOverflow https://stackoverflow.com/questions/22704

Question

  • Une expérience personnelle à surmonter les performances de l'application web obstacles?
  • Toutes les stratégies recommandées pour améliorer la performance d'une piloté par les données de l'application web?

Mon équipe de développement travaille sur une application web (JSP rapports, HTML, JavaScript) qui utilise une base de données Oracle (PL/SQL).Les principales fonctionnalités de l'application offre est dans la déclaration, où un utilisateur peut obtenir des Pdf de rapports à un niveau élevé et de forage vers le bas pour abaisser les niveaux de soutien de détails.

Comme le nombre de soutenir les enregistrements de détail a augmenté dans les millions, les performances du système ont considérablement dégradé.Basé sur notre analyse actuelle de la métrique, le goulot d'étranglement semble être dans la logique de frapper la DB et DB de rendement.La modification de la DB modèle et le rétablissement de certains du côté serveur logique est actuellement à l'étude.

Partioning, l'indexation, expliquent les plans et l'exécution des statistiques, ce sont des choses qui ont été faites sur la DB côté pour essayer d'améliorer les performances.Alors qu'ils ont aidé, ils n'ont pas résolu le problème de manière satisfaisante.Le plus difficile dans l'analyse des données de performance est que la base de données et les serveurs web sont administrés à distance par une autre partie de l'organisation, afin que les développeurs n'ont pas régulière, l'accès complet à voir ce qu'il se passe (en particulier dans l'environnement de production, qui ne se reflète pas exactement dans tout autre développement/environnement de test).

Était-ce utile?

La solution

Bien que ma réponse ne peut pas contenir des mesures concrètes pour aider c'est toujours là que je commence.

La première chose que je voudrais faire est d'essayer de vous débarrasser de vos hypothèses sur ce que le problème est et de prendre des mesures pour installer des métriques partout où vous le pouvez.Laissez les paramètres guide vous plutôt que votre intuition.J'ai chassé beaucoup, beaucoup, beaucoup de lapins blancs d'aller sur une intuition...la let me down plus de fois qu'ils ont été à droite.

Autres conseils

Avez-vous vérifié cela?

Les meilleures pratiques pour rendre des pages web rapide à partir de Yahoo! à la Performance Exceptionnelle de l'équipe

Si vous êtes vraiment mal à l'arrière-plan, ce qui n'aide pas.Mais nous avons utilisé leurs conseils pour un grand effet de rendre notre site plus rapide, et il y a encore beaucoup à faire.

Également utiliser le YSlow add-on pour Firebug.Vous pourriez être surpris quand vous voyez où le temps réel est en train d'être prises.

Avez-vous envisagé la construction de vos données à l'avance?En d'autres termes, sont-il des groupes de données qui sont demandées encore et encore?Si oui, préparez-vous avant que l'utilisateur demande.Je ne suis pas exactement parler de la mise en cache, mais je pense que c'est une partie de l'équation.

Il pourrait être intéressant de prendre un peu de recul à partir du code et d'examiner les modèles d'utilisation du système.Par exemple, si vous êtes montrant des gens inventaire mensuel de ventes ou d'information ils ne la regarde qu'à la fin du mois?Si donc, juste générer les données sur la dernière journée et de les stocker.S'ils regardent tous les jours, peut-être essayer de construire chaque jours précédents résultats et de stocker les résultats et d'éviter le calcul.Je suppose que, finalement, je me suis vous pousse dans à la une La Programmation Dynamique solution;si vous savez la réponse ne permettent pas de résoudre à nouveau.

Comme Webjedi dit, les mesures sont votre ami.

Regardez aussi votre pile et de voir où il y a des possibilités pour la mise en cache - alors l'employer sans pitié dans la mesure du possible!

Comme je l'ai dit dans une autre question:

Utiliser un profiler. Oui, ils coûtent de l'argent, et leur utilisation peut parfois être un peu maladroit, mais ils ne vous fournir avec beaucoup plus de preuves réelles plutôt que sur des hypothèses.

Les êtres humains sont universellement mal à deviner où la performance des goulets d'étranglement.Il semble juste être quelque chose de nos cerveaux ne sont pas construire de très bien.Cela peut sembler évident, vous pouvez avoir de grandes idées sur ce qu'est le problème, mais le monde réel se transforme souvent en faisant quelque chose de différent.Et de l'optimisation de la mauvaise partie du code signifie, au mieux, beaucoup de travail pour un minimum de prestations.Le plus souvent cela rend les choses plus lentement, et parfois, il casse des choses tout à fait.Donc avant de faire des changements pour le bien de l'optimisation, vous devriez toujours avoir une preuve réelle à partir d'un générateur de profils ou d'un autre outil précis.

Pas tous les profileurs de coût (supplémentaire) de l'argent.Pour .Net, je suis avec succès en utilisant une ancienne version de NProf (actuellement abandonné, mais il travaille toujours pour moi) pour le profilage de mon ASP.Net des applications.Pour SQL Server, la requête profiler est une partie de l'emballage.Il y a aussi la FCF Profiler à partir de MS, mais je n'ai jamais réussi à le faire fonctionner avec succès.

Cela étant dit, ceux-ci sont certainement le chemin à parcourir.De cette façon, vous pouvez voir si votre programme est de passer la plupart de son temps, et ne pas se concentrer sur les choses que vous pensez sont lents.En Plus, il signifie que vous n'avez pas à écrire quoi que ce soit dans votre code pour enregistrer les paramètres.

Comme je l'ai fait allusion au début, il existe différents types de profileurs.Les trois que je trouve les plus utiles sont l'application des profileurs, qui vous permettent de voir quelles sont les fonctions qui vous fait passer la plupart de votre temps.La deuxième est SQL profileurs qui vous permettent de voir combien de temps votre requête à exécuter.Le troisième est profileurs de mémoire, ce qui aide à vous montrer quel type d'objets que votre mémoire est utilisée par.Tous les trois sont vraiment utiles, et même si vous ne les utilisez pas tous les jours, les moments que vous ne les utilisez vous permettra d'économiser beaucoup de maux de tête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top