2009-07-16 17 views
0

Wir verwenden eine Drittanbieter-Bericht-Tool. Das Berichtstool verwendet active-x. Zuerst erstellen und führen wir eine Abfrage nach Filtern durch, dann wird eine Berichtsdatei erstellt, die die Daten enthält (Ergebnis der Abfrage). Dann lädt der Client die Berichtsdatei herunter. Aber Datei geschriebene Operation ist ein großes Problem für uns. Was können wir tun? Es kann eine Lösung sein, Dateischreibvorgänge in eine andere Anwendung zu übernehmen und diese Anwendung in einen anderen Anwendungspool zu übernehmen. Hast du irgendwelche Vorschläge? Und wie läuft der Webserver? Zum Beispiel gibt es 100 Clients, die sich mit dem Webserver verbinden und versuchen, einige Berichte auszuführen. Der Webserver muss also 100 Dateien für diese Clients erstellen. Wenn also die Daten eines Berichts sehr groß sind und andere auf ihre Fertigstellung warten?Website-Datei schreiben Leistungsproblem

Antwort

0

Ihr Problem ist nicht sehr klar. Du hast gesagt, das Schreiben von Dateien ist ein großes Problem, was meinst du damit? Ist es langsam oder was?

Ist Ihre Anwendung so konzipiert, dass sie jeweils einen Client bedient? Wenn nicht, warum sagst du dann, dass andere auf seine Fertigstellung warten?

Ich nehme an, Ihre Anwendung kann mehrere Clients gleichzeitig bedienen. Wenn die Last hoch ist, wird das Schreiben der Datei beeinträchtigt, da IO langsamer wird. Sie müssen die Anwendung auslasten, bei der die Last auf die Instanzen aufgeteilt wird, und auf diese Weise kann IO verbessert werden. Natürlich sollten sich Instanzen auf verschiedenen Rechnern befinden, da das Problem von IO ist. Es könnte auch andere Probleme geben, dass die Logik sowohl CPU-intensiv als auch speicherhungrig ist. Sie müssen Ihre App profilieren, um alle Probleme zu finden.

+0

ja du hast Recht, es ist nicht sehr klar. Wir haben Berichtsdateien wie Bericht + BenutzerID erstellt. Wenn der Benutzer also mehrere Browser öffnet und versucht, Berichte zu erstellen; dort Anfrage von drei Browsern wird versuchen, Dateien zu generieren, die denselben Namen haben –

+0

Aber sind die Berichte unterschiedlich oder sind sie gleich. Wenn es anders ist, sollten Sie eine andere Namenskonvention verwenden, wahrscheinlich auch einen Zeitstempel, der auch im Namen enthalten ist. Wenn die Berichte identisch sind und die Generierung lange dauert, ist es eine Verschwendung, dass es doppelt vorhanden ist. Sie sollten einen Mechanismus implementieren, um dies zu stoppen. Aber was ist dein eigentliches Problem, ist meine obige Erklärung nicht hilfreich? –

0

Für große Berichte können Sie die Anfragen in eine Verarbeitungswarteschlange stellen und Ihre Kunden ein paar Minuten warten lassen, bis sie fertig sind. Die sofortige Berichterstellung für große Datenmengen belastet Ihr System stark und lässt sich schwer ausgleichen.

Vielleicht haben Ihre Website Anfragen an eine Warteschlange weiterleiten, die schließlich von separaten Bericht generierenden Servern verarbeitet werden. Sie können weitere dieser Server hinzufügen, um Elemente in der Warteschlange zu bearbeiten. Diese Verarbeitung wirkt sich nicht auf die Websitebesucher aus, sie müssen nur mit Berichten leben, die nicht sofort verfügbar sind.

Denken Sie auch an die Verarbeitung, die Sie vor Hand machen können, so dass die gesamte Verarbeitung nicht "auf Abruf" ist. Wenn sie jeden Tag die gleichen Berichte haben, lassen Sie sie planen, damit Ihre Kunden nicht zu lange auf Berichte warten müssen.

Heavy IO sollte auf Server ausgelagert werden, die keine Client-Webanforderungen verarbeiten.

+0

Danke. Wir nutzen den Lastausgleich. Es gibt zwei Server. Aber beide verarbeiten Client-Web-Anfragen. Daher erstellen wir einen neuen Anwendungspool für Berichte. Aber genau, ich weiß nicht, ob das das Problem lösen kann. Wir haben keine zusätzlichen Server, nur dass wir einen neuen Anwendungspool haben. Glauben Sie, dass der Web-Garten eine Lösung für uns sein kann? Und es gibt einige Parameter hier: http://support.microsoft.com/?id=821268 Denkst du, dass diese uns helfen können? –