Teilen über


Optimieren der Leistung von AzCopy mit Azure Storage

AzCopy ist ein Befehlszeilenhilfsprogramm, das Sie verwenden können, um Blobs oder Dateien in oder aus einem Speicherkonto zu kopieren. Dieser Artikel hilft Ihnen, die Leistung zu optimieren.

Hinweis

Inhalte, die Ihnen bei den ersten Schritten mit AzCopy helfen, finden Sie unter "Erste Schritte mit AzCopy".

Sie können Leistungsvergleichstests durchführen und dann mithilfe von Befehlen und Umgebungsvariablen ein ausgewogenes Verhältnis zwischen Leistung und Ressourcenverbrauch ermitteln.

Ausführen von Vergleichstests

Sie können einen Leistungsvergleichstest für bestimmte Blobcontainer oder Dateifreigaben ausführen, um allgemeine Leistungsstatistiken zu erhalten und Leistungsengpässe zu ermitteln. Sie können den Test ausführen, indem Sie generierte Testdaten hoch- oder herunterladen.

Verwenden Sie den folgenden Befehl, um einen Leistungsvergleichstest auszuführen.

Syntax

azcopy benchmark 'https://<storage-account-name>.blob.core.windows.net/<container-name>'

Beispiel

azcopy benchmark 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D'

Tipp

In diesem Beispiel werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen.

Mit diesem Befehl wird ein Leistungsvergleichstest ausgeführt, indem Testdaten an ein angegebenes Ziel hochgeladen werden. Die Testdaten werden im Arbeitsspeicher generiert, an das Ziel hochgeladen und dann nach Abschluss des Tests aus dem Ziel gelöscht. Mithilfe optionaler Befehlsparameter können Sie angeben, wie viele Dateien und in welcher Größe generiert werden sollen.

Wenn Sie diesen Test ausführen möchten, indem Sie Daten herunterladen, legen Sie den mode-Parameter auf download fest. Ausführliche Referenzdokumente finden Sie unter azcopy benchmark.

Optimieren für eine große Anzahl von Dateien

Bei der Übertragung einer großen Anzahl von Dateien kann der Durchsatz zurückgehen. Jeder Kopiervorgang wird in eine oder mehrere Transaktionen übersetzt, die der Speicherdienst ausführen muss. Wenn Sie eine große Anzahl von Dateien übertragen, berücksichtigen Sie die Anzahl der Transaktionen, die ausgeführt werden müssen, und die potenziellen Auswirkungen, die diese Transaktionen haben können, wenn andere Aktivitäten im Speicherkonto gleichzeitig auftreten.

Um die Leistung zu maximieren, können Sie die Größe jedes Auftrags verringern, indem Sie die Anzahl der Dateien einschränken, die Sie in einem einzigen Auftrag kopieren. Erhöhen Sie die Parallelität von Download- und Uploadvorgängen nach Bedarf, verringern Sie die Protokollaktivität, und deaktivieren Sie Features, die hohe Leistungskosten verursachen.

Verringern der Größe der einzelnen Aufträge

Um eine optimale Leistung zu erzielen, stellen Sie sicher, dass jeder Auftrag weniger als 10 Millionen Dateien überträgt. Aufträge, bei denen mehr als 50 Millionen Dateien übertragen werden, zeigen möglicherweise eine geringe Leistung, weil der AzCopy-Auftragsnachverfolgungsmechanismus zu einem erheblichen Mehraufwand führt. Erwägen Sie die Aufteilung großer Aufträge in kleinere Aufträge, um den Mehraufwand zu reduzieren.

Eine Möglichkeit zum Verkleinern eines Auftrags besteht darin, die Anzahl von Dateien zu begrenzen, die von einem Auftrag betroffen sind. Zu diesem Zweck können Sie Befehlsparameter verwenden. Beispielsweise kann ein Auftrag nur eine Teilmenge von Verzeichnissen kopieren, indem der Parameter include path als Teil des Befehls azcopy copy verwendet wird.

