Optymalizowanie wydajności narzędzia AzCopy za pomocą usługi Azure Storage

AzCopy to narzędzie wiersza polecenia, przy użyciu którego można kopiować obiekty blob lub pliki do lub z konta magazynu. Ten artykuł ułatwia optymalizację wydajności.

Uwaga

Jeśli szukasz zawartości ułatwiającej rozpoczęcie pracy z narzędziem AzCopy, zobacz Wprowadzenie do narzędzia AzCopy

Możesz porównać wydajność, a następnie użyć poleceń i zmiennych środowiskowych, aby znaleźć optymalny kompromis między wydajnością a zużyciem zasobów.

Uruchamianie testów porównawczych

Możesz uruchomić test porównawczy wydajności dla określonych kontenerów obiektów blob lub udziałów plików, aby wyświetlić ogólne statystyki wydajności i zidentyfikować wąskie gardła wydajności. Test można uruchomić, przekazując lub pobierając wygenerowane dane testowe.

Użyj następującego polecenia, aby uruchomić test testu porównawczego wydajności.

Składnia

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

Przykład

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'

Porada

W tym przykładzie ujęta jest ścieżka argumentów z pojedynczymi cudzysłowami ('). Używaj pojedynczych cudzysłowów we wszystkich powłokach poleceń z wyjątkiem powłoki poleceń systemu Windows (cmd.exe). Jeśli używasz powłoki poleceń systemu Windows (cmd.exe), zamiast cudzysłowów pojedynczych ('').

To polecenie uruchamia test porównawczy wydajności, przekazując dane testowe do określonego miejsca docelowego. Dane testowe są generowane w pamięci, przekazywane do miejsca docelowego, a następnie usuwane z miejsca docelowego po zakończeniu testu. Możesz określić liczbę plików do wygenerowania i rozmiar, który chcesz mieć przy użyciu opcjonalnych parametrów polecenia.

Jeśli wolisz uruchomić ten test, pobierając dane, ustaw mode parametr na download. Aby uzyskać szczegółowe informacje na temat dokumentów, zobacz azcopy benchmark.

Optymalizowanie pod kątem dużej liczby małych plików

Przepływność może się zmniejszyć podczas przesyłania małych plików, zwłaszcza podczas przesyłania dużej liczby z nich. Aby zmaksymalizować wydajność, zmniejsz rozmiar każdego zadania. W przypadku operacji pobierania i przekazywania zwiększ współbieżność, zmniejsz aktywność dziennika i wyłącz funkcje, które generują wysokie koszty wydajności.

Zmniejsz rozmiar każdego zadania

Aby uzyskać optymalną wydajność, upewnij się, że każde zadania przesyłają mniej niż 10 milionów plików. Zadania, które przesyłają ponad 50 milionów plików, mogą działać źle, ponieważ mechanizm śledzenia zadań narzędzia AzCopy wiąże się ze znaczną ilością obciążeń. Aby zmniejszyć nakład pracy, rozważ podzielenie dużych miejsc pracy na mniejsze.

Jednym ze sposobów zmniejszenia rozmiaru zadania jest ograniczenie liczby plików, na które ma wpływ zadanie. W tym celu można użyć parametrów poleceń. Na przykład zadanie może kopiować tylko podzestaw katalogów przy użyciu parametru include path w ramach polecenia azcopy copy .

Użyj parametru include-pattern , aby skopiować pliki z określonym rozszerzeniem (na przykład: *.pdf). W osobnym zadaniu użyj parametru exclude-pattern , aby skopiować wszystkie pliki, które nie mają *.pdf rozszerzenia. Zobacz Przekazywanie określonych plików i Pobieranie określonych obiektów blob , aby zapoznać się z przykładami.

Po podjęciu decyzji, jak podzielić duże zadania na mniejsze, rozważ uruchomienie zadań na więcej niż jednej maszynie wirtualnej.

Zwiększanie współbieżności

Jeśli przekazujesz lub pobierasz pliki, użyj zmiennej AZCOPY_CONCURRENCY_VALUE środowiskowej, aby zwiększyć liczbę współbieżnych żądań, które mogą wystąpić na maszynie. Ustaw tę zmienną tak wysoko, jak to możliwe bez naruszania wydajności maszyny. Aby dowiedzieć się więcej na temat tej zmiennej, zobacz sekcję Zwiększanie liczby współbieżnych żądań w tym artykule.

Jeśli kopiujesz obiekty blob między kontami magazynu, rozważ ustawienie wartości zmiennej środowiskowej AZCOPY_CONCURRENCY_VALUE na wartość większą niż 1000. Możesz ustawić tę zmienną wysoką, ponieważ narzędzie AzCopy używa interfejsów API serwer-serwer, więc dane są kopiowane bezpośrednio między serwerami magazynu i nie korzystają z mocy obliczeniowej maszyny.

Zmniejsz liczbę wygenerowanych dzienników

Wydajność można poprawić, zmniejszając liczbę wpisów dziennika tworzonych przez narzędzie AzCopy podczas wykonywania operacji. Domyślnie narzędzie AzCopy rejestruje wszystkie działania związane z operacją. Aby uzyskać optymalną wydajność, rozważ ustawienie parametru --log-level kopii, synchronizacji lub usunięcia polecenia na ERRORwartość . W ten sposób narzędzie AzCopy rejestruje tylko błędy. Domyślnie poziom dziennika wartości jest ustawiony na INFOwartość .

Wyłącz sprawdzanie długości

Jeśli przekazujesz lub pobierasz pliki, rozważ ustawienie --check-length poleceń kopiowania i synchronizacji na falsewartość . Uniemożliwia to narzędziu AzCopy zweryfikowanie długości pliku po przeniesieniu. Domyślnie narzędzie AzCopy sprawdza długość, aby upewnić się, że pliki źródłowe i docelowe są zgodne po zakończeniu transferu. Narzędzie AzCopy wykonuje to sprawdzanie po każdym transferze plików. Ta kontrola może obniżyć wydajność, gdy zadania przesyłają dużą liczbę małych plików.

Włączanie współbieżnego skanowania lokalnego (Linux)

Skanowanie plików w niektórych systemach z systemem Linux nie jest wykonywane wystarczająco szybko, aby saturacji wszystkich równoległych połączeń sieciowych. W takich przypadkach można ustawić AZCOPY_CONCURRENT_SCAN wartość na większą liczbę.

Zwiększanie liczby współbieżnych żądań

Przepływność można zwiększyć, ustawiając zmienną środowiskową AZCOPY_CONCURRENCY_VALUE . Ta zmienna określa liczbę równoczesnych żądań, które mogą wystąpić.

Jeśli komputer ma mniej niż 5 procesorów CPU, wartość tej zmiennej jest ustawiona na 32wartość . W przeciwnym razie wartość domyślna jest równa 16-krotności liczby procesorów CPU. Maksymalna wartość domyślna tej zmiennej to 300, ale można ręcznie ustawić tę wartość wyższą lub niższą.

System operacyjny Polecenie
Windows set AZCOPY_CONCURRENCY_VALUE=<value>
Linux export AZCOPY_CONCURRENCY_VALUE=<value>
macOS export AZCOPY_CONCURRENCY_VALUE=<value>

Użyj elementu , azcopy env aby sprawdzić bieżącą wartość tej zmiennej. Jeśli wartość jest pusta, możesz odczytać, która wartość jest używana, patrząc na początek dowolnego pliku dziennika narzędzia AzCopy. Wybrana wartość i przyczyna jej wybrania są tam zgłaszane.

Przed ustawieniem tej zmiennej zalecamy uruchomienie testu porównawczego. Proces testu porównawczego zgłosi zalecaną wartość współbieżności. Alternatywnie, jeśli warunki sieciowe i ładunki różnią się, ustaw tę zmienną na słowo AUTO zamiast na określoną liczbę. Spowoduje to, że narzędzie AzCopy będzie zawsze uruchamiać ten sam proces automatycznego dostrajania, którego używa w testach porównawczych.

Ograniczanie szybkości danych przepływności

Możesz użyć flagi cap-mbps w poleceniach, aby umieścić limit na szybkości danych przepływności. Na przykład następujące polecenie wznawia zadanie i limituje przepływność do 10 megabitów (Mb) na sekundę.

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

Optymalizowanie użycia pamięci

Ustaw zmienną AZCOPY_BUFFER_GB środowiskową, aby określić maksymalną ilość pamięci systemowej, która ma być używana przez narzędzie AzCopy do buforowania podczas pobierania i przekazywania plików. Wyraża tę wartość w gigabajtach (GB).

System operacyjny Polecenie
Windows set AZCOPY_BUFFER_GB=<value>
Linux export AZCOPY_BUFFER_GB=<value>
macOS export AZCOPY_BUFFER_GB=<value>

Uwaga

Śledzenie zadań zawsze wiąże się z dodatkowym obciążeniem w przypadku użycia pamięci. Kwota zależy od liczby transferów w zadaniu. Bufory są największym składnikiem użycia pamięci. Możesz pomóc w kontrolowaniu nakładu pracy przy użyciu polecenia AZCOPY_BUFFER_GB , aby spełnić wymagania, ale nie ma dostępnej flagi, aby ściśle ograniczyć ogólne użycie pamięci.

Optymalizowanie synchronizacji plików

Polecenie synchronizacji identyfikuje wszystkie pliki w miejscu docelowym, a następnie porównuje nazwy plików i ostatnio zmodyfikowane znaczniki czasu przed rozpoczęciem operacji synchronizacji. Jeśli masz dużą liczbę plików, możesz zwiększyć wydajność, eliminując to przetwarzanie z góry.

Aby to zrobić, użyj polecenia azcopy copy zamiast tego i ustaw flagę --overwrite na ifSourceNewer. Narzędzie AzCopy porównuje pliki podczas kopiowania bez przeprowadzania skanowania z góry i porównań. Zapewnia to przewagę wydajności w przypadkach, w których istnieje duża liczba plików do porównania.

Polecenie azcopy copy nie usuwa plików z miejsca docelowego, więc jeśli chcesz usunąć pliki w miejscu docelowym, gdy już nie istnieją w źródle, użyj polecenia azcopy sync z --delete-destination flagą ustawioną na wartość true lub prompt.

Zobacz też