« Mal was ganz anderes in eigener Sache ... | Main| Wie man sich selbst eine Grube gräbt .... (2) »

Wie man sich selber eine Grube gräbt ....

0
Category   

Es ist ja nicht einfach mit mehreren Threads umzugehen und wenn man es dann meint zu können, dann kommt einem mal wieder was dazwischen ....

Zur Geschichte ....

Es war einmal ein Rechner, der hatte 32 GB RAM darauf lief ein SQL-Server, welcher die Freiheit hatte sich 16 GB zu nehmen.
Weiterhin lief darauf ein ASP.NET Webservice, welchem erlaubt war maximal 400 Threads für Berechnungen parallel zu starten.

Wie der Zufall so will, waren alle glücklich und zufrieden, bis nach einigen Performance Optimierungen es hin und wieder mal vorkam, dass der Rechner meinte sich 5 Sekunden hinweg 100% CPU zu beanspruchen.

Dies wäre im Allgemeinen auch nicht so schlimm gäbe es keine User, welche von dem ASP.NET WebService auch zu Zeiten erhöhter Auslastung gerne eine Antwort hätten.

Nach einigen Recherchen, kam heraus, dass die 100%-ige Auslastung des Rechners mit dem Thread-Context-Swicht-Performance Indikator korrellierte.

Dies kam wohl daher, dass durch die Performance Optimierungen die Threads wesentlicher abgearbeitet werden konnten und die Wahrscheinlichkeit, dass alle 400 zur gleichen Zeit am Start waren, sich erhöhte

Na ja, ein wenig Nachdenken und Huch es gibt ja die Klasse ThreadPool.... Also schnell was implementiert und den ThreadPool auf 200 gestellt.

Annahme: Es wird halb so schnell berechnet, aber der Rechner ist ja schnell, von daher kein Problem. CPU Auslastung sinkt und alle zufrieden

Schnell auf einer Testmaschine implementiert, Ergebnis es funktioniert! CPU-Auslastung besser!!!

Jetzt der große Moment! Deployment in die Produktivumgebung

Taskmanager an -> Siehe da, die CPU-Auslastung über 10 Minuten stetig unter 60%

Gewonnen!!!

Sekt aufmachen und trinken.....

Dann die Ernüchterung: Support meldet, dass alle User keinen Zugriff mehr hatten !!

Was war geschehen......

Durch das Setzen der maximalen Anzahl der Threads, wurden auch im zugrunde liegenden Application Pool die Anzahl der Threads, welche zur Bearbeitung von WebService-Requests zur Verfügung stehen auf 200 gesetzt.

Da diese jedoch von der Berechnungsroutine belegt wurden, waren für die User keine Abfragen mehr möglich

Morgen werden ich wohl Miscellaneous Utility Library ausprobieren.

Nach der Theorie sollte es wohl funktionieren, wenn Microsoft nicht anderer Meinung ist.

Gruß JJR

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2