ASP.NET Utilisation de la mémoire dans IIS est beaucoup plus grande que dans devenv. Est-ce normal?

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

Question

Bonjour!

J'ai une application ASP.NET qui érafle données à partir d'une poignée de pages externes, analyse les bits correspondants et les affiche dans une table. Total des données récupérées sont 3-4MB et la page qui est d'environ 1Mo. J'utilise GetResponse synchrone WebRequest pour la récupération, mais le même problème se posait à l'aide d'un processus BeginGetResponse / EndGetResponse asynchrone. Il n'y a pas d'accès de base de données, pas de stockage de session, la mise en cache pas, mais une liste en mémoire d'environ 100 objets (1 Mo au total des données), ainsi que d'une bonne quantité d'AJAX (AjaxControlToolkit). Ce numéro apparaît sur la première exécution de l'application, même si j'ai redémarré IIS.

La question:

Quand je lance l'application sur mon ordinateur dev, le maximum commit charge est d'environ 1,5 Go. Le plus grand utilisateur, mesurée par la taille VM Gestionnaire des tâches, est WebDev.WebServer.EXE (600MB). L'application fonctionne parfaitement.

Quand je cours sur mon loyer-un-serveur (IIS 7.5, 1 Go de RAM), le maximum charge est plus commettre 3.8GB. Le plus grand utilisateur est W3WP.exe à 2,7 Go. IIS enraye et recrache une page d'erreur chronométré-out. Compte tenu de mon budget serveur limité et l'espoir d'avoir plusieurs utilisateurs simultanés, je suis un peu en panique.

Est-ce normal? Si je bosse la RAM serveur jusqu'à 4 Go, ce que ce sera suffisant? Est-ce que plusieurs utilisateurs exigent encore plus de mémoire? le coupable pourrait être AJAX ou la liste des objets?

Merci pour toute idée que vous pouvez fournir.

Était-ce utile?

La solution 3

Eh bien, après un travail acharné, j'ai identifié le coupable: notre ancien ennemi juré de la boucle sans fin. Bien sûr, si l'environnement de développement avait jeté une exception, je l'aurais pris et exciser le problème -. Mais il n'a pas

Je dirais que la leçon ici est de comprendre que les différentes versions de répondre à des erreurs IIS et devenv différemment et que nous devons tester l'application dans la même configuration dans laquelle il sera déployé.

Merci à tous pour vos commentaires.

Autres conseils

Avez-vous essayé en cours d'exécution dans votre environnement de dev sous IIS 7.5?
Assurez-vous que debug = "false", pas "vrai" dans votre web.config

Je pense que vous avez besoin de creuser des outils de débogage et de capturer une image de processus de travail de votre serveur de production, vous ne serez pas en mesure de diagnostiquer correctement ce problème avec juste PerfMon et le Gestionnaire des tâches.

J'ai posté cette réponse sur Stack Overflow un certain temps ce qui devrait vous aider à démarrer:

  

CLR sur les exceptions de mémoire

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