it-swarm.com.de

Wie verhindert man eine 100% ige CPU-Auslastung durch Worker-Prozesse in iis?

Meine CPU-Auslastung ist in Windows Server 2008-R2 mit meinem eigenen VPS, VMware, Quad Core und 4 GB RAM die meiste Zeit 100%. Wenn ich den Windows Task-Manager öffne und zum Ressourcenmonitor gehe, sehe ich, dass die 100% ige Auslastung auf workerprocess.exe Zurückzuführen ist. Ich habe 3 Websites in meinem IIS.

  • Wie kann ich herausfinden, welche Website diese Nutzung verursacht?
  • Wie kann ich die CPU-Auslastung auf 80% begrenzen?
  • Könnte es ein DDOS-Angriff sein?
  • Gibt es eine Möglichkeit, DDOS zu verhindern?

Ich habe eset-nod32 auf meinem vps installiert, aber es zeigt keinen Angriff in den Protokollen. Ich habe versucht, nach IIS und Verhindern von DDOS zu suchen und habe gerade eine Erweiterung zum Sperren von IP-Adressen gefunden. Wie kann ich jedoch herausfinden, welche IP-Adresse Datenverkehr generiert?

Die Website ist in ASP.NET Und C# Geschrieben. Wie kann ich feststellen, was auf dieser Website passiert und welche Codezeilen die CPU-Auslastung verursachen?

Außerdem sollte eine meiner Websites auf den Desktop des Administrators zugreifen und einige Dateien lesen und schreiben. Aus diesem Grund habe ich den Anwendungspool -> Identität (Prozessmodell) in ein lokales System geändert und weiß nicht, ob dies mit der CPU-Auslastung zusammenhängt oder nicht.

49
SilverLight

Nun, das kann lange dauern, um herauszufinden. Einige Punkte, um es einzugrenzen:

13
Tomas Voracek

Diagnose

In Bezug auf die Diagnose, welche App Pool Probleme verursacht, können Sie:

  1. Wählen Sie den Server aus
  2. Gehen Sie zu IIS> Worker Processes

Server Settings

Dies sollte ein Menü wie dieses aufrufen, damit Sie feststellen können, welcher App-Pool Amok ausgeführt wird.

Worker Processes

Von dort aus können Sie den App-Pool einfach neu starten und 9 von 10 Mal ausführen, um alle sofort auftretenden Probleme zu beheben.

Behandlung

Dies ist wahrscheinlich kein DDOS-Angriff, es sei denn, Sie führen ein kontroverses Geschäft. Es ist wahrscheinlich, dass ein Teil des Codes nur hängt, weil er nicht auf einen anderen Server gelangen kann oder in einer Schleife steckt oder falsch zugewiesene Ressourcen enthält oder Ihr App-Pool seit einiger Zeit nicht mehr recycelt wurde.

Sie können dieses Problem programmgesteuert beheben, ohne den App-Pool manuell identifizieren, anmelden und wiederverwenden zu müssen. Konfigurieren Sie einfach die CPU-Eigenschaft in Ihrem App-Pool. Sie können Ihren Prozess jederzeit abbrechen (und automatisch neu starten), wenn Sie für einen bestimmten Zeitraum einen CPU-Schwellenwert erreichen.

Wenn Sie in Ihrem Fall einen Neustart mit 80% wünschen, können Sie mit der rechten Maustaste auf den App-Pool klicken, die erweiterten Einstellungen aufrufen und die folgenden Konfigurationen anwenden:

App Pool Advanced Settings

[~ # ~] note [~ # ~] : Als kraken101 wies darauf hin, anders IIS GUIs haben dies im Laufe der Zeit unterschiedlich behandelt: Während der Konfigurationswert immer 1/1000 a% ist, nimmt die GUI manchmal den gesamten Prozentsatz ein.

Sie können dies zu Ihrer Konfiguration hinzufügen:

<applicationPools>
   <add name="DefaultAppPool">
     <cpu limit="80000" action="KillW3wp" resetInterval="00:01:00" />
   </add>
</applicationPools>

Alternativ können Sie es mit Powershells WebAdministration Module wie folgt skripten:
(* stellen Sie sicher, dass die Web-Scripting-Tools aktiviert sind )

Import-Module WebAdministration

$appPoolName = "DefaultAppPool"
$appPool = Get-Item "IIS:\AppPools\$appPoolName"
$appPool.cpu.limit = 80000
$appPool.cpu.action = "KillW3wp"
$appPool.cpu.resetInterval = "00:01:00"
$appPool | Set-Item

Vorbeugen

Die obigen Schritte helfen dabei, einige Probleme zu beheben, wenn sie einmal kaputt sind, lösen jedoch nicht wirklich die zugrunde liegenden Probleme, die Sie haben.

Im Folgenden finden Sie einige Ressourcen zur Leistungsüberwachung:

86
KyleMit

Verwenden Sie PerfMon zum Sammeln von Daten und DebugDiag zum Analysieren.

Ich habe diesen Link gefunden, als ich nach einem ähnlichen Problem gesucht habe.

http://www.iis.net/learn/troubleshoot/performance-issues/troubleshoot-high-cpu-in-an-iis-7x-application-pool

1
azed

Vor kurzem hatte ich die gleichen Probleme und fand eine Lösung, die für mich funktionierte und den Speicherverbrauch weitestgehend reduzierte.

Lösung:

Suchen Sie zunächst die Anwendung, die eine hohe Speichernutzung verursacht.

Sie finden dies im Detailbereich des Task-Managers.

Nächster.

  1. Öffnen Sie den IIS-Manager.
  2. Klicken Sie auf Anwendungspools. Sie finden viele Anwendungspools, die Ihr System verwendet.
  3. Jetzt haben Sie im Task-Manager herausgefunden, welche Anwendung den hohen Speicherverbrauch verursacht. Dafür gibt es mehrere Optionen, und Sie müssen Wählen Sie die Option aus, deren Anwendungsspalte in Ihrer Webanwendung die 1 enthält.
  4. Wenn Sie auf den Anwendungspool auf der rechten Seite klicken, wird unter Anwendungspools bearbeiten die Option Erweiterte Einstellungen angezeigt. Gehen Sie zu Erweiterte Einstellungen. 5. Setzen Sie jetzt unter der Kategorie Allgemein die Option 2-Bit-Anwendungen aktivieren auf Wahr
  5. Starten Sie den IIS Server neu, oder Sie können sehen, dass der Verbrauch im Leistungsbereich Ihres Task-Managers sinkt.

Wenn diese Lösung für Sie funktioniert, fügen Sie bitte einen Kommentar hinzu, damit ich es wissen kann.

1
Pramil Gawande

Es gibt eine Reihe von Gründen, aus denen Sie eine hohe CPU-Auslastung von w3wp.exe feststellen können. Ich habe sechs häufige Ursachen zur Deckung ausgewählt.

  1. Hohe Fehlerraten in Ihrer ASP.NET-Webanwendung
  2. Anstieg des Webverkehrs, der eine hohe CPU-Auslastung verursacht
  3. Probleme mit Anwendungsabhängigkeiten
  4. Garbage collection
  5. Anforderungen werden blockiert oder hängen irgendwo in der ASP.NET-Pipeline
  6. Ineffizienter .NET-Code, der optimiert werden muss
0

Wenn dies nicht erforderlich ist, deaktivieren Sie "32-Bit-Anwendungen aktivieren" in Ihrem jeweiligen Anwendungspool auf Ihrer Website.

Dies funktionierte für mich auf meinem lokalen Rechner

0
Yoggesh Paatil