Optimera prestanda för AzCopy med Azure Storage

AzCopy är ett kommandoradsverktyg som du kan använda för att kopiera blobar eller filer till eller från ett lagringskonto. Den här artikeln hjälper dig att optimera prestanda.

Kommentar

Om du letar efter innehåll som hjälper dig att komma igång med AzCopy kan du läsa Komma igång med AzCopy

Jämför prestanda och använd kommandon och miljövariabler för att hitta en optimal kompromiss mellan prestanda och resursförbrukning.

Köra benchmark-tester

Du kan köra ett prestandatest på specifika blobcontainrar eller filresurser för att visa allmän prestandastatistik och identifiera flaskhalsar i prestanda. Du kan köra testet genom att ladda upp eller ladda ned genererade testdata.

Använd följande kommando för att köra ett prestandatest.

Syntax

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

Exempel

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'

Dricks

Det här exemplet omger sökvägsargument med enkla citattecken ('''). Använd enkla citattecken i alla kommandogränssnitt förutom Windows Command Shell (cmd.exe). Om du använder ett Windows-kommandogränssnitt (cmd.exe) omger du sökvägsargument med dubbla citattecken ("") i stället för enkla citattecken ('').

Det här kommandot kör ett prestandamått genom att ladda upp testdata till ett angivet mål. Testdata genereras i minnet, laddas upp till målet och tas sedan bort från målet när testet är klart. Du kan ange hur många filer som ska genereras och vilken storlek du vill att de ska vara med hjälp av valfria kommandoparametrar.

Om du föredrar att köra det här testet genom att ladda ned data anger du parametern mode till download. Detaljerade referensdokument finns i azcopy benchmark.

Optimera för ett stort antal filer

Dataflödet kan minska vid överföring av ett stort antal filer. Varje kopieringsåtgärd översätts till en eller flera transaktioner som måste köras i lagringstjänsten. När du överför ett stort antal filer bör du tänka på antalet transaktioner som måste utföras och eventuella effekter som dessa transaktioner kan ha om andra aktiviteter inträffar på lagringskontot samtidigt.

För att maximera prestanda kan du minska storleken på varje jobb genom att begränsa antalet filer som kopieras i ett enda jobb. För nedladdnings- och uppladdningsåtgärder ökar du samtidigheten efter behov, minskar loggaktiviteten och inaktiverar funktioner som medför höga prestandakostnader.

Minska storleken på varje jobb

Se till att varje jobb överför färre än 10 miljoner filer för att uppnå optimala prestanda. Jobb som överför mer än 50 miljoner filer kan fungera dåligt eftersom AzCopy-mekanismen för jobbspårning medför en betydande mängd omkostnader. Om du vill minska kostnaderna bör du överväga att dela upp stora jobb i mindre jobb.

Ett sätt att minska storleken på ett jobb är att begränsa antalet filer som påverkas av ett jobb. Du kan använda kommandoparametrar för att göra det. Ett jobb kan till exempel bara kopiera en delmängd kataloger med hjälp av parametern include path som en del av kommandot azcopy copy .

Använd parametern include-pattern för att kopiera filer som har ett specifikt tillägg (till exempel: *.pdf). I ett separat jobb använder du parametern exclude-pattern för att kopiera alla filer som inte har *.pdf tillägg. Exempel finns i Ladda upp specifika filer och Ladda ned specifika blobar .

När du har bestämt dig för hur du ska dela upp stora jobb i mindre jobb bör du överväga att köra jobb på mer än en virtuell dator (VM).

Öka samtidigheten

Om du laddar upp eller laddar ned filer använder du AZCOPY_CONCURRENCY_VALUE miljövariabeln för att öka antalet samtidiga begäranden som kan inträffa på datorn. Ställ in den här variabeln så högt som möjligt utan att äventyra datorns prestanda. Mer information om den här variabeln finns i avsnittet Öka antalet samtidiga begäranden i den här artikeln.

Om du kopierar blobar mellan lagringskonton bör du överväga att ange värdet för AZCOPY_CONCURRENCY_VALUE miljövariabeln till ett värde som är större än 1000. Du kan ange den här variabeln högt eftersom AzCopy använder API:er från server till server, så att data kopieras direkt mellan lagringsservrar och inte använder datorns bearbetningskraft.

Minska antalet genererade loggar

Du kan förbättra prestanda genom att minska antalet loggposter som AzCopy skapar när en åtgärd slutförs. Som standard loggar AzCopy all aktivitet som är relaterad till en åtgärd. För att uppnå optimala prestanda kan du överväga att ange parametern --log-level för kommandot kopiera, synkronisera eller ta bort till ERROR. På så sätt loggar AzCopy endast fel. Som standard är värdeloggnivån inställd på INFO.

Inaktivera längdkontroll

Om du laddar upp eller laddar ned filer kan du överväga att ställa in --check-length kopierings- och synkroniseringskommandona på false. Detta hindrar AzCopy från att verifiera längden på en fil efter en överföring. Som standard kontrollerar AzCopy längden för att säkerställa att käll- och målfilerna matchar när en överföring har slutförts. AzCopy utför den här kontrollen efter varje filöverföring. Den här kontrollen kan försämra prestanda när jobb överför ett stort antal små filer.

Aktivera samtidig lokal genomsökning (Linux)

Filgenomsökningar på vissa Linux-system körs inte tillräckligt snabbt för att mätta alla parallella nätverksanslutningar. I dessa fall kan du ange AZCOPY_CONCURRENT_SCAN ett högre tal.

Öka antalet samtidiga begäranden

Du kan öka dataflödet genom att AZCOPY_CONCURRENCY_VALUE ange miljövariabeln. Den här variabeln anger antalet samtidiga begäranden som kan utföras.

Om datorn har färre än 5 processorer är värdet för den här variabeln inställt på 32. Annars är standardvärdet lika med 16 multiplicerat med antalet processorer. Det maximala standardvärdet för den här variabeln är 3000, men du kan ange det här värdet högre eller lägre manuellt.

Operativsystem Kommando
Windows set AZCOPY_CONCURRENCY_VALUE=<value>
Linux export AZCOPY_CONCURRENCY_VALUE=<value>
macOS export AZCOPY_CONCURRENCY_VALUE=<value>

azcopy env Använd för att kontrollera det aktuella värdet för den här variabeln. Om värdet är tomt kan du läsa vilket värde som används genom att titta i början av en AzCopy-loggfil. Det valda värdet och orsaken till att det valdes rapporteras där.

Innan du anger den här variabeln rekommenderar vi att du kör ett benchmark-test. Benchmark-testprocessen rapporterar det rekommenderade samtidighetsvärdet. Om dina nätverksvillkor och nyttolaster varierar kan du också ange den här variabeln till ordet AUTO i stället för till ett visst tal. Det gör att AzCopy alltid kör samma automatiska justeringsprocess som den använder i benchmark-tester.

Begränsa datahastigheten för dataflöde

Du kan använda cap-mbps flaggan i dina kommandon för att placera ett tak för dataflödets datahastighet. Följande kommando återupptar till exempel ett jobb och begränsar dataflödet till 10 megabitar (Mb) per sekund.

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

Optimera minnesanvändning

AZCOPY_BUFFER_GB Ange miljövariabeln för att ange den maximala mängden systemminne som du vill att AzCopy ska använda för buffring när du laddar ned och laddar upp filer. Uttrycka det här värdet i gigabyte (GB).

Operativsystem Kommando
Windows set AZCOPY_BUFFER_GB=<value>
Linux export AZCOPY_BUFFER_GB=<value>
macOS export AZCOPY_BUFFER_GB=<value>

Kommentar

Jobbspårning medför alltid ytterligare kostnader för minnesanvändning. Beloppet varierar beroende på antalet överföringar i ett jobb. Buffertar är den största komponenten i minnesanvändningen. Du kan hjälpa till att styra omkostnaderna genom att använda AZCOPY_BUFFER_GB för att ungefär uppfylla dina krav, men det finns ingen flagga tillgänglig för att strikt begränsa den totala minnesanvändningen.

Optimera filsynkronisering

Synkroniseringskommandot identifierar alla filer på målet och jämför sedan filnamn och senast ändrade tidsstämplar innan synkroniseringsåtgärden startas. Om du har ett stort antal filer kan du förbättra prestandan genom att eliminera den här bearbetningen i förväg.

Det gör du genom att använda kommandot azcopy copy i stället och ange --overwrite flaggan till ifSourceNewer. AzCopy jämför filer när de kopieras utan att utföra några direkta genomsökningar och jämförelser. Detta ger en prestandagräns i fall där det finns ett stort antal filer att jämföra.

Kommandot azcopy copy tar inte bort filer från målet, så om du vill ta bort filer på målet när de inte längre finns vid källan använder du kommandot azcopy sync med --delete-destination flaggan inställd på värdet true eller prompt.

Använda flera klienter för att köra jobb parallellt

AzCopy fungerar bäst när endast en instans körs på klienten. Om du vill överföra filer parallellt använder du flera klienter och kör bara en instans av AzCopy på var och en.

Se även