De prestaties van AzCopy optimaliseren met Azure Storage

AzCopy is een opdrachtregelprogramma dat u kunt gebruiken om blobs of bestanden te kopiëren vanuit of naar een opslagaccount. Dit artikel helpt u bij het optimaliseren van de prestaties.

Notitie

Als u inhoud zoekt om aan de slag te gaan met AzCopy, raadpleegt u Aan de slag met AzCopy

U kunt prestaties benchmarken en vervolgens opdrachten en omgevingsvariabelen gebruiken om een optimale balans te vinden tussen prestaties en resourceverbruik.

Benchmarktests uitvoeren

U kunt een prestatiebenchmarktest uitvoeren op specifieke blobcontainers of bestandsshares om algemene prestatiestatistieken weer te geven en prestatieknelpunten te identificeren. U kunt de test uitvoeren door gegenereerde testgegevens te uploaden of te downloaden.

Gebruik de volgende opdracht om een prestatiebenchmarktest uit te voeren.

Syntaxis

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

Voorbeeld

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'

Tip

In dit voorbeeld worden padargumenten tussen enkele aanhalingstekens (''' ) geplaatst. Gebruik enkele aanhalingstekens in alle opdrachtshells, met uitzondering van de Windows Command Shell (cmd.exe). Als u een Windows Command Shell (cmd.exe) gebruikt, plaatst u padargumenten tussen dubbele aanhalingstekens ("") in plaats van enkele aanhalingstekens ('').

Met deze opdracht wordt een prestatiebenchmark uitgevoerd door testgegevens te uploaden naar een opgegeven bestemming. De testgegevens worden gegenereerd in het geheugen, geüpload naar het doel en vervolgens verwijderd uit de bestemming nadat de test is voltooid. U kunt opgeven hoeveel bestanden u wilt genereren en welke grootte u wilt hebben met behulp van optionele opdrachtparameters.

Als u deze test liever uitvoert door gegevens te downloaden, stelt u de mode parameter in op download. Zie azcopy-benchmark voor gedetailleerde referentiedocumenten.

Optimaliseren voor grote aantallen bestanden

Doorvoer kan afnemen bij het overdragen van grote aantallen bestanden. Elke kopieerbewerking wordt omgezet in een of meer transacties die moeten worden uitgevoerd in de opslagservice. Wanneer u een groot aantal bestanden overdraagt, moet u rekening houden met het aantal transacties dat moet worden uitgevoerd en eventuele mogelijke gevolgen voor deze transacties kunnen hebben als andere activiteiten tegelijkertijd in het opslagaccount plaatsvinden.

Als u de prestaties wilt maximaliseren, kunt u de grootte van elke taak verkleinen door het aantal bestanden te beperken dat in één taak wordt gekopieerd. Voor download- en uploadbewerkingen verhoogt u indien nodig de gelijktijdigheid, verlaagt u de logboekactiviteit en schakelt u functies uit waarvoor hoge prestatiekosten in rekening worden gebracht.

De grootte van elke taak verkleinen

Om optimale prestaties te bereiken, moet u ervoor zorgen dat elke taak minder dan 10 miljoen bestanden overdraagt. Taken die meer dan 50 miljoen bestanden overdragen, kunnen slecht presteren omdat het AzCopy-mechanisme voor het bijhouden van taken een aanzienlijke hoeveelheid overhead veroorzaakt. U kunt de overhead verminderen door grote taken te verdelen in kleinere taken.

Een manier om de grootte van een taak te verkleinen, is door het aantal bestanden dat wordt beïnvloed door een taak te beperken. U kunt hiervoor opdrachtparameters gebruiken. Een taak kan bijvoorbeeld alleen een subset van mappen kopiëren met behulp van de include path parameter als onderdeel van de opdracht azcopy copy .

Gebruik de include-pattern parameter om bestanden met een specifieke extensie te kopiëren (bijvoorbeeld: *.pdf). Gebruik in een afzonderlijke taak de exclude-pattern parameter om alle bestanden te kopiëren die geen extensie hebben *.pdf . Zie Specifieke bestanden uploaden en specifieke blobs downloaden voor voorbeelden.

Nadat u hebt besloten hoe u grote taken in kleinere taken kunt verdelen, kunt u overwegen om taken uit te voeren op meer dan één virtuele machine (VM).

Gelijktijdigheid verhogen

Als u bestanden uploadt of downloadt, gebruikt u de AZCOPY_CONCURRENCY_VALUE omgevingsvariabele om het aantal gelijktijdige aanvragen op uw computer te verhogen. Stel deze variabele zo hoog mogelijk in zonder de prestaties van uw machine in gevaar te brengen. Zie de sectie Aantal gelijktijdige aanvragen van dit artikel verhogen voor meer informatie over deze variabele.

Als u blobs kopieert tussen opslagaccounts, kunt u overwegen om de waarde van de AZCOPY_CONCURRENCY_VALUE omgevingsvariabele in te stellen op een waarde die groter is dan 1000. U kunt deze variabele hoog instellen omdat AzCopy gebruikmaakt van server-naar-server-API's, zodat gegevens rechtstreeks tussen opslagservers worden gekopieerd en de verwerkingskracht van uw computer niet gebruikt.

Het aantal gegenereerde logboeken verlagen

U kunt de prestaties verbeteren door het aantal logboekvermeldingen te verminderen dat Door AzCopy wordt gemaakt tijdens het voltooien van een bewerking. Standaard registreert AzCopy alle activiteiten met betrekking tot een bewerking. Voor optimale prestaties kunt u overwegen om de parameter van uw --log-level kopie, synchronisatie of verwijderopdracht in te stellen op ERROR. Op die manier registreert AzCopy alleen fouten. Standaard is het waardelogboekniveau ingesteld op INFO.

Lengtecontrole uitschakelen

Als u bestanden uploadt of downloadt, kunt u overwegen om de --check-length opdrachten voor kopiëren en synchroniseren in te stellen op false. Dit voorkomt dat AzCopy de lengte van een bestand na een overdracht controleert. Standaard controleert AzCopy de lengte om ervoor te zorgen dat de bron- en doelbestanden overeenkomen nadat een overdracht is voltooid. AzCopy voert deze controle uit na elke bestandsoverdracht. Deze controle kan de prestaties verminderen wanneer taken grote aantallen kleine bestanden overdragen.

Gelijktijdig lokaal scannen inschakelen (Linux)

Bestandsscans op sommige Linux-systemen worden niet snel genoeg uitgevoerd om alle parallelle netwerkverbindingen te verzadigen. In dergelijke gevallen kunt u het AZCOPY_CONCURRENT_SCAN instellen op een hoger getal.

Het aantal gelijktijdige aanvragen verhogen

U kunt de doorvoer verhogen door de AZCOPY_CONCURRENCY_VALUE omgevingsvariabele in te stellen. Met deze variabele geeft u het aantal gelijktijdige aanvragen op dat kan plaatsvinden.

Als uw computer minder dan 5 CPU's heeft, wordt de waarde van deze variabele ingesteld op 32. Anders is de standaardwaarde gelijk aan 16 vermenigvuldigd met het aantal CPU's. De maximale standaardwaarde van deze variabele is 3000, maar u kunt deze waarde handmatig hoger of lager instellen.

Besturingssysteem Opdracht
Windows set AZCOPY_CONCURRENCY_VALUE=<value>
Linux export AZCOPY_CONCURRENCY_VALUE=<value>
MacOS export AZCOPY_CONCURRENCY_VALUE=<value>

Gebruik de azcopy env functie om de huidige waarde van deze variabele te controleren. Als de waarde leeg is, kunt u lezen welke waarde wordt gebruikt door naar het begin van een AzCopy-logboekbestand te kijken. De geselecteerde waarde en de reden waarom deze is geselecteerd, worden daar gerapporteerd.

Voordat u deze variabele instelt, wordt u aangeraden een benchmarktest uit te voeren. Het benchmarktestproces rapporteert de aanbevolen gelijktijdigheidswaarde. Als uw netwerkomstandigheden en nettoladingen variëren, kunt u deze variabele ook instellen op het woord AUTO in plaats van op een bepaald getal. Hierdoor wordt in AzCopy altijd hetzelfde automatische afstemmingsproces uitgevoerd dat wordt gebruikt in benchmarktests.

De doorvoergegevenssnelheid beperken

U kunt de cap-mbps vlag in uw opdrachten gebruiken om een plafond te plaatsen voor de doorvoergegevenssnelheid. Met de volgende opdracht wordt bijvoorbeeld een taak hervat en wordt de doorvoer naar 10 megabits (Mb) per seconde hervat.

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

Geheugengebruik optimaliseren

Stel de AZCOPY_BUFFER_GB omgevingsvariabele in om de maximale hoeveelheid systeemgeheugen op te geven die AzCopy moet gebruiken voor buffering bij het downloaden en uploaden van bestanden. Geef deze waarde op in gigabytes (GB).

Besturingssysteem Opdracht
Windows set AZCOPY_BUFFER_GB=<value>
Linux export AZCOPY_BUFFER_GB=<value>
MacOS export AZCOPY_BUFFER_GB=<value>

Notitie

Bij het bijhouden van taken wordt altijd extra overhead in het geheugengebruik in rekening gebracht. Het bedrag varieert op basis van het aantal overdrachten in een taak. Buffers zijn het grootste onderdeel van het geheugengebruik. U kunt overhead beheren door ongeveer AZCOPY_BUFFER_GB aan uw vereisten te voldoen, maar er is geen vlag beschikbaar om het totale geheugengebruik strikt te beperken.

Bestandssynchronisatie optimaliseren

De synchronisatieopdracht identificeert alle bestanden op de bestemming en vergelijkt vervolgens bestandsnamen en laatst gewijzigde tijdstempels voordat de synchronisatiebewerking wordt gestart. Als u een groot aantal bestanden hebt, kunt u de prestaties verbeteren door deze verwerking vooraf te elimineren.

Als u dit wilt doen, gebruikt u in plaats daarvan de opdracht azcopy copy en stelt u de --overwrite vlag in op ifSourceNewer. AzCopy vergelijkt bestanden terwijl ze worden gekopieerd zonder dat er vooraf scans en vergelijkingen worden uitgevoerd. Dit biedt een prestatierand in gevallen waarin er een groot aantal bestanden is om te vergelijken.

De opdracht azcopy copy verwijdert geen bestanden van de bestemming, dus als u bestanden op de bestemming wilt verwijderen wanneer ze niet meer bestaan in de bron, gebruikt u de opdracht azcopy-synchronisatie met de --delete-destination vlag ingesteld op een waarde van true of prompt.

Meerdere clients gebruiken om taken parallel uit te voeren

AzCopy werkt het best wanneer slechts één exemplaar op de client wordt uitgevoerd. Als u bestanden parallel wilt overdragen, gebruikt u meerdere clients en voert u slechts één exemplaar van AzCopy uit op elk exemplaar.

Zie ook