Bei einer Installation von Small Business Server 2011 scheint eine ganze Reihe von w3wp.exe-Prozessen überproportional viel Speicher zu verwenden. Die sofort einsatzbereiten SBS-Installationen umfassen insgesamt 7 Standorte und 20 ASP.NET-Anwendungspools (Sharepoint, Exchange, WSUS und SBS-spezifische Inhalte wie Remote Web Workplace).
Das resultierende Dutzend von w3wp.exe-Prozessen verbraucht im Laufe der Zeit tendenziell mehr als 4 GB Arbeitsspeicher des Servers, wobei der maximale Anwendungspool derjenige ist, der zu WSUS gehört, mit etwa 800 MB im Arbeitssatz. Das manuelle Recycling der Anwendungspools über die IIS-MMC hilft dabei, die Speichernutzung vorübergehend zu reduzieren (die Prozesse von w3wp.exe werden auf 10 MB reduziert, von denen einige schnell nachwachsen), aber offensichtlich möchte ein Administrator dies nicht den ganzen Tag tun. Ich konnte keine Empfehlungen zum automatischen Recycling der von SBS vorinstallierten Anwendungspools finden, daher zögere ich etwas, dies nur auf Produktionssystemen zu tun.
Meine Recherchen im Internet, wie dies begrenzt werden kann, haben nur eine Reihe von Beiträgen ergeben, die besagten, dass der Speicherverbrauch von w3wp nicht schaden, sondern die Leistung verbessern würde, da der Speicher "freigegeben würde, wenn er von anderen Anwendungen benötigt wird". Das Problem ist, dass es nicht funktioniert:
- Zum einen ist ein SBS ein Server mit mehreren Rollen, wobei eine der Rollen (die wichtigste) der CIFS-Netzwerkspeicher ist, der immens vom Caching des Dateisystems profitiert, das wiederum davon abhängt, dass der Speicher "frei" ist, wie in "nicht von anderen Prozessen in irgendwelchen verwendet" way "- ASP.NET-Anwendungspools, die kaum Benutzer sehen und Speicher verbrauchen, sind kontraproduktiv
- Eine andere Sache ist, dass ich immer noch einen erheblichen Rückgang des Speicherverbrauchs der w3wp-Instanzen bei Speichermangel feststellen muss - was ich sehe, ist ein geringfügiger Rückgang um deutlich weniger als 100 MB und stattdessen ein übermäßiges Auslagern -, was wiederum die Leistung beeinträchtigt
Ich verwalte kaum IIS- oder ASP.NET-Apps. Daher sind Ideen zur effektiven Reduzierung der Speicheranforderungen für die Anwendungspools willkommen.
quelle
Antworten:
Willkommen in der wundervollen Welt von SBS. Empfohlene Anforderungen für RAM = 10 GB ... und es sind mindestens 8 GB erforderlich. ( laut Microsoft .) aus gutem Grund. Es ist keine fein abgestimmte, gut geölte Maschine ... sie ist sehr schlampig, aufgebläht und hat alles unter der Sonne gebündelt. Je mehr RAM Sie in diese Box werfen können ... desto besser. Leider sind Sie auf max. 32 GB beschränkt. Welches imho ... ist dumm.
quelle
Das habe ich letztendlich getan:
Setzen Sie den Serveranwendungscache für die .NET AppPools auf einen niedrigen Wert (5 MB), indem Sie den Parameter privateBytesLimit im
web.config
at%WINDIR%\Microsoft.NET\Framework\<version>\Config
wie in dieser Antwort vorgeschlagen festlegen :Dies trug dazu bei, die Speichernutzung mit den Standardeinstellungen für das Poolrecycling auf etwas mehr als 1 GB zu reduzieren.
Anscheinend kann die Verwendung des Garbage Collector (
<gcServer = "true">
) vom Typ "Server" ebenfalls zu einem erheblichen Speicherverbrauch führen , ist jedoch anscheinend<gcServer>
standardmäßig auf "false" gesetzt.quelle
Wenn Sie den Verdacht haben, dass der resultierende Speicherverbrauch aufgrund eines Softwarefehlers ein Problem darstellt, können Sie mit Microsoft DebugDiag 1.2 einen vollständigen Speicherauszug erstellen und den Speicherauszug auf häufig auftretende Probleme analysieren. Wenn Sie glauben, dass ein Speicherproblem vorliegt, müssen Sie die Leckverfolgung aktivieren, indem Sie die Option "Auf Lecks überwachen" auswählen und eine Weile laufen lassen, bevor Sie den Speicherauszug erstellen / analysieren.
DebugDiag 1.2 Laden Sie https://www.microsoft.com/download/en/details.aspx?id=26798 herunter
quelle
Sie benötigen nicht für jede App einen separaten App-Pool, sondern nur diejenigen, die unzuverlässig sind oder denen Sie Priorität einräumen möchten. Viele können teilen (verschiedene .net-Versionen getrennt halten). Sie können dann den Speicher, den ein App-Pool verwendet, realistischer begrenzen. Es sollte nicht erforderlich sein, Pools mehr als einmal am Tag wiederholt zu recyceln.
Außerdem kann auf diese Weise nur so viel Speicher freigegeben werden. Während ein Teil davon Cache sein wird, benötigt jede App eine bestimmte Menge an Arbeitsspeicher, die stark von der spezifischen Web-App abhängt. Der Versuch, dies zu sehr einzuschränken, wird die Dinge zum Erliegen bringen.
Das Problem ist wirklich, dass SBS versucht, zu viel auf einmal zu tun. Sie müssen sich ansehen, was Sie tatsächlich verwenden, und abschalten, was Sie nicht tun.
Aber um ehrlich zu sein für nur 11 Benutzer, wohin geht der Rest des Speichers? Exchange und SQL für den leichten Gebrauch benötigen sicherlich nicht mehr als 12 GB!
quelle