我在使用 AWS Direct Connect 连接时遇到文件传输速度缓慢的问题。
解决方法
针对您的使用案例使用以下问题排查步骤。
**注意:**如果您在运行 AWS Command Line Interface (AWS CLI) 命令时收到错误消息,请确保您使用的是最新版本的 AWS CLI。
使用 Amazon CloudWatch 指标检查 Direct Connect 连接是否存在过度使用的情况和错误
您可以使用 CloudWatch 指标来监控 Direct Connect 连接和虚拟接口。对于 Direct Connect 专用连接,请检查 ConnectionBpsEgress 和 ConnectionBpsIngress 指标中是否存在超过网络端口速度的值。检查 ConnectionErrorCount 指标是否存在 MAC 级别错误。有关对 MAC 级别错误进行问题排查的更多信息,请参阅 Direct Connect 连接指标中的 ConnectionErrorCount 部分。
对于托管连接,查看 VirtualInterfaceBpsEgress 和 VirtualInterfaceBpsIngress 指标。您只能为每个托管连接创建一个 Direct Connect 虚拟接口。这些指标是托管连接的网络流量总比特率的估计值。
有关更多信息,请参阅查看 Direct Connect CloudWatch 指标。
将大文件上传到 Amazon Simple Storage Service (Amazon S3) 时优化性能
若要将大文件上传到 Amazon S3,最好利用分段上传。如果您使用的是 AWS CLI,则所有高级别 Amazon S3 命令(如 cp 和 sync)都会自动对大文件执行分段上传。
使用以下 AWS CLI Amazon S3 配置值:
- max_concurrent_requests – 最大并发请求数。默认值为 10。确保您拥有足够的资源来支持最大请求数。
- max_queue_size – 任务队列中的最大任务数。
- multipart_threshold – CLI 用于单个文件的分段传输的大小阈值。
- multipart_chunksize – 使用分段传输时,这是 CLI 用于单个文件的分段传输的区块大小。此值设置 AWS CLI 在单个文件的分段上传中上传的每个部分的大小。通过此设置,您可以将较大的文件(例如 300MB)分解为较小的部分,以加快上传速度。默认值为 8MB,而您可以设置的最小值为 5MB。
**注意:**分段上传要求单个文件最多上传 10000 个部分。确保您所设置的区块大小平衡了文件大小和部分数量。
- max_bandwidth – 将数据上传到 Amazon S3 和从 Amazon S3 下载数据所消耗的最大带宽。
有关更多信息,请参阅使用 AWS SFTP 将小型数据集从本地迁移到 Amazon S3。
服务器消息块 (SMB) Windows 文件服务器的性能优化
为了优化 Windows SMB 文件服务器的网络性能,必须在每个客户端和文件服务器之间协商服务器消息块 (SMB) 3.0 协议。这是因为 SMB 3.0 使用协议提高了 SMB 文件服务器的性能,包括以下功能:
- SMB 直通 – 此功能可确保 SMB 检测到文件服务器上的 RDMA 网络接口,并自动使用远程直接内存访问 (RDMA)。 RDMA 可提高吞吐量,并提供低延迟和低 CPU 利用率。
- SMB 多通道 – 此功能允许文件服务器同时使用多个网络连接,并提供更高的吞吐量。
- SMB 横向扩展 – 此功能允许集群配置中的 SMB 3.0 显示所有集群节点在主动/主动配置中的共享。这可以确保最大共享带宽是所有文件服务器集群节点的总带宽。
对于 SMB 客户端,使用 robocopy 多线程功能,通过多个并行连接将文件和文件夹复制到文件服务器。
您还可以使用显式拥塞通知 (ECN) 和大量发送卸载 (LSO) 来降低吞吐量。
检查 Direct Connect 连接上是否存在数据包丢失的情况
当传输的数据包未能到达目的地,从而导致网络性能问题时,就会发生数据包丢失。数据包丢失是由目的地信号强度低、系统利用率过高、网络拥塞和网络路由配置错误造成的。
有关更多信息,请参阅
如何排查我的 Direct Connect 连接的数据包丢失问题?
隔离和诊断网络和应用程序性能问题
您可以使用 iPerf3、tcpdump 和 Wireshark 等实用程序对 Direct Connect 性能问题进行排查并分析网络结果。请注意以下影响单个 TCP 流上的网络吞吐量的设置:
- 接收方窗口大小 (RWS) – 这表示接收方在缓冲区不溢出的情况下可以接受的最大字节数。
- 发送方发送缓冲区 – 这可能会限制接收方可以确认的最大字节数。发送方在收到确认之前不能丢弃未确认的字节。未确认的字节可能必须在超时期限后重新传输。
- 发送方 MSS(最大分段大小)– TCP 分段可以作为有效负载的最大字节数。MSS 越小,网络吞吐量就越小。
- 往返时间 (RTT) – 发送方和接收方之间的 RTT 越长,可用的网络带宽就越低。
**提示:**在文件传输期间,发送方最好与接收方建立多个并行连接。
有关更多信息,请参阅如何排查 Direct Connect 网络性能问题?
相关信息
AWS Direct Connect 功能
配置网络接口的最佳实践