¿Cómo puedo mejorar el rendimiento de la transferencia del comando sync en Amazon S3?

5 minutos de lectura
0

Utilizo el comando sync de la Interfaz de la línea de comandos de AWS (AWS CLI) para transferir datos en Amazon Simple Storage Service (Amazon S3). Sin embargo, la transferencia tarda mucho tiempo en completarse.

Solución

El comando sync compara los buckets de origen y destino para determinar qué archivos de origen no existen en el bucket de destino. El comando sync también determina qué archivos de origen se modificaron en comparación con los archivos del bucket de destino. A continuación, copia los archivos de origen nuevos o actualizados en el bucket de destino.

El número de objetos del bucket de origen y destino puede afectar al tiempo que tarda el comando sync en completar el proceso. El tamaño de la transferencia puede afectar a la duración de la sincronización o al coste incurrido por las solicitudes a Amazon S3.

Los marcadores de eliminación también afectan al rendimiento de la lista, por lo que se recomienda minimizar la cantidad de marcadores de eliminación. Dado que el comando sync ejecuta llamadas a la API list en el backend, los marcadores de eliminación también afectan al rendimiento del comando sync.

Para mejorar el tiempo de transferencia al ejecutar el comando sync, implemente las siguientes prácticas.

Ejecución de varias instancias de AWS CLI

Para copiar una gran cantidad de datos, puede ejecutar varias instancias de AWS CLI con el fin de realizar operaciones de sincronización independientes en paralelo. Por ejemplo, puede ejecutar operaciones de sincronización en paralelo para diferentes prefijos:

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder1 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder1  
aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder2 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder2

Nota: Si se muestran errores al ejecutar los comandos de AWS CLI, asegúrese de que está utilizando la versión más reciente de AWS CLI.

Como alternativa, ejecute operaciones de sincronización en paralelo para filtros de exclusión e inclusión separados. Por ejemplo, las siguientes operaciones separan los archivos que se van a sincronizar por nombres clave que comienzan por los números del 0 al 4 y del 5 al 9:

Nota: Aunque utilice filtros de exclusión e ** inclusión**, el comando sync seguirá revisando todos los archivos del bucket de origen. Esta revisión ayuda a identificar qué archivos de origen se van a copiar en el bucket de destino. Si tiene varias operaciones de sincronización dirigidas a diferentes prefijos de nombres clave, cada operación de sync revisará todos los archivos de origen. Sin embargo, gracias a los filtros de exclusión e inclusión, solo se copiarán en el bucket de destino los archivos incluidos en los filtros.

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"  
aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Para obtener más información sobre cómo optimizar el rendimiento de la carga de trabajo, consulte Prácticas recomendadas para patrones de diseño: optimizar el rendimiento de Amazon S3.

Modificación del valor de configuración de AWS CLI para max_concurrent_requests

Para mejorar potencialmente el rendimiento, modifique el valor de max_concurrent_requests. Este valor establece el número de solicitudes que se pueden enviar a Amazon S3 a la vez. El valor predeterminado es 10, aunque puede aumentarlo a un valor superior. Sin embargo, tenga en cuenta las siguientes limitaciones:

  • La ejecución de más subprocesos consume más recursos en su equipo. Debe asegurarse de que su equipo cuente con los recursos suficientes para admitir la cantidad máxima de solicitudes simultáneas que desea.
  • Demasiadas solicitudes simultáneas pueden sobrecargar el sistema. Esto podría provocar tiempos de espera de conexión o ralentizar la capacidad de respuesta del sistema. Para evitar problemas de tiempo de espera debido a AWS CLI, puede intentar establecer el valor --cli-read-timeout o --cli-connect-timeout en 0.

(Opcional) Comprobación de la configuración de la instancia

Si utiliza una instancia de Amazon Elastic Compute Cloud (Amazon EC2) para ejecutar la operación de sincronización, siga las siguientes prácticas recomendadas:

  • Revise el tipo de instancia. Los tipos de instancias más grandes pueden ofrecer mejores resultados, ya que tienen un ancho de banda elevado y redes optimizadas para Amazon Elastic Block Store (Amazon EBS).
  • Si la instancia se encuentra en una región de AWS diferente a la del bucket, utilice una instancia de la misma región. Para disminuir la latencia, reduzca la distancia geográfica entre la instancia y su bucket de Amazon S3.
  • Si la instancia se encuentra en la misma región que el bucket de origen, configure un punto de conexión de Amazon Virtual Private Cloud (Amazon VPC) para S3. Los puntos de conexión de VPC pueden ayudar a mejorar el rendimiento general.

Información relacionada

How can I improve the transfer speeds for copying data between my S3 bucket and EC2 instance?

What's the best way to transfer large amounts of data from one Amazon S3 bucket to another?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 8 meses