Mithilfe des Parameters include-pattern können Sie Dateien kopieren, die eine bestimmte Erweiterung aufweisen (z. B. *.pdf). Verwenden Sie in einem separaten Auftrag den exclude-pattern Parameter, um alle Dateien zu kopieren, die nicht über die *.pdf Erweiterung verfügen. Beispiele finden Sie unter Hochladen bestimmter Dateien und Herunterladen bestimmter Blobs.

Nachdem Sie sich entschieden haben, wie große Aufträge in kleinere aufgeteilt werden sollen, sollten Sie Aufträge auf mehreren virtuellen Computern (VM) ausführen.

Erhöhen der Parallelität

Verwenden Sie beim Hoch- oder Herunterladen von Dateien die Umgebungsvariable AZCOPY_CONCURRENCY_VALUE, um die Anzahl gleichzeitiger Anforderungen auf Ihrem Computer zu erhöhen. Legen Sie diese Variable so hoch wie möglich fest, ohne die Leistung Ihres Computers zu beeinträchtigen. Weitere Informationen zu dieser Variablen finden Sie in diesem Artikel im Abschnitt Erhöhen der Anzahl gleichzeitiger Anforderungen.

Wenn Sie Blobs zwischen Speicherkonten kopieren, sollten Sie den Wert der Umgebungsvariablen AZCOPY_CONCURRENCY_VALUE auf einen höheren Wert als 1000 festlegen. Sie können diese Variable hoch festlegen, da AzCopy Server-zu-Server-APIs verwendet, sodass Daten direkt zwischen Speicherservern kopiert werden und die Verarbeitungsleistung Ihres Computers nicht verwendet.

Verringern der Anzahl generierter Protokolle

Sie können die Leistung verbessern, indem Sie die Anzahl der Protokolleinträge reduzieren, die AzCopy bei Abschluss eines Vorgangs erstellt. Standardmäßig protokolliert AzCopy alle Aktivitäten im Zusammenhang mit einem Vorgang. Um eine optimale Leistung zu erzielen, sollten Sie den Parameter --log-level des Befehls zum Kopieren, Synchronisieren oder Entfernen auf ERROR festlegen. Auf diese Weise werden von AzCopy nur Fehler protokolliert. Standardmäßig ist der Protokolliergrad auf INFO festgelegt.

Deaktivieren der Längenüberprüfung

Beim Hoch- oder Herunterladen von Dateien sollten Sie den Wert --check-length Ihrer Kopier- oder Synchronisierungsbefehle auf false festlegen. Diese Einstellung verhindert, dass AzCopy die Länge einer Datei nach einer Übertragung überprüft. Standardmäßig überprüft AzCopy die Länge, um sicherzustellen, dass Quell- und Zieldateien nach Abschluss einer Übertragung übereinstimmen. AzCopy führt diese Überprüfung nach jeder Dateiübertragung durch. Diese Überprüfung kann die Leistung beeinträchtigen, wenn in Aufträgen eine hohe Anzahl kleiner Dateien übertragen wird.

Aktivieren der gleichzeitigen lokalen Überprüfung (Linux)

Dateiüberprüfungen werden auf einigen Linux-Systemen nicht schnell genug ausgeführt, um alle parallelen Netzwerkverbindungen auszuschöpfen. In diesen Fällen können Sie AZCOPY_CONCURRENT_SCAN auf eine höhere Zahl festlegen.

Erhöhen der Anzahl gleichzeitiger Anforderungen

Sie können den Durchsatz durch Festlegen der Umgebungsvariablen AZCOPY_CONCURRENCY_VALUE erhöhen. Diese Variable gibt die zulässige Anzahl gleichzeitiger Anforderungen an.

Wenn Ihr Computer weniger als fünf CPUs hat, wird der Wert dieser Variablen auf 32 gesetzt. Andernfalls ist der Standardwert gleich 16, multipliziert mit der Anzahl der CPUs. Der maximale Standardwert dieser Variablen ist 300, aber Sie können diesen Wert manuell höher oder niedriger festlegen.

export AZCOPY_CONCURRENCY_VALUE=<value>

