Dieser Artikel gilt für die folgenden Microsoft® Windows Server®-Versionen:2008, 2012,2012 R2, 2016 und 2019.
Server haben zwei Arten von Arbeitsspeicher:Direktzugriffsspeicher (RAM) und virtueller Speicher. Alle Programme verwenden RAM. Wenn Programme jedoch nicht über genügend RAM zum Ausführen verfügen, verschiebt Windows® Informationen, die normalerweise im RAM gespeichert werden, vorübergehend in eine Datei auf Ihrer Festplatte, die als Auslagerungsdatei bezeichnet wird. Diese temporäre Datenspeicherung in einer Auslagerungsdatei wird als virtueller Speicher bezeichnet.
Durch die Verwendung von virtuellem Speicher zum Verschieben von Informationen in eine und aus einer Auslagerungsdatei wird genügend RAM freigegeben, damit Programme ordnungsgemäß ausgeführt werden können. Probleme mit wenig Arbeitsspeicher können unter folgenden Bedingungen auftreten:
-
Wenn dem Server der RAM ausgeht und der virtuelle Speicher knapp wird.
-
Wenn Sie mehr Programme ausführen, als der auf dem Server installierte Arbeitsspeicher unterstützen kann.
-
Wenn ein Programm keinen Speicher freigibt, den es nicht mehr benötigt, wird dies als Speicherüberbeanspruchung oder Speicherleck bezeichnet.
Speichernutzung ermitteln
Sie können das folgende PowerShell®-Skript verwenden, um die aktuelle Speichernutzung zu ermitteln:
$ln="--------------------";
$sp=" ";
$M="Memory";
$os=gwmi win32_operatingsystem;
$TPMS="TotalVisible$M`Size";
$FPM="FreePhysical$M";
$TVMS="TotalVirtual$M`Size";
$FVM="FreeVirtual$M";
$TP=[int]($os.$TPMS/1mb);
$FP=[math]::Round($os.$FPM/1mb,2);
$PP=[math]::Round((($os.$TPMS-$os.$FPM)/$os.$TPMS)*100,2);
$TV=[int]($os.$TVMS/1mb);
$FV=[math]::Round($os.$FVM/1mb,2);
$PV=[math]::Round((($os.$TVMS-$os.$FVM)/$os.$TVMS)*100,2);
echo "`n$ln$ln`nCurrent $M Utilization:`n$ln$ln`nPhysical $M ($TP GB)`nAvailable: $FP GB`n % in use: $PP`%`n`nVirtual $M ($TV GB)`nAvailable: $FV GB`n % in use: $PV`%`n`n$ln$ln$ln$ln`nImage Name$sp$sp$sp`PID Session Name$sp Session# Mem Usage`n$ln$ln$ln$ln";
cmd /C "tasklist /NH /FI "MEMUSAGE gt 100000"|sort /R /+64";echo "$ln$ln$ln$ln";
Die Ausgabe sollte den folgenden Informationen im Task-Manager ähneln:
----------------------------------------
Current Memory Utilization:
----------------------------------------
Physical Memory ("amount" GB)
Available: "amount" GB
% in use: "amount" %
Virtual Memory ("amount" GB)
Available: "amount" GB
% in use: "amount" %
-----------------------------------------------------------------
Image Name| PID| Session Name| Session#| Mem Usage
-----------------------------------------------------------------
"service1" 1280 Console 2 707,216 K
"service2" 1124 Console 2 390,380 K
"service3" 6904 Console 2 362,920 K
"service3" 1300 Console 2 250,928 K
"service4" 7604 Console 2 243,760 K
"service5" 12928 Console 2 228,096 K
-----------------------------------------------------------------
Nachdem Sie den wichtigsten Prozess ermittelt haben, der Speicher verwendet, können Sie alle Probleme mit dem Dienst untersuchen. Möglicherweise müssen Sie den Dienst oder den Server neu starten.
Die folgenden Dienste können eine hohe Speicherauslastung verursachen:
- Microsoft SQL Server®
- Arbeitsprozesse für Internetinformationsdienste (IIS) (w3wp)
- CommVault®
- Sophos®