Sdílet prostřednictvím


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 downloadhodnotu . 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 32hodnotu . 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.

Viz také