2017-01-11 1 views
-1

Wir haben eine ziemlich einfache asp.net Web Forms Website für Mitglieder Online-Zahlungen machen/Adressdetails aktualisieren. Das Problem besteht darin, dass wir aufgrund veralteter interner Systeme einige veraltete XML-Webdienste verwenden müssen, die, sobald sie vollständig sind, analysiert werden müssen (die Dienste geben eine XML-Zeichenfolge zurück, nicht einmal korrekt formatiertes XML). Wenn sich ein Benutzer bei seinem Konto anmeldet, werden ca. 20 Webdienstanrufe getätigt. Wenn die Server nicht zu beschäftigt sind, dauert dies beim ersten Laden etwa 10-15 Sekunden.Sehr hohe CPU-Auslastung auf Web-Anwendung von sehr wenigen Benutzern

Wir haben einen internen dedizierten Server, der auf einer schnellen Verbindung läuft. Es ist 64-Bit-Windows Server 2008 R2 Standard, Dual-Core Intel Xeon E5-2650 2.67GHz Prozessoren, 24 GB RAM.

Wenn sich nur etwa 20 Mitglieder anmelden, bringt das den Server ziemlich in die Knie. 100% CPU, Speicherverbrauch geht hoch, 503 Fehler, Sie nennen es. Wenn ich zum Beispiel die Speicher-/CPU-Nutzung definitiv an die Web-Service-Aufrufe binden könnte, könnte ich vielleicht etwas dagegen unternehmen.

Ich kann jedoch keine Möglichkeit finden, dies herauszufinden. Ich habe debugdiag versucht, aber es stürzt ab. Perfmon-Zeug scheint mir auch keine Hilfe zu geben.

Wenn ich Max Worker Processes im IIS-Pool auf etwas anderes als 1 setze, bekomme ich mehrere Prozesse, die miteinander konkurrieren, um 100% zu beanspruchen!

Ich bin im Moment völlig fest und würde mich über Hinweise/Tipps freuen?

+0

einen Profiler starten oder Dump-Analyse verwenden, die CPU-Nutzung zu analysieren, ist der einzig gangbare Weg, um die Ursache zu erzählen. Sehr wahrscheinlich, dass Sie einen Fehler im Code haben. –

Antwort

1

Nun, danke an diejenigen, die einfach downvotiert haben, ohne wirklich darüber nachzudenken, dass ich viel Forschung und Zeit investiert habe, um das zu untersuchen!

Unser Problem (das wahrscheinlich von ein paar Leuten bei den Schlüsselwörtern "XML" und "memory use" bemerkt worden sein sollte) war mit der Deklaration des verwendeten XMLSerializers. Die vorherigen Entwickler hatten es so gemacht, dass es nicht entsorgt wurde und sobald ich es zu einer statischen Klasse umgebaut hatte, löste es alles sofort.

Link zu, was ich verwenden: http://dotnetcodebox.blogspot.co.uk/2013/01/xmlserializer-class-may-result-in.html

Verwandte Themen