如何解决使用 Web 浏览器下载存储在 Amazon S3 中的对象时加载速度缓慢的问题?

1 分钟阅读
0

我正在尝试使用 Web 浏览器从 Amazon Simple Storage Service (Amazon S3) 下载对象,但是下载速度很慢。

解决方案

要确定在 Web 浏览器中通过 Amazon S3 下载速度缓慢的原因,请检查是否存在以下潜在问题。

互联网带宽低

核实您从互联网服务提供商 (ISP) 获得的网络速度。如果速度较低,则在您尝试连接到 S3 存储桶和下载对象时可能会出现瓶颈。

下载对象容量大

如果某些 S3 对象的下载时间比其他对象长,请检查下载时间较长的对象的容量大小。如果 Amazon S3 对象容量非常大,那么您尝试使用 Web 浏览器下载整个对象时,下载速度可能会很慢。因此,请尝试使用 Amazon S3 API 通过远程 GET 请求下载大容量的对象。远程 GET 请求允许您以单独的、较小的块下载大容量对象,可以帮助您避免延迟。

客户与 Amazon S3 存储桶之间的地理距离

如果有来自世界各地的客户从您的 S3 存储桶下载,那么这些客户的位置可能会影响下载速度。与您的存储桶的 AWS 区域相距较远的客户可能需要较长的下载时间。要缩短地理位置相距较远的客户所用的下载时间,可以采取以下措施:

  • 提供来自 Amazon CloudFront 发行版的 S3 对象。CloudFront 可以从地理位置上距离您的客户更近的边缘站点为您的客户提供服务,从而最大限度地减少延迟。
  • 将您的存储桶移至地理位置更接近客户的地区。您可以使用跨区域复制将对象从源存储桶复制到另一个区域的目标存储桶。

中间网络相关问题

网络相关问题,例如数据包丢失、高跳数或任何其他 ISP 相关问题,都可能影响 Amazon S3 的下载速度。

要确定网络相关问题是否导致下载速度慢,请使用 mtrtraceroute 等工具。这些工具可以帮助识别向远程主机发送数据包时可能存在的网络问题。例如,以下 traceroute 命令通过端口 80 向 us-east-1 中的 Amazon S3 端点发送 TCP traceroute:

sudo traceroute -P TCP -p 80 s3.us-east-1.amazonaws.com

**注意:**由于许多网络设备不通过 ICMP 做出响应,因此运行 TCP traceroute 是一种最佳实践。

工作站资源

确认您的工作站(例如 CPU、内存或网络带宽)内不存在可能导致总体延迟的资源争用。

您可以根据自己的操作系统,使用(来自 Microsoft 网站的)资源监视器top 命令等工具来查看大多数客户端系统上的资源使用情况。

将处理时间与 Amazon S3 隔离开来

为了帮助确定导致下载速度缓慢的原因,请将处理时间与 Amazon S3 隔离开来。激活服务器访问日志,然后查看 Total Time 的日志。这显示了 Amazon S3 处理请求需要的时长。

您还可以分析 Amazon CloudWatch 指标 FirstByteLatency。FirstByteLatency 显示 Amazon S3 处理来自客户端的请求后再将响应发送到客户端需要的时长。此 CloudWatch 指标提供了存储桶级别的性能视角。

**注意:**Amazon S3 CloudWatch 请求指标的计费费率与自定义指标相同

AWS 官方
AWS 官方已更新 1 年前