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.

Anteckning

Innehåll som hjälper dig att komma igång med AzCopy finns i 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.

Att köra benchmarktester

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'

Tips

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 lagringstjänsten måste köra. När du överför ett stort antal filer bör du tänka på antalet transaktioner som måste köras och den potentiella inverkan 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 du kopierar 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

För att uppnå optimala prestanda kontrollerar du att varje jobb överför färre än 10 miljoner filer. 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ägget. 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 för 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. Den här inställningen 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 utförs inte tillräckligt snabbt för att mätta alla parallella nätverksanslutningar. I dessa fall kan du ange AZCOPY_CONCURRENT_SCAN till 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 fem 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 300, men du kan ange det här värdet högre eller lägre manuellt.

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. Testprocessen för benchmark 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. Den inställningen gör att AzCopy alltid kör samma automatiska justeringsprocess som den använder i benchmark-tester.

Begränsa dataflödet

cap-mbps Använd flaggan i dina kommandon för att ange 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. Den här funktionen stöds endast för att ladda upp eller ladda ned filer, inte kopiera mellan konton.

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).

export AZCOPY_BUFFER_GB=<value>

Anteckning

Jobbspårning lägger alltid till minnesöverhead i minnesanvändningen. 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 kontrollera överheadkostnaderna med hjälp av för att ungefär uppfylla dina krav, men det finns ingen flagga tillgänglig för att strikt begränsa den totala användningen av minne.

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.

För att uppnå det här målet använder du kommandot azcopy copy i stället och anger --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. Den här metoden ger en prestationsfördel 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. 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