

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# File Transfer 最佳实践
<a name="best-practices"></a>

为了最大限度地受益于 Nimble Studio File Transfer，我们建议您执行此页面上的最佳实践。

**Topics**
+ [Amazon Simple Storage Service (Amazon S3)](#best-practices-s3)
+ [AWS Key Management Service (AWS KMS)](#best-practices-kms)
+ [硬件](#best-practices-hardware)
+ [配置](#best-practices-configuration)
+ [性能优化](performance-optimization.md)

## Amazon Simple Storage Service (Amazon S3)
<a name="best-practices-s3"></a>
+ 遵循[创建对象密钥名称](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html)教程中描述的 Amazon Simple Storage Service (Amazon S3)存储桶命名实践。
+ 要优化从世界各地传输到 Amazon S3 存储桶的速度，请按照[使用 Amazon S3 传输加速配置快速、安全的文件传输](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html)教程中的说明进行操作。
+ 为了最大限度地降低存储成本，请按照[配置存储桶生命周期配置以中止未完成的分段上传](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html)教程中的说明配置生命周期规则。有关降低成本的更多信息，请参阅博客文章[《发现并删除未完成的分段上传以降低 Amazon S3 费用》](https://aws.amazon.com/blogs/aws-cloud-financial-management/discovering-and-deleting-incomplete-multipart-uploads-to-lower-amazon-s3-costs/)。

## AWS Key Management Service (AWS KMS)
<a name="best-practices-kms"></a>
+ 在 [创建 S3 存储桶](setting-up.md#setting-up-bucket) 中创建 S3 存储桶时，我们建议您选择 **AWS Key Management Service 密钥 (SSE-KMS)**。有关 KMS 密钥类型的更多信息，请参阅[客户密钥和 AWS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)。

## 硬件
<a name="best-practices-hardware"></a>

我们建议您的计算机满足以下要求才能使用 File Transfer。
+ 8 个逻辑 CPU 内核 
+ 8 GB RAM

File Transfer 可以在比这些规格更低的计算机上运行，但性能可能会降低。

## 配置
<a name="best-practices-configuration"></a>

可以选择使用自动调整功能或手动调整参数，以最好地满足文件传输用例要求。选择手动调整设置时，如果操作不当，可能会出现性能不佳问题。我们建议大多数用户保持启用**自动调整**。

### 自动调整配置
<a name="best-practices-auto-tuning"></a>

我们建议大多数用户将**传输自动调整**设置保持启用状态。如果启用了**传输自动调整**设置，则 File Transfer 会自动设置**线程数**和**组块大小**的值。File Transfer 根据您传输的数据类型确定最有效的设置。

**传输自动调整**设置会根据每个文件调整性能设置。如果您手动设置**线程数**和**组块大小**的值，则这些设置将应用于整批传输。因此，传输不同大小的文件时，**传输自动调整**通常会提高性能。传输大小相似的文件时，**传输自动调整**的性能与手动设置调整相当。如果您对硬件和传输数据有深入了解，则手动设置的性能可能优于**传输自动调整**选择的值。

### 线程
<a name="best-practices-threads"></a>

使用 File Transfer 时，每次传输都会被拆分为多个单独的线程，用于传输每个文件。上传较大的文件（> 1 GB）时，线程最有效。线程也可以帮助处理小文件，但是传输速度的差异并不明显。

默认情况下，线程数为 10。我们建议您将此值以 5 为增量提高，直到带宽资源得到充分利用。您可以通过查看传输的下载和上传速度，从图形用户界面 (GUI) 监控带宽资源。

### 组块大小
<a name="best-practices-chunk-size"></a>

组块大小是每个线程传送的大小（以 MB 为单位）。如果在上传的文件集中重复出现一个文件大小，则组块大小会很有用。

我们建议您将组块大小设置为比要传输的平均文件大小大 5 到 10 倍。例如，如果数据集中的平均文件大小为 50 MB，则将组块大小设置在 55 和 60 之间。如果文件大小超过 1 GB，则效果不大。

### 最大活动传输量
<a name="best-practices-max-active-transfers"></a>

最大活动传输量决定 File Transfer 可同时处理多少个文件。如果传输多个小于 1 GB 的小文件时，调整最大活动传输量最为有效。我们建议随着文件大小的减小，增加最大活动传输量的值。

下表列出了最大活动传输量的推荐起点和增量。从“最大活动传输量”列中的值开始，按增量增加该值，直到达到所需性能。


| 文件大小 | 最大活动传输量 | 增量 | 
| --- | --- | --- | 
| < 1 MB | 100 | `20` | 
| > 1 MB–< 100 MB | 50 | `10` | 
| > 100 MB–< 1 GB | 25 | `5` | 
| > 1 GB | 10 | `2` | 

### 校验和
<a name="best-practices-threads"></a>

[File Transfer 校验和](checksums.md) 是 File Transfer 同时处理的单个校验和的数量。校验和算法是在传输文件时 File Transfer 用于确保文件完整性的算法。

您可以选择四种校验和算法：MD5、XXHash、XXHash64 和 XXH3。这是基于您想要的安全级别和速度的首选项。最早、最标准的安全校验和方法是 MD5。

建议的最大活动校验和值为 CPU 内核总数减去 1。