如何排查将本地文件复制到 Storage Gateway 时性能下降的问题?

上次更新日期:2022 年 9 月 29 日

我尝试将本地文件复制到 AWS Storage Gateway 上的网络文件系统 (NFS) 或服务器消息块 (SMB) 文件共享,但传输速度很慢。如何提高上传性能?

解决方法

当您将本地文件复制到 Storage Gateway 上的文件共享时,请考虑以下方法来提高性能:

注意:文件网关是对象存储缓存,而不是文件服务器。这意味着文件网关的性能特征与文件服务器的性能特征不同。

扩展您的工作负载

为获得最佳性能,请通过添加线程或客户端来扩展工作负载。传输文件目录时,当工作负载是多线程或涉及多个客户端时,文件网关可以获得最佳扩展。查看您的文件管理工具,并确认默认情况下该工具是否运行单线程上传。

在传输小文件或大文件时,最佳做法是使用多个线程或客户端。当您使用多个线程传输大文件(每个文件数十或数百 MiB)时,您将获得最高的每秒 MiB 吞吐量。由于创建新文件会产生开销,相同的工作负载下,相比大文件,传输许多小文件会导致每秒 MiB 吞吐量降低。

要在 Windows 中执行多线程复制,请使用 Microsoft 推出的文件复制工具 robocopy

注意:对于较小文件的传输,请测量每秒文件的传输速率,而不是每秒 MiB 吞吐量。文件创建速度可能会占用与传输较小文件相关的工作负载空间。

调优您的缓存存储空间

将网关的总缓存存储空间大小调整为活跃工作集的大小。使用多个本地磁盘的缓存可以并行访问数据并实现更高的每秒 I/O 操作数 (IOPS)。有关更多信息,请参阅 Amazon Simple Storage Service (Amazon S3) 文件网关的性能指南

另外,监控网关的 CachePercentDirty 指标。此指标返回未保存到 S3 存储桶的数据占用的缓存存储空间百分比。较高的 CachePercentDirty 值可能会导致网关的缓存存储空间限制对网关的写入。

使用性能更高的磁盘

最佳实践是使用支持固态硬盘 (SSD) 的磁盘作为网关的缓存存储空间,并使用专用租赁。理想情况下,不应与其他虚拟机共享底层物理磁盘,以防止 IOPS 耗尽。

要测量磁盘 IOPS,请结合使用 ReadBytesWriteBytes 指标以及 CloudWatch 中的示例统计数据。通常,当您审查网关的这些指标时,请查找低吞吐量和低 IOPS 趋势,这些指标表明任何与磁盘相关的瓶颈。

监控 CloudWatch 中的 IOWaitPercent 指标,该指标报告 CPU 等待本地磁盘响应的时间百分比。高于 10% 的值通常表示底层磁盘存在瓶颈,可能是磁盘速度变慢造成的。在此情况下,添加附加的磁盘以为网关提供更多可用的 IOPS。

注意:对于基于 Amazon Elastic Compute Cloud (Amazon EC2) 的网关,实例的 Amazon Elastic Block Store (Amazon EBS) 吞吐量也可能是一个限制因素。确认网关的主机虚拟机或 Amazon EC2 实例的 CPU 和 RAM 支持网关传送到 AWS 的吞吐量。例如,每个 EC2 实例类型都有不同的基准吞吐量。如果突增吞吐量耗尽,则实例将使用其基准吞吐量,进而可能限制上传到 AWS 的吞吐量。如果您的网关托管在 Amazon EC2 实例上,请检查该实例的 NetworkOut 指标。如果 NetworkOut 指标在测试期间保持基准吞吐量,则考虑将实例更改为较大的实例类型。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?