2012-09-11 2 views
0

Nous avons une application web ASP.NET 4.0, avec plus de 200 pages. Il a un site public et un cms. Nous avons installé cette application dans près de 30 domaines sur le même serveur, donc l'application est installée sur chacun de ces domaines.Performances de l'application ASP.NET et fuites de mémoire

La mémoire du serveur (jeu de travail privé) augmente lentement mais augmente. Le serveur dispose de 8 Go de RAM, mais à l'aube du jour, un jour, nous recevons un message OutOfMemory, bien que nous recyclons AppPool tous les matins.

Il doit y avoir des fuites de mémoire, mais nous ne savons pas comment localiser ces fuites. Nous avons essayé de disposer de tous les éléments que nous pouvons ...

Nous avons besoin d'aide à ce sujet. Y at-il une entreprise qui offre ce type de services, je veux vérifier les applications et réparer les fuites de mémoire?

Thanks.-

Après quelques recherches j'ai trouvé beaucoup de lignes comme ceci:

Étiquette XLabel = (étiquette) FormView.FindControl ("XLabel")

sans Éliminez. Ne pensez-vous pas que cela peut générer une énorme fuite? Ne serait pas mieux:

(en utilisant l'étiquette XLabel = (étiquette) FormView.FindControl ("XLabel")) { Actions}

Merci

+0

Cela pourrait même nuire si vous vous débarrassiez de 'xLabel', puisque' FormView' pourrait fonctionner plus tard pendant le cycle de vie de la page ASP.NET.Comme il semble être placé dans un autre contrôle, l'élimination devrait fonctionner. –

Répondre

0

New Relic offrent un tel service: il y a https://newrelic.com/ un essai gratuit et ils offrent une assez bonne analyse sur votre application.

Ou pour effectuer vous-même, vous pouvez consulter cet article de MSDN:

http://msdn.microsoft.com/en-us/library/ee658248.aspx


« Mentions légales - client, pas employé.

+0

merci, j'ai éditer mon message car j'ai trouvé du code je pense qui pourrait être vraiment mauvais .. –

0

Il y a quelque chose qui ne va pas si vous manquez de mémoire, chaque jour après un recyclage la veille. Je suppose que vous devriez être capable de comprendre le code ou d'utiliser des profileurs de mémoire VS.NET si vous avez la bonne édition.

Vous pouvez également consulter des outils de profilage professionnels tels que Ants, qui est un bon outil que j'ai trouvé utile à plusieurs occasions. Si vous n'avez pas d'environnement où les profileurs peuvent être exécutés, vous pouvez obtenir un vidage de mémoire (avec DebugDiag ou même avec le Gestionnaire des tâches) et examiner (en utilisant windbg) des objets en mémoire, ce qui pourrait vous mener au mauvais code. S'il y a quelqu'un qui a la main sur WinDbg, c'est plutôt une option plus rapide (car les problèmes de mémoire sont des problèmes d'affichage) que d'utiliser des outils de profilage ou de creuser dans du code si la base de code est énorme. En passant, l'exemple de code que vous avez mis en - de telles références devraient être nettoyés automatiquement par GC lorsque le conteneur est nettoyé. Si le conteneur (View) qui contient l'étiquette n'est pas correctement éliminé, cela peut poser problème. Le problème serait généralement avec d'autres objets (grands) qui sont référencés et pas correctement nettoyés.