Optimalizace výkonu nástroje AzCopy se službou Azure Storage
AzCopy je nástroj příkazového řádku, pomocí kterého můžete kopírovat objekty blob nebo soubory do nebo z účtu úložiště. Tento článek vám pomůže optimalizovat výkon.
Poznámka:
Pokud hledáte obsah, který vám pomůže začít s Nástrojem AzCopy, přečtěte si téma Začínáme s nástrojem AzCopy.
Můžete provést srovnávací testy výkonu a pak pomocí příkazů a proměnných prostředí najít optimální kompromis mezi výkonem a spotřebou prostředků.
Spuštění srovnávacích testů
Můžete spustit test srovnávacího testu výkonnosti pro konkrétní kontejnery objektů blob nebo sdílené složky, abyste zobrazili obecné statistiky výkonu a identifikovali kritické body výkonu. Test můžete spustit tak, že nahrajete nebo stáhnete vygenerovaná testovací data.
Pomocí následujícího příkazu spusťte test srovnávacího testu výkonnosti.
Syntaxe
azcopy benchmark 'https://<storage-account-name>.blob.core.windows.net/<container-name>'
Příklad
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
Tento příklad uzavře argumenty cesty do jednoduchých uvozovek ('' ). Použití jednoduchých uvozovek ve všech příkazových prostředích s výjimkou prostředí Windows Command Shell (cmd.exe). Pokud používáte prostředí Windows Command Shell (cmd.exe), uzavřete argumenty cesty do dvojitých uvozovek ("") místo jednoduchých uvozovek ('' ).
Tento příkaz spustí srovnávací test výkonu tak, že nahraje testovací data do zadaného cíle. Testovací data se vygenerují v paměti, nahrají se do cíle a po dokončení testu se z cíle odstraní. Pomocí volitelných parametrů příkazu můžete určit, kolik souborů se má vygenerovat a jakou velikost chcete.
Pokud chcete tento test spustit stažením dat, nastavte mode
parametr na download
hodnotu . Podrobnou referenční dokumentaci najdete v tématu azcopy benchmark.
Optimalizace pro velký počet souborů
Propustnost se může snížit při přenosu velkého počtu souborů. Každá operace kopírování se překládá na jednu nebo více transakcí, které musí být spuštěny ve službě úložiště. Při přenosu velkého počtu souborů zvažte počet transakcí, které je potřeba provést, a případné dopady těchto transakcí mohou mít, pokud se v účtu úložiště současně vyskytují jiné aktivity.
Chcete-li maximalizovat výkon, můžete zmenšit velikost každé úlohy omezením počtu souborů, které se zkopírují v jedné úloze. U operací stahování a nahrávání zvyšte podle potřeby souběžnost, snižte aktivitu protokolu a vypněte funkce, které účtují vysoké náklady na výkon.
Zmenšení velikosti jednotlivých úloh
Aby bylo dosaženo optimálního výkonu, zajistěte, aby každá úloha přenese méně než 10 milionů souborů. Úlohy, které přenášejí více než 50 milionů souborů, můžou fungovat špatně, protože mechanismus sledování úloh AzCopy způsobuje značné režijní náklady. Pokud chcete snížit režii, zvažte rozdělení velkých úloh na menší úlohy.
Jedním ze způsobů, jak zmenšit velikost úlohy, je omezit počet souborů ovlivněných úlohou. K tomu můžete použít parametry příkazu. Například úloha může kopírovat pouze podmnožinu adresářů pomocí parametru include path
jako součást příkazu azcopy copy .
Pomocí parametru include-pattern
zkopírujte soubory, které mají konkrétní příponu (například: *.pdf
). V samostatné úloze pomocí parametru exclude-pattern
zkopírujte všechny soubory, které nemají *.pdf
příponu. Příklady najdete v tématu Nahrání konkrétních souborů a stažení konkrétních objektů blob .
Po rozhodnutí, jak rozdělit velké úlohy na menší úlohy, zvažte spuštění úloh na více než jednom virtuálním počítači.
Zvýšení souběžnosti
Pokud nahráváte nebo stahujete soubory, zvyšte počet souběžných požadavků na vašem počítači pomocí AZCOPY_CONCURRENCY_VALUE
proměnné prostředí. Nastavte tuto proměnnou co nejvýkonněji bez ohrožení výkonu počítače. Další informace o této proměnné najdete v části Zvýšení počtu souběžných požadavků v tomto článku.
Pokud kopírujete objekty blob mezi účty úložiště, zvažte nastavení hodnoty AZCOPY_CONCURRENCY_VALUE
proměnné prostředí na hodnotu větší než 1000
. Tuto proměnnou můžete nastavit vysoko, protože AzCopy používá rozhraní API typu server-server, takže se data kopírují přímo mezi servery úložiště a nepoužívají výpočetní výkon vašeho počítače.
Snížení počtu vygenerovaných protokolů
Výkon můžete zvýšit snížením počtu položek protokolu, které AzCopy vytvoří při dokončení operace. Ve výchozím nastavení AzCopy protokoluje všechny aktivity související s operací. Pokud chcete dosáhnout optimálního výkonu, zvažte nastavení --log-level
parametru kopírování, synchronizace nebo odebrání příkazu na ERROR
. AzCopy tak protokoluje pouze chyby. Ve výchozím nastavení je úroveň protokolu hodnot nastavena na INFO
.
Vypnutí kontroly délky
Pokud nahráváte nebo stahujete soubory, zvažte nastavení --check-length
příkazů kopírování a synchronizace na false
. Tím zabráníte nástroji AzCopy ověřit délku souboru po přenosu. AzCopy ve výchozím nastavení zkontroluje délku, aby se po dokončení přenosu shodovaly se zdrojovými a cílovými soubory. AzCopy provede tuto kontrolu po každém přenosu souborů. Tato kontrola může snížit výkon při přenosu velkého počtu malých souborů.
Zapnutí souběžné místní kontroly (Linux)
Kontroly souborů v některých linuxových systémech se nespouštějí dostatečně rychle, aby nasytily všechna paralelní síťová připojení. V těchto případech můžete nastavit AZCOPY_CONCURRENT_SCAN
hodnotu vyššího čísla.
Zvýšení počtu souběžných požadavků
Propustnost můžete zvýšit nastavením AZCOPY_CONCURRENCY_VALUE
proměnné prostředí. Tato proměnná určuje povolený počet souběžných požadavků.
Pokud má váš počítač méně než 5 procesorů, je hodnota této proměnné nastavena na 32
hodnotu . Jinak se výchozí hodnota rovná 16násobku počtu CPU. Maximální výchozí hodnota této proměnné je 3000
, ale tuto hodnotu můžete nastavit ručně vyšší nebo nižší.
Operační systém | Příkaz |
---|---|
Windows | set AZCOPY_CONCURRENCY_VALUE=<value> |
Linux | export AZCOPY_CONCURRENCY_VALUE=<value> |
macOS | export AZCOPY_CONCURRENCY_VALUE=<value> |
azcopy env
Slouží ke kontrole aktuální hodnoty této proměnné. Pokud je hodnota prázdná, můžete si přečíst, kterou hodnotu používáte, a to tak, že se podíváte na začátek libovolného souboru protokolu AzCopy. Vybraná hodnota a důvod, proč byla vybrána, jsou tam hlášeny.
Před nastavením této proměnné doporučujeme spustit srovnávací test. Proces srovnávacího testu oznámí doporučenou hodnotu souběžnosti. Případně pokud se podmínky sítě a datové části liší, nastavte tuto proměnnou na slovo AUTO
místo na určité číslo. To způsobí, že AzCopy bude vždy spouštět stejný automatický proces ladění, který používá v srovnávacích testech.
Omezení přenosové rychlosti dat propustnosti
Příznak v příkazech můžete použít cap-mbps
k umístění stropu na rychlost dat propustnosti. Následující příkaz například obnoví úlohu a limituje propustnost na 10
megabity (Mb) za sekundu.
azcopy jobs resume <job-id> --cap-mbps 10
Optimalizace využití paměti
Nastavte proměnnou AZCOPY_BUFFER_GB
prostředí tak, aby určila maximální velikost systémové paměti, kterou má AzCopy použít pro ukládání do vyrovnávací paměti při stahování a nahrávání souborů. Tuto hodnotu vyjádřete v gigabajtech (GB).
Operační systém | Příkaz |
---|---|
Windows | set AZCOPY_BUFFER_GB=<value> |
Linux | export AZCOPY_BUFFER_GB=<value> |
macOS | export AZCOPY_BUFFER_GB=<value> |
Poznámka:
Sledování úloh vždy způsobuje další režii při využití paměti. Částka se liší podle počtu přenosů v úloze. Vyrovnávací paměti jsou největší součástí využití paměti. Režijní náklady AZCOPY_BUFFER_GB
můžete řídit pomocí přibližného splnění vašich požadavků, ale není k dispozici žádný příznak pro omezení celkového využití paměti.
Optimalizace synchronizace souborů
Příkaz synchronizace identifikuje všechny soubory v cíli a potom porovná názvy souborů a časová razítka poslední změny před zahájením operace synchronizace. Pokud máte velký počet souborů, můžete zvýšit výkon odstraněním tohoto počátečního zpracování.
K tomu použijte příkaz azcopy copy a nastavte --overwrite
příznak na ifSourceNewer
. AzCopy bude porovnávat soubory při kopírování bez provedení počátečních kontrol a porovnání. To poskytuje hraniční výkon v případech, kdy existuje velký počet souborů k porovnání.
Příkaz azcopy copy neodstraní soubory z cíle, takže pokud chcete odstranit soubory v cíli, pokud už ve zdroji neexistují, použijte příkaz azcopy sync s příznakem --delete-destination
nastaveným na hodnotu true
nebo prompt
.
Paralelní spouštění úloh pomocí více klientů
Nástroj AzCopy funguje nejlépe, když na klientovi běží jenom jedna instance. Pokud chcete přenášet soubory paralelně, použijte více klientů a na každém z nich spusťte pouze jednu instanci nástroje AzCopy.