19 Stimmen

So berechnen Sie die optimale Chunk-Größe für das Hochladen großer Dateien

Gibt es so etwas wie eine optimale Chunk-Größe für die Verarbeitung großer Dateien? Ich habe einen Upload-Dienst (WCF), der Datei-Uploads von mehreren hundert Megabyte akzeptiert.

Ich habe mit 4KB, 8KB bis hin zu 1MB Chunk-Größen experimentiert. Größere Chunk-Größen sind gut für die Leistung (schnellere Verarbeitung), aber sie gehen auf Kosten des Speichers.

Gibt es also eine Möglichkeit, die optimale Stückgröße zum Zeitpunkt des Hochladens von Dateien zu ermitteln? Wie würde man solche Berechnungen anstellen? Wäre es eine Kombination aus verfügbarem Speicher und dem Client, der CPU und der Netzwerkbandbreite, die die optimale Größe bestimmt?

Prost

EDIT: Wahrscheinlich sollte ich erwähnen, dass die Client-App in Silverlight sein wird.

8voto

Stephen M. Redd Punkte 5368

Wenn Sie sich Sorgen machen, dass Ihnen die Ressourcen ausgehen, sollten Sie das Optimum ermitteln, indem Sie die maximale Upload-Geschwindigkeit gegen den verfügbaren Speicher Ihres Systems abwägen. Wie viele Uploads Sie gleichzeitig durchführen, ist die entscheidende Variable in jeder Berechnung, die Sie durchführen können. Sie müssen lediglich sicherstellen, dass Sie über genügend Arbeitsspeicher verfügen, um die gleichzeitigen Uploads zu bewältigen, und das ist ziemlich einfach zu erreichen. Speicher ist billig, und die Netzwerkbandbreite wird Ihnen wahrscheinlich ausgehen, lange bevor Sie an den Punkt gelangen, an dem die Gleichzeitigkeit Ihre Speicherverfügbarkeit übersteigen würde.

Was die Leistung angeht, so kann man bei der Konzeption und Entwicklung von Apps nicht viel optimieren. Sie müssen das System einrichten, Benutzer müssen Dateien hochladen, und dann können Sie die tatsächliche Laufzeitleistung überwachen.

Versuchen Sie eine Chunk-Größe, die der Ihres Netzwerks entspricht TCP/IP-Fenstergröße . Das ist in etwa so optimal, wie man es zur Entwurfszeit wirklich braucht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X