2010-12-14 46 views
0

Je voudrais décrire un problème étrange que j'ai remarqué lors de l'analyse de mon application asp.net en production et demander un conseil ou une opinion sur le sujet suivant. L'application fonctionne généralement avec une empreinte de mémoire de 80 à 90 Mo environ. Cela semble stable car aucune fuite de mémoire n'a été détectée jusqu'à présent - aucune légère augmentation de l'utilisation de la mémoire au fil du temps. Pourtant, le problème se produit quand le pool d'applications recycle (j'utilise l'hébergement partagé et à en juger par les logs il se produit soit quand l'application est inactive pendant 20 minutes ou toutes les ~ 30 heures - quelque chose comme ça). Le problème est que la mémoire utilisée double presque pendant un certain temps sur le recyclage - elle passe à 160-170 Mo sans aucune explication. C'est confus, car il est commun que le recyclage devrait purger la mémoire et toutes les autres ressources - au moins, je comprends. Le système conserve cette quantité de mémoire pendant 7 à 8 heures, puis l'utilisation de la mémoire tombe à son niveau habituel de 90-100 Mo, encore une fois, sans raison apparente (au moins ne sais pas pour moi). Tout le temps, l'application semble bien fonctionner - pas de retards importants ou de problèmes avec la disponibilité du site - pour les utilisateurs tout semble correct, pas de plaintes jusqu'à présent. Lorsque vous regardez le graphique de la consommation de la mémoire au fil du temps - il ressemble presque à une fonction de pas.Incroyable augmentation de la mémoire sur le pool d'applications de recyclage

L'important est que je n'ai pas été capable de reproduire ce genre de comportement dans mon environnement de test. De temps en temps, j'ai reçu des notes des administrateurs du fournisseur que mon application utilise plus de ressources que ce qui est autorisé et cela me perturbe vraiment. Donc, ce que je voudrais savoir - existe-t-il un scénario possible où le recyclage du pool d'applications ne libère pas toutes les ressources mémoire? Y a-t-il des conseils ou des lignes directrices sur lesquels je devrais me concentrer? Je ne suis pas un expert dans ce domaine, mais j'ai lu sur des choses comme le chevauchement du recyclage, les problèmes de sérialisation sur le recyclage et quelques autres problèmes ... Des idées? Expérience similaire?

Merci

Répondre

0

Ce poste offre un très bon aperçu de ce qui se passe quand on recycle la piscine d'applications de votre site: http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

Ma spéculation est que votre utilisation de la mémoire augmente en raison de la JIT-compilation qui suit tous les recycler de la piscine de l'application. Je suppose que votre hôte partagé a des paramètres de configuration et d'environnement différents de ceux de votre serveur de développement. À mon humble avis, si vous utilisez ~ 100 Mo de mémoire sur un hôte partagé, vous demandez des problèmes si c'est un hôte comme DiscountASP.NET ou GoDaddy. Si vous vous intéressez à tout ce site, allez chercher un VPS ou un autre hébergement configurable où vous pouvez payer une prime pour une limite de mémoire plus élevée.