Frage

Wir haben hier ein Legacy WSE3 ASP.NET WebService, das eine Methode definiert GetFileContent(string fileName). Was es tut, ist, einen vordefinierten Pfad für eine Datei mit dem übergebenen Namen zu überprüfen, seinen Inhalt zu lesen, Base64 -codieren Sie es und senden Sie dieses codierte Material als Antwort zurück.

Leider ist der gesamte Prozess (unterschiedlich) Altersalter. Ich habe eine Konsolen-Client-App geschrieben, die die Leistung bei Bedarf unterzeichnet: Manchmal werden 2,5 megs innerhalb von 12 Sekunden übertragen, manchmal dauert es 40. Ein weiterer 27-Meg-File lief gestern in 16 Sekunden durch, heute dauert es> 1 min.

Weitere Dinge, die ich überprüft habe:

  • CPU- und Swap -Leistung sind nicht erwähnenswert (Bei der Überwachung sieht die Maschine gelangweilt aus)

  • Die Netzwerkgeschwindigkeit ist ausreichend.

  • Der Methodenaufruf wird unmittelbar nach dem gesendeten Client der Anfrage ausgeführt.

  • Das Lesen und Codieren dauert durchschnittlich 500 ms für eine große Datei, so dass auch die Rückgabeanweisung unmittelbar nach der Anfrage durchgeführt wird.

  • Ein anderer Kunde (Java-basierte) ist noch langsamer, also denke ich es könnte ein Kundenproblem sein.

Hat jemand eine Idee, wo ich neben diesem bösen Blick darauf schauen kann? Fühlt sich wirklich an.

Vielen Dank im Voraus...

War es hilfreich?

Lösung

Erstens, nur um sicherzugehen: Ich hoffe, Sie wissen, dass WSE veraltet ist.

Zweitens basiert WSE auf der ASMX -Technologie. Dies hat Probleme mit großen Anfragen, da es die eingehenden Daten vier oder mehrmals auf dem Weg zum Dienst dupliziert. Angenommen, Ihre Daten sind so groß, dass es mindestens viermal so viel Speicher dauert, bevor der Dienst ihn überhaupt die Hände erhält.

Die Problemumgehung besteht darin, auf WCF zu aktualisieren.

Andere Tipps

Ich glaube, es gibt keine Probleme in IIS. Ich vermute manchmal, dass es mehr Zeit hat, um das IP zu lösen, wenn der gemeinsame Pfad stattdessen den tatsächlichen Pfad gegeben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top