web-dev-qa-db-fra.com

W3WP.EXE HOGS MEMORY

Sur une installation du serveur de petites entreprises 2011 Un nombre total de processus W3WP.EXE semblent utiliser un lot de mémoire disproportionné. Les installations hors tension SBS sont livrées avec un total de 7 sites et 20 pools d'applications ASP.NET (SharePoint, Exchange, WSUS et SBS-SPECIFIC SPECIFIC SPECIFIC SPHICE SPECIFIELLE LLOYPLED).

La douzaine résultante des processus W3WP.EXE tend à consommer plus de 4 Go de la mémoire du serveur au fil du temps avec le pool d'applications de pointe étant celui appartenant à WSUS avec environ 800 Mo dans l'ensemble de travail. Recycler manuellement les pools d'applications via IIS MMC== Aide à réduire temporairement l'utilisation de la mémoire (les processus W3WP.exe rétrécissent à 10 Mo, certains d'entre eux repoussent rapidement. ), mais évidemment n'est 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 SBS-PREINSTALLÉ, donc je suis un peu réticent à "le faire" sur les systèmes de production.

Mes recherches sur le net sur la manière de limiter cela seulement ont vomi un certain nombre de postes indiquant que la consommation de mémoire W3WP ne ferait pas mal, mais la performance des avantages en tant que mémoire serait "libérée si nécessaire 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 un stockage de réseau CIFS qui bénéficie immensément de la mise en cache des systèmes de fichiers qui repose à nouveau sur la mémoire "libre" comme dans "non utilisé" non utilisé par d'autres processus. manière "- Pools d'application ASP.NET qui ne voient presque jamais les utilisateurs et la mémoire de consommation sont contre-productifs
  • une autre chose est que je dois toujours voir une diminution substantielle des instances W3WP de la consommation de mémoire lors de la pénurie de mémoire - ce que je vois est une diminution mineure de moins de 100 Mo et d'un échange excessivement excessivement excessive.

Je n'ai pratiquement jamais administré IIS ou ASP.NET Apps, de sorte que toutes les idées sur la manière de réduire efficacement les exigences de la mémoire pour les pools d'applications sont les bienvenues.

8
the-wabbit

C'est ce que j'ai fini par faire:

réglage du cache de l'application de serveur pour l'AppPools .NET à une valeur basse (5 Mo) en réglant le paramètre PrivateByTesLimit dans le fichier web.config à %WINDIR%\Microsoft.NET\Framework\<version>\Config Comme suggéré dans Cette réponse :

    <configuration>
      <system.web>
         <caching>
           <cache privateBytesLimit="5242880" privateBytesPollTime="00:01:00" />
         </caching>
      </system.web>
    </configuration>

Cela a permis de réduire l'utilisation de la mémoire à un peu plus de 1 Go avec les paramètres de recyclage de pool par défaut.

Apparemment, en utilisant le type "serveur" de collecteur de déchets (<gcServer = "true">) peut conduire à une consommation de mémoire significative aussi, mais comme il semble que <gcServer> est défini sur FALSE par défaut.

7
the-wabbit

Bienvenue dans le monde merveilleux de SBS. Exigences recommandées pour RAM = 10 Go ... et nécessite un minimum de 8 Go. ( selon Microsoft .) Pour une bonne raison. Ce n'est pas une bonne raison Machine bien huilée ... C'est très bâclé, gonflé et a tout sous le soleil groupé ensemble. Plus RAM vous pouvez jeter à cette boîte ... c'est le mieux. Malheureusement, vous " Re limité à 32 Go Max. Quel iMho ... est stupide.

7
TheCompWiz

Si vous soupçonnez que la consommation de mémoire résultante est un problème dû à un défaut logiciel, vous pouvez utiliser Microsoft Debugdiag 1.2 pour créer une mémoire de mémoire complète et analyser la députée pour des problèmes courants. Si vous pensez qu'il peut y avoir un problème de mémoire, vous devez activer le suivi des fuites en sélectionnant l'option "Moniteur pour les fuites" et laissez-la exécuter pendant un certain temps avant de créer/d'analyser la décharge.

DEBUGDIAG 1.2 Télécharger
[.____] https://www.microsoft.com/download/fr/details.asaspx?id=26798

enter image description here

enter image description here

enter image description here

6
Greg Askew

Vous n'avez pas besoin d'un pool d'applications séparé pour chaque application, juste ceux qui sont peu fiables ou que vous souhaitez donner la priorité. Beaucoup peuvent partager (garder différentes versions .NET séparées). Vous pouvez alors plus de limiter de manière réaliste la mémoire qu'un pool d'applications utilisera. Il ne devrait pas y avoir besoin de recycler à plusieurs reprises des piscines plus d'une fois par jour.

En outre, il n'ya que tant de souvenirs qui peuvent être libérés de cette manière. Bien que certains soient en cache, chaque application nécessite une certaine quantité de mémoire de travail qui dépend fortement de l'application Web spécifique. Essayer de restreindre cela trop va amener les choses à une halte de meulage.

Le problème est vraiment que SBS essaie de faire trop à la fois, vous devez regarder ce que vous utilisez et fermez réellement ce que vous ne faites pas.

Mais pour être honnête pour seulement 11 utilisateurs, où est le reste de la mémoire? Exchange et SQL pour une utilisation légère ne sont certainement pas besoin plus de 12 Go!

2
JamesRyan