Sur une installation de Small Business Server 2011, un nombre entier de processus w3wp.exe semblent utiliser une quantité disproportionnée de mémoire. Les installations prêtes à l'emploi SBS sont livrées avec un total de 7 sites et 20 pools d'applications ASP.NET (Sharepoint, Exchange, WSUS et des éléments spécifiques à SBS comme Remote Web Workplace).
La douzaine de processus w3wp.exe qui en résulte a tendance à consommer plus de 4 Go de mémoire du serveur au fil du temps, le pool d'applications de pointe étant celui appartenant à WSUS avec environ 800 Mo dans le jeu de travail. Le recyclage manuel des pools d'applications via IIS MMC permet de réduire temporairement l'utilisation de la mémoire (les processus w3wp.exe diminuent à 10 Mo, certains repoussant rapidement), mais ce n'est évidemment pas quelque chose qu'un administrateur veut faire toute la journée. Je n'ai pas pu trouver de recommandations sur le recyclage automatique des pools d'applications préinstallés SBS, donc je suis quelque peu réticent à "simplement le faire" sur les systèmes de production.
Ma recherche sur le net sur la façon de limiter cela n'a fait apparaître qu'un certain nombre de messages indiquant que la consommation de mémoire w3wp ne nuirait pas mais améliorerait les performances car la mémoire serait "libérée en cas de besoin par d'autres applications". Le problème est que cela ne fonctionne pas:
- pour un, un SBS est un serveur multi-rôle, l'un des rôles (le principal) étant le stockage réseau CIFS qui profite énormément de la mise en cache du système de fichiers qui repose à nouveau sur la mémoire étant "libre" comme dans "non utilisé par d'autres processus dans aucun "- Les pools d'applications ASP.NET qui ne voient presque jamais les utilisateurs et mangent de la mémoire sont contre-productifs
- une autre chose est que je dois encore voir une diminution substantielle de la consommation de mémoire des instances w3wp en cas de pénurie de mémoire - ce que je vois est une diminution mineure de beaucoup moins de 100 Mo et un échange excessif à la place - nuisant encore aux performances
J'administre rarement les applications IIS ou ASP.NET, donc toutes les idées sur la façon de réduire efficacement les besoins en mémoire pour les pools d'applications sont les bienvenues.