Optymalizowanie wydajności narzędzia AzCopy przy użyciu 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ł pomaga zoptymalizować wydajność.

Uwaga

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

Możesz przeprowadzić test porównawczy wydajności, 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. Możesz uruchomić test, przekazując lub pobierając wygenerowane dane testowe.

Użyj następującego polecenia, aby uruchomić test porównawczy 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=%2FSOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B%2F3Eykf%2FJLs%3D'

Porada

W tym przykładzie argumenty ścieżki są ujęte w apostrofy (""). Używaj apostrofów we wszystkich powłokach poleceń z wyjątkiem powłoki poleceń Windows (cmd.exe). Jeśli używasz powłoki poleceń Windows (cmd.exe), należy ująć argumenty ścieżki podwójnymi cudzysłowami ("") zamiast apostrofów ("").

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, jaki mają być, używając opcjonalnych parametrów polecenia.

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

Optymalizacja 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 osiągnąć 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 znacznym obciążeniem. Aby zmniejszyć nakład pracy, rozważ podzielenie dużych zadań na mniejsze.

Jednym ze sposobów zmniejszenia rozmiaru zadania jest ograniczenie liczby plików, na które ma wpływ zadanie. Aby to zrobić, możesz użyć parametrów polecenia. Na przykład zadanie może skopiować tylko podzbiór katalogów przy użyciu parametru include path w ramach polecenia azcopy copy .

Użyj parametru include-pattern , aby skopiować pliki, które mają określone rozszerzenie (na przykład: *.pdf). W osobnym zadaniu użyj parametru exclude-pattern , aby skopiować wszystkie pliki, które nie mają *.pdf rozszerzenia. Zobacz Upload określonych plików i Pobierz określone obiekty 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 AZCOPY_CONCURRENCY_VALUE zmiennej ś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 AZCOPY_CONCURRENCY_VALUE zmiennej środowiskowej na wartość większą niż 1000. Tę zmienną wysoką można ustawić, 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 kopiowania, synchronizacji lub usuwania polecenia na wartość ERROR. Dzięki temu 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 wartość false. Uniemożliwia to narzędziu AzCopy weryfikowanie 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 tę kontrolę 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 Linux nie jest wykonywane wystarczająco szybko, aby nasycić wszystkie równoległe połączenia sieciowe. W takich przypadkach można ustawić wartość AZCOPY_CONCURRENT_SCAN na wyższą liczbę.

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

Przepływność można zwiększyć, ustawiając zmienną AZCOPY_CONCURRENCY_VALUE środowiskową. 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żesz 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 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 szybkości danych przepływności. Na przykład następujące polecenie wznawia zadanie i powoduje ograniczenie przepływności 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 w celu spełnienia wymagań, 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.

W tym celu użyj zamiast tego polecenia azcopy copy i ustaw flagę --overwrite na ifSourceNewer. Narzędzie AzCopy porównuje pliki podczas ich kopiowania bez przeprowadzania wcześniejszych skanowań i porównań. Zapewnia to krawędź wydajności w przypadkach, gdy 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ż