Compartilhar via


Otimizar o desempenho do AzCopy com o Armazenamento do Microsoft Azure

AzCopy é um utilitário de linha de comando que você pode usar para copiar blobs ou arquivos de ou para uma conta de armazenamento. Este artigo ajuda você a otimizar o desempenho.

Observação

Para obter conteúdo para ajudá-lo a começar a usar o AzCopy, consulte Introdução ao AzCopy.

Você pode obter o desempenho do parâmetro de comparação e usar comandos e variáveis de ambiente para encontrar uma compensação ideal entre o consumo de recursos e o desempenho.

Executar testes de parâmetro de comparação

Você pode executar um teste de parâmetro de comparação de desempenho em contêineres de blob ou compartilhamentos de arquivos específicos para exibir estatísticas gerais de desempenho e para identificar gargalos de desempenho. Você pode executar o teste carregando ou baixando dados de teste gerados.

Use o comando a seguir para executar um teste de parâmetro de comparação de desempenho.

Sintaxe

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

Exemplo

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'

Dica

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto pelo shell de comando do Windows (cmd.exe). Se você estiver usando um shell de comando do Windows (cmd.exe), coloque os argumentos de caminho entre aspas duplas ("") em vez de aspas simples ('').

Este comando executa um parâmetro de comparação de desempenho com o upload dos dados de teste de um destino especificado. Os dados de teste são gerados na memória, carregados no destino e, em seguida, excluídos do destino após a conclusão do teste. Você pode especificar quantos arquivos serão gerados e qual tamanho você gostaria que eles tivessem usando parâmetros de comando opcionais.

Se você preferir executar esse teste baixando dados, defina o parâmetro mode como download. Para obter documentos de referência detalhados, confira parâmetro de comparação do azcopy.

Otimizar para um grande número de arquivos

A taxa de transferência pode diminuir ao transferir um grande número de arquivos. Cada operação de cópia se traduz em uma ou mais transações que o serviço de armazenamento deve executar. Ao transferir um grande número de arquivos, considere o número de transações que precisam ser executadas e o potencial impacto que essas transações podem ter se outras atividades ocorrerem na conta de armazenamento ao mesmo tempo.

Para maximizar o desempenho, você pode reduzir o tamanho de cada trabalho limitando o número de arquivos copiados em um único trabalho. Para operações de download e upload, aumente a simultaneidade conforme necessário, diminua a atividade de log e desative os recursos que incorrem em altos custos de desempenho.

Reduzir o tamanho de cada trabalho

Para obter um desempenho ideal, verifique se cada trabalho transfere menos de 10 milhões de arquivos. Trabalhos que transferem mais de 50 milhões arquivos podem funcionar inadequadamente porque o mecanismo de rastreamento de trabalho do AzCopy provoca uma quantidade significativa de sobrecarga. Para reduzir a sobrecarga, considere dividir trabalhos grandes em menores.

Uma maneira de reduzir o tamanho de um trabalho é limitar o número de arquivos afetados por um trabalho. Você pode usar parâmetros de comando para fazer isso. Por exemplo, um trabalho pode copiar apenas um subconjunto de diretórios usando o parâmetro include path como parte do comando azcopy copy.

Use o parâmetro include-pattern para copiar arquivos que têm uma extensão específica (por exemplo: *.pdf). Em um trabalho separado, use o exclude-pattern parâmetro para copiar todos os arquivos que não têm a *.pdf extensão. Consulte Carregar arquivos específicos e Baixar blobs específicos para obter exemplos.

Depois de decidir como dividir trabalhos grandes em trabalhos menores, considere executar trabalhos em mais de uma VM (máquina virtual).

Aumentar a simultaneidade

Se você estiver carregando ou baixando arquivos, use a variável de ambiente AZCOPY_CONCURRENCY_VALUE para aumentar o número de solicitações simultâneas que podem ocorrer em seu computador. Defina essa variável como a mais alta possível sem comprometer o desempenho de seu computador. Para saber mais sobre essa variável, consulte a seção Aumentar o número de solicitações simultâneas deste artigo.

Se você estiver copiando blobs entre contas de armazenamento, considere definir o valor da variável de ambiente AZCOPY_CONCURRENCY_VALUE para um valor maior que 1000. Você pode definir essa variável alta porque o AzCopy usa APIs de servidor para servidor, portanto, os dados são copiados diretamente entre servidores de armazenamento e não usam o poder de processamento do computador.

Diminuir o número de logs gerados