Verwenden Sie azcopy env, um den aktuellen Wert dieser Variablen zu überprüfen. Wenn der Wert leer ist, können Sie den verwendeten Wert ermitteln, indem Sie sich den Anfang einer AzCopy-Protokolldatei ansehen. Dort sind der ausgewählte Wert und der Grund aufgeführt, warum er ausgewählt wurde.

Bevor Sie diese Variable festlegen, wird empfohlen, einen Vergleichstest auszuführen. Im Benchmarktest wird der empfohlene Parallelitätswert angegeben. Wenn die Netzwerkbedingungen und Nutzlasten variieren, legen Sie diese Variable alternativ auf den Begriff AUTO anstatt auf eine bestimmte Zahl fest. Diese Einstellung bewirkt, dass AzCopy immer denselben automatischen Optimierungsprozess ausführt, der in Benchmarktests verwendet wird.

Einschränken der Durchsatzdatenrate

Verwenden Sie die cap-mbps Kennzeichnung in Ihren Befehlen, um eine Obergrenze für die Durchsatzdatenrate zu platzieren. Mit dem folgenden Befehl wird beispielsweise ein Auftrag fortgesetzt und der Durchsatz auf 10 Megabit (MBit) pro Sekunde begrenzt. Dieses Feature wird nur zum Hochladen oder Herunterladen von Dateien und nicht zum Kopieren zwischen Konten unterstützt.

azcopy jobs resume <job-id> --cap-mbps 10

Optimieren der Arbeitsspeichernutzung

Legen Sie die Umgebungsvariable AZCOPY_BUFFER_GB fest, um die maximale Kapazität an Systemarbeitsspeicher festzulegen, die AzCopy zur Pufferung beim Herunterladen und Hochladen von Dateien verwenden soll. Geben Sie diesen Wert in Gigabytes (GB) an.

export AZCOPY_BUFFER_GB=<value>

Hinweis

Die Auftragsverfolgung verursacht immer zusätzlichen Aufwand im Arbeitsspeicher. Der Betrag variiert je nach Anzahl der Übertragungen in einem Auftrag. Puffer sind die größte Komponente der Speichernutzung. Sie können den Overhead steuern, indem Sie AZCOPY_BUFFER_GB verwenden, um Ihre Anforderungen ungefähr zu erfüllen, aber es ist kein Flag verfügbar, um die gesamte Speicherauslastung streng zu begrenzen.

Optimieren der Dateisynchronisierung

Der Synchronisierungsbefehl identifiziert alle Dateien am Ziel und vergleicht dann Dateinamen und Zeitstempel der letzten Änderung, bevor der Synchronisierungsvorgang gestartet wird. Wenn Sie über eine große Anzahl von Dateien verfügen, können Sie die Leistung verbessern, indem Sie diese Vorabverarbeitung beseitigen.

Um dieses Ziel zu erreichen, verwenden Sie stattdessen den Befehl azcopy copy, und legen Sie die --overwrite Kennzeichnung auf ifSourceNewer. AzCopy vergleicht Dateien, während sie kopiert werden, ohne vorab Scans und Vergleiche durchzuführen. Dieser Ansatz bietet einen Leistungsvorteil in Fällen, in denen eine große Anzahl von zu vergleichenden Dateien vorhanden ist.

Der Befehl "azcopy copy " löscht keine Dateien aus dem Ziel. Wenn Sie Dateien am Ziel löschen möchten, wenn sie nicht mehr an der Quelle vorhanden sind, verwenden Sie den Azcopy-Synchronisierungsbefehl , wobei das --delete-destination Kennzeichen auf einen Wert von true oder promptfestgelegt ist.

Verwenden mehrerer Clients zum parallelen Ausführen von Aufträgen

AzCopy funktioniert am besten, wenn nur eine Instanz auf dem Client ausgeführt wird. Wenn Sie Dateien parallel übertragen möchten, verwenden Sie mehrere Clients, und führen Sie jeweils nur eine Instanz von AzCopy aus.

Weitere Informationen