2016-04-08 10 views
0

Wir haben einen sehr alten Webservice, der von einem Scheduler-Service aufgerufen wird. Die beste Leistung, die wir daraus erzielen konnten, war 300 ms, so dass der Scheduler sie dreimal pro Sekunde aufrufen kann. Wir erleben jetzt eine viel höhere Last, also müssen wir den Web-Service beschleunigen.Die Leistung eines single-threaded alten .NET 1.1-Codes erhöhen, ohne den Code zu berühren

Was der Web-Service tut, ist, ein riesiges xml zu bekommen und es zu vielen vielen Tabellen in einer schrecklich entworfenen Datenbank zu speichern. Es wurde in .NET 1.0 geschrieben und wir sind irgendwie nicht in der Lage, diesen Code neu zu kompilieren!

Wir werden diesen Code neu entwerfen und neu schreiben, um besser mit der unberührbaren zugrunde liegenden Datenbank zu arbeiten, jedoch müssen wir diesen Web Service vorerst so schnell wie möglich beschleunigen.

Meine Frage ist, was kann die Windows, IIS, .NET Laufzeit usw. getan werden, um einen besseren Durchsatz einer .NET 1.1 ASP.NET Seite zu bekommen? (ohne den Code zu berühren)

+0

Hardware zu werfen. –

Antwort

0

Es gibt viele Optimierungen, die Sie tun können, um die Leistung von IIS zu unterstützen, aber sie können in diesem Fall alle nutzlos sein.

Schauen Sie sich this Artikel ist alt, aber immer noch irgendwie gilt. Ich würde vielleicht in einen Webgarten schauen. Es gibt Fälle, in denen Sie keine verwenden sollten, obwohl Sie zuerst etwas Forschung machen. Stellen Sie sicher, dass die Boxhardware nicht an ihre Grenzen stößt. Wenn RAM und CPU einen Bashing ausführen, können sich die von Ihnen vorgenommenen Einstellungen verschlechtern.

0

Um zu klären - Sie planen, den Code zu berühren - aber der Web-Service, nicht die Datenbank?

Sind die XML-Dokumente in einem konstanten, konsistenten Tempo oder haben Sie Perioden erhöhter Aktivität?

Wenn das Problem darin besteht, dass Sie die XML-Dokumente nicht schnell genug speichern können, besteht eine Möglichkeit darin, XML in einer eigenen Tabelle in einer XML-Spalte zu speichern und dann über einen separaten Dienst oder Prozess zu verfügen Diese Tabelle und führt die Einsätze. Auf diese Weise empfängt der Webdienst nur das XML und gibt eine Antwort zurück, die anzeigt, dass das XML empfangen wurde und es schnell ist. Der Einfügeprozess kann ein wenig nach hinten gehen, wenn Einfügungen langsam sind, aber er kann während langsamer Perioden aufholen.

+0

Wir planen, diesen Code in Zukunft neu zu schreiben, aber wir können jetzt weder den Code noch die Datenbank anfassen. Es gibt bereits zwei Endpunkte. Einer wie du gesagt hast, packt einfach das XML und legt es in eine Tabelle. Der zweite wird dreimal pro Sekunde von einem Scheduler-Service getroffen. Wir wollen diesen Endpunkt sagen, sagen wir 30 Mal pro Sekunde, aber es funktioniert nicht schnell genug, um das zu erreichen. – Aref

+0

Beinhaltet das "Nicht berühren der Datenbank" nicht das Schreiben neuer gespeicherter Prozeduren? Mit dem Schreiben neuer gespeicherter Prozeduren, die Stapeleinfügungen mithilfe von Tabellenwertparametern ausführen, erzielen Sie möglicherweise einen gewissen Zeitaufwand. Dies funktioniert gut, wenn Sie mehrere Tabellen haben und die Primärschlüssel, die von einem Insert generiert werden, in nachfolgenden Einfügungen referenziert werden. Wenn das eine Option ist, kann ich etwas mehr ins Detail gehen. –