Você pode melhorar o desempenho reduzindo o número de entradas de log que o AzCopy cria à medida que conclui uma operação. Por padrão, o AzCopy registra em log todas as atividades relacionadas a uma operação. Para obter um desempenho ideal, considere definir o parâmetro --log-level de seu comando de cópia, sincronização ou remoção como ERROR. Dessa forma, o AzCopy registra apenas os erros. Por padrão, o nível de log do valor é definido como INFO.

Desativar a verificação de comprimento

Se você estiver carregando ou baixando arquivos, considere definir o --check-length dos comandos de copiar e sincronizar como false. Essa configuração impede que o AzCopy verifique o comprimento de um arquivo após uma transferência. Por padrão, o AzCopy verifica o comprimento para garantir que os arquivos de origem e destino coincidam após a conclusão de uma transferência. O AzCopy executa essa verificação após cada transferência de arquivo. Essa verificação pode prejudicar o desempenho quando os trabalhos transferem grandes números de arquivos pequenos.

Ativar a verificação local simultânea (Linux)

As verificações de arquivo em alguns sistemas Linux não são executadas com rapidez suficiente para saturar todas as conexões de rede paralelas. Nesses casos, você pode definir o AZCOPY_CONCURRENT_SCAN como um número mais alto.

Aumentar o número de solicitações simultâneas

Para aumentar a taxa de transferência, defina a variável de ambiente AZCOPY_CONCURRENCY_VALUE. Essa variável especifica o número de solicitações simultâneas que podem ocorrer.

Se o computador tiver menos de cinco CPUs, o valor dessa variável será definido como 32. Caso contrário, o valor padrão é igual a 16 multiplicado pelo número de CPUs. O valor padrão máximo dessa variável é 300, mas você pode aumentar ou reduzir esse valor manualmente.

export AZCOPY_CONCURRENCY_VALUE=<value>

Use azcopy env para verificar o valor atual dessa variável. Se o valor estiver em branco, você poderá ler qual valor está em uso se observar o início de um arquivo de log do AzCopy. O valor selecionado e o motivo da seleção estão relatados lá.

Antes de definir essa variável, recomendamos executar um teste de parâmetro de comparação. O processo de teste de parâmetro de comparação relata o valor de simultaneidade recomendado. Como alternativa, se as condições de rede e as cargas variarem, defina essa variável como a palavra AUTO em vez de um número específico. Essa configuração faz com que o AzCopy sempre execute o mesmo processo de ajuste automático usado em testes de parâmetro de comparação.

Limitar a taxa de dados da taxa de transferência

Use o cap-mbps sinalizador nos seus comandos para colocar um limite na taxa de transmissão de dados. Por exemplo, o comando a seguir retoma um trabalho e limita a taxa de transferência a 10 megabits (Mb) por segundo. Esse recurso só tem suporte para carregar ou baixar arquivos, não copiar entre contas.

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

Otimizar o uso de memória

Defina a variável de ambiente AZCOPY_BUFFER_GB para especificar a quantidade máxima de memória do sistema que você quer que o AzCopy use para o armazenamento em buffer ao baixar e carregar arquivos. Expresse esse valor em gigabytes (GB).

export AZCOPY_BUFFER_GB=<value>

Observação

O acompanhamento de trabalhos sempre adiciona sobrecarga no uso de memória. A quantidade varia de acordo com o número de transferências do trabalho. Os buffers são o maior componente no uso da memória. Você pode ajudar a controlar a sobrecarga usando AZCOPY_BUFFER_GB para atender aproximadamente às suas necessidades, mas não há nenhum sinalizador disponível para limitar estritamente o uso geral da memória.

Otimizar a sincronização de arquivos

O comando sync identifica todos os arquivos no destino, compara os nomes de arquivo e os carimbos de data/hora das últimas modificações antes de iniciar a operação de sincronização. Se você tiver um grande número de arquivos, poderá melhorar o desempenho eliminando esse processamento antecipado.

Para atingir essa meta, use o comando azcopy copy e defina o --overwrite sinalizador como ifSourceNewer. O AzCopy compara arquivos à medida que os copia sem executar verificações e comparações antecipadas. Essa abordagem fornece uma vantagem de desempenho em casos em que há um grande número de arquivos a serem comparados.

O comando azcopy copy não exclui arquivos do local de destino. Se você quiser excluir arquivos no destino quando eles não existirem mais na origem, use o comando azcopy sync com a --delete-destination flag configurada para um valor de true ou prompt.

Usar vários clientes para executar trabalhos em paralelo

O AzCopy funciona melhor quando apenas uma instância é executada no cliente. Se você quiser transferir arquivos em paralelo, use vários clientes e execute apenas uma instância do AzCopy em cada um deles.

Confira também