Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
AzCopy — это утилита командной строки, которую можно использовать для копирования блобов или файлов в учетную запись хранения или из неё. Эта статья помогает оптимизировать производительность.
Примечание.
Сведения о том, как приступить к работе с AzCopy, см. в статье "Начало работы с AzCopy".
Можно измерить производительность, а затем использовать команды и переменные среды для поиска оптимального компромисса между производительностью и потреблением ресурсов.
Выполнение тестов производительности
Для просмотра общей статистики производительности и выявления узких мест можно запустить тест производительности для конкретных контейнеров BLOB-объектов или общих файловых ресурсов. Тест можно выполнить, отправляя или скачивая созданные тестовые данные.
Для выполнения теста производительности используйте следующую команду.
Синтаксис
azcopy benchmark 'https://<storage-account-name>.blob.core.windows.net/<container-name>'
Пример
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'
Совет
В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").
Эта команда запускает тест производительности, отправляя тестовые данные в указанное место назначения. Тестовые данные создаются в памяти, передаются в место назначения, а после завершения теста удаляются оттуда. С помощью дополнительных параметров команды можно указать нужное количество создаваемых файлов и их размер.
Если предпочтительнее выполнить этот тест, скачивая данные, задайте для параметра mode значение download. Подробную справочную документацию можно найти в разделе Тест производительности azcopy.
Оптимизация для большого количества файлов
Пропускная способность может уменьшиться при передаче большого количества файлов. Каждая операция копирования преобразуется в одну или несколько транзакций, которые должна выполнять служба хранилища. При передаче большого количества файлов учитывайте необходимость выполнить транзакции и потенциальное влияние этих транзакций, если в учетной записи хранения одновременно происходят другие действия.
Чтобы повысить производительность, можно уменьшить размер каждого задания, ограничив количество файлов, скопированных в одном задании. Для операций загрузки и отправки увеличьте параллелизм по мере необходимости, уменьшите активность журнала и отключите функции, которые несут высокие затраты на производительность.
Уменьшение размера каждого задания
Чтобы обеспечить оптимальную производительность, убедитесь, что каждое задание передает менее 10 миллионов файлов. Задания, передающие более 50 млн файлов, могут работать плохо, так как механизм отслеживания заданий AzCopy приводит к значительным издержкам. Чтобы снизить накладные расходы, проанализируйте возможность разделения больших заданий на меньшие.
Одним из способов уменьшения размера задания является ограничение количества файлов, затрагиваемых заданием. Для этого можно использовать параметры команды. Например, при использовании параметра include path в команде azcopy copy задание может копировать только подмножество каталогов.
Используйте параметр include-pattern для копирования файлов с конкретным расширением (например, *.pdf). В отдельном задании используйте exclude-pattern параметр для копирования всех файлов, у которых нет *.pdf расширения. Примеры см. в статьях Отправка конкретных файлов и Скачивание конкретных BLOB-объектов.
После решения о том, как разделить большие задания на небольшие, рассмотрите возможность выполнения заданий на нескольких виртуальных машинах.
Увеличение параллельности
При отправке или скачивании файлов используйте переменную среды AZCOPY_CONCURRENCY_VALUE, чтобы увеличить количество запросов, которые могут выполняться на компьютере одновременно. Присвойте этой переменной максимально высокий уровень, не ухудшающий производительность компьютера. Дополнительные сведения об этой переменной см. в разделе Увеличение количества одновременных запросов этой статьи.
При копировании BLOB-объектов между учетными записями хранения рекомендуется присвоить переменной среды AZCOPY_CONCURRENCY_VALUE значение, превышающее 1000. Эту переменную можно задать высоко, так как AzCopy использует API-интерфейсы "сервер — сервер", поэтому данные копируются непосредственно между серверами хранения и не используют возможности обработки компьютера.
Уменьшение количества создаваемых журналов
Производительность можно повысить, уменьшив количество записей журналов, создаваемых AzCopy при выполнении операции. По умолчанию AzCopy записывает в журнал все действия, связанные с операцией. Для достижения оптимальной производительности рассмотрите возможность задания параметра --log-level для команд копирования, синхронизации или удаления равным ERROR. При этом AzCopy регистрирует только ошибки. По умолчанию для уровня ведения журнала задано значение INFO.
Отключите проверку длины
При отправке или скачивании файлов попробуйте задать значение --check-length для команд копирования и синхронизации равным false. Этот параметр запрещает AzCopy проверять длину файла после передачи. По умолчанию AzCopy проверяет длину, чтобы гарантировать совпадение исходного и целевого файлов после завершения передачи. AzCopy выполняет эту проверку после каждой передачи файлов. Эта проверка может привести к снижению производительности, если в задании передается большое количество небольших файлов.
Включение параллельной локальной проверки (Linux)
Проверка файлов в некоторых системах Linux выполняется недостаточно быстро, чтобы нагрузить все параллельные сетевые подключения. В таких случаях можно задать для AZCOPY_CONCURRENT_SCAN более высокое значение.
Увеличение количества одновременных запросов
Пропускную способность можно увеличить, задав переменную среды AZCOPY_CONCURRENCY_VALUE. Эта переменная указывает количество одновременных запросов, которые могут быть выполнены.
Если на компьютере меньше пяти ЦП, для этой переменной задано 32значение. В противном случае значение по умолчанию равно 16, умноженному на число ЦП. Максимальное значение по умолчанию для этой переменной — 300. Это значение можно увеличить или уменьшить вручную.
Чтобы проверить текущее значение этой переменной, выполните команду azcopy env. Если значение не указано, можно посмотреть используемое значение в начале любого файла журнала AzCopy. Там указывается выбранное значение и причина, по которой оно было выбрано.
Прежде чем задать эту переменную, рекомендуется выполнить тест производительности. Процесс теста производительности сообщает рекомендуемое значение параллелизма. Либо, если условия сети и полезные данные могут меняться, вместо конкретного числа назначьте этой переменной слово AUTO. Этот параметр приводит к тому, что AzCopy всегда выполняет один и тот же автоматический процесс настройки, который он использует в эталонных тестах.
Ограничение скорости передачи данных
Используйте флаг cap-mbps в командах, чтобы ограничить скорость передачи данных. Например, следующая команда возобновляет задание и ограничивает пропускную способность до 10 мегабит (Мбит) в секунду. Эта функция поддерживается только для отправки или скачивания файлов, а не копирования между учетными записями.
azcopy jobs resume <job-id> --cap-mbps 10
оптимизация использования памяти,
Задайте переменную среды AZCOPY_BUFFER_GB, чтобы указать максимальный объем памяти системы, который должен использоваться AzCopy для буферизации при скачивании и отправке файлов. Выразите это значение в гигабайтах (ГБ).
Примечание.
Отслеживание заданий всегда добавляет затраты на использование памяти. Объем зависит от количества переводов в работе. Больше всего памяти используют буферы. Вы можете помочь управлять ресурсами, используя AZCOPY_BUFFER_GB, чтобы приблизительно удовлетворить ваши требования, но нет флага, который бы позволил строго ограничить потребление памяти.
оптимизация синхронизации файлов,
Команда синхронизации определяет все файлы в месте назначения, а затем сравнивает имена файлов и метки времени последнего изменения перед началом операции синхронизации. Если у вас большое количество файлов, вы можете повысить производительность, исключив эту переднюю обработку.
Чтобы достичь этой цели, используйте команду azcopy copy, и установите флаг --overwriteifSourceNewer на нужное значение. AzCopy сравнивает файлы по мере их копирования без выполнения предварительной проверки и сравнения. Этот подход обеспечивает пограничный уровень производительности в случаях, когда существует большое количество файлов для сравнения.
Команда azcopy copy не удаляет файлы из назначения. Если вы хотите удалить файлы в месте назначения, если они больше не существуют в источнике, используйте команду azcopy sync с --delete-destination флагом, установленным для значения true или prompt.
Использование нескольких клиентов для параллельного выполнения заданий
Наилучшая производительность AzCopy достигается, если на клиенте запущен только один экземпляр. Если вы хотите параллельно передать файлы, используйте несколько клиентов и запустите только один экземпляр AzCopy на каждом из них.