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ł pomaga zoptymalizować wydajność.

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 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=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D'

Napiwek

W tym przykładzie argumenty ścieżki są ujęte w apostrofy (''). 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), ujęć argumenty ścieżki z podwójnymi cudzysłowami ("") zamiast pojedynczych cudzysłowó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, który chcesz mieć, 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 plików

Przepływność może się zmniejszyć podczas przesyłania dużej liczby plików. Każda operacja kopiowania przekłada się na co najmniej jedną transakcję, która musi zostać wykonana w usłudze magazynu. Podczas przesyłania dużej liczby plików należy wziąć pod uwagę liczbę transakcji, które należy wykonać, a każdy potencjalny wpływ na te transakcje może mieć, jeśli inne działania występują na koncie magazynu w tym samym czasie.

Aby zmaksymalizować wydajność, można zmniejszyć rozmiar każdego zadania, ograniczając liczbę plików kopiowanych w jednym zadaniu. W przypadku operacji pobierania i przekazywania zwiększ współbieżność zgodnie z potrzebami, 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 kopiować tylko podzestaw katalogów przy użyciu parametru include pathw 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. Aby zapoznać się z przykładami, zobacz Przekazywanie określonych plików i Pobieranie określonych obiektów blob.

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, dlatego 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 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 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 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 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 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 3000, 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 wartości , 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óry jest używany 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 wznowi zadanie i ograniczy 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żaj 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 użyciu 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 AZCOPY_BUFFER_GB polecenia , aby w przybliżeniu 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 krawędź 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 nie istnieją już w źródle, użyj polecenia azcopy sync z --delete-destination flagą ustawioną na wartość true lub prompt.

Równoległe uruchamianie zadań przy użyciu wielu klientów

Narzędzie AzCopy działa najlepiej, gdy na kliencie działa tylko jedno wystąpienie. Jeśli chcesz przesyłać pliki równolegle, użyj wielu klientów i uruchom tylko jedno wystąpienie narzędzia AzCopy na każdym z nich.

Zobacz też