Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
当我将数据从本地客户端下载或上传到 Amazon S3 时,如何对速度缓慢或不一致的问题进行故障排除?
我在 Amazon Simple Storage Service (Amazon S3) 和特定网络或本地客户端之间下载或上传数据时遇到延迟问题。
解决方法
要识别和解决下载或上传到 Amazon S3 时的延迟问题,请查看以下配置。
发出请求的客户端的位置
最佳做法是使用地理位置尽可能靠近本地客户端的 Amazon S3 存储桶。当存储桶在地理位置上距离请求较远时,响应时间会更长。
要测试客户端与 S3 存储桶之间地理距离的影响,请完成以下步骤:
- 在存储桶所在的 AWS 区域中启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
- 在另一个区域启动另一个实例。
- 使用这两个实例上传和下载同一个文件。
- 比较两个区域之间的吞吐量。
要缩短本地客户端与 S3 存储桶之间的距离,请将您的数据移动到距离该客户端更近的区域的存储桶中。您可以配置跨区域复制 (CRR),以便将源存储桶中的数据复制到新区域的目标存储桶中。或者,将客户端迁移到更靠近 S3 存储桶的位置。
本地客户端的 ISP
检查您的网络路径中是否存在数据包丢失、跳数过多以及其他与互联网服务提供商 (ISP) 相关的问题。还要查看 TCP 重传、SSL 握手失败、DNS 解析延迟或网络代理。
要确定潜在的数据包丢失以及发送到远程主机的数据包的延迟,请使用 mtr 和 traceroute 等工具。这些工具还可以识别网络跃点数是否会导致延迟升高。例如,以下 Linux traceroute 命令使用 TCP 端口 80 来测试与 us-west-2(俄勒冈)区域端点的连接情况:
sudo traceroute -P TCP -p 80 s3.us-west-2.amazonaws.com
对于 Windows 操作系统 (OS),运行以下 tracert 命令:
tracert -d -4 s3.amazonaws.com
**注意:**许多网络设备不响应互联网控制消息协议 (ICMP)。要进行类似于 Amazon S3 请求的测试,请对存储桶的区域端点运行 TCP traceroute 或 mtr。
如果从客户端到 Amazon S3 的互联网路由不是最佳路由,请对 Amazon CloudFront 中的边缘站点使用 Amazon S3 Transfer Acceleration。使用 Amazon S3 Transfer Acceleration Speed Comparison 工具来确定 Transfer Acceleration 能否提高性能。
**注意:**启用 Transfer Acceleration 后,可能需要支付额外的数据传输费用。请查看 Amazon S3 的数据传输定价。
本地客户端的网络
要确认您的本地客户端网络运行正常,请查看内部数据包检查、防病毒扫描或网络访问管理。另外,请查看您的客户端或应用程序如何处理 DNS 解析和缓存。最佳做法是不要长时间缓存 DNS 解析。
要识别来自 Amazon S3 同步传输缓慢的本地客户端的延迟和性能问题,请使用网络诊断测试。最佳做法是定期分析性能以便在潜在问题影响传输速度之前检测到它们。
**注意:**最佳做法是使用适用于 Amazon S3 的 AWS PrivateLink 来提高数据传输的安全性和可靠性。
客户端的资源
由于发出请求的主机处理请求和响应的方式,您的应用程序可能会出现延迟。最佳做法是避免主机内部出现资源争用。例如,资源争用可能与 CPU、内存或网络带宽有关。
要检查数据传输期间的资源使用情况,请使用资源监视器或 top 命令等工具。有关详细信息,请参阅 Microsoft Learn 网站上的资源监视器。
**注意:**工具的可用性取决于您的操作系统。
如果客户端存储设备出现延迟,则对该设备进行读写操作可能会影响 Amazon S3 的下载或上传性能。要从客户端对存储设备的 IOPS 进行故障排除,请使用 FirstByteLatency Amazon CloudWatch 指标来分析 Amazon S3 性能。
**注意:**AWS 向 Amazon S3 请求指标计费的费率与自定义 CloudWatch 指标的费率相同。有关 CloudWatch 定价的信息,请参阅 Amazon CloudWatch 定价。
对 Amazon S3 的请求速率
默认情况下,S3 存储桶可以支持每个分区前缀每秒数千个请求。如果客户端从 Amazon S3 收到 HTTP 5xx 错误响应,则会超过每个前缀支持的请求速率。要对 5xx 错误进行故障排除,请参阅如何对来自 Amazon S3 的 HTTP 500 或 503 错误进行故障排除?
要加快 AWS 全球分布的 CloudFront 边缘站点的传输时间,请使用 Amazon S3 Transfer Acceleration。
要提高网络配置和增强传输性能,请使用 AWS Direct Connect。有关详细信息,请参阅提高 AWS 和混合网络的性能。
有关提高性能的设计模式,请参阅 Amazon S3 的性能设计模式。您可以使用 AWS DataSync、AWS Snowball、AWS Snowcone 和 AWS Transfer Family 将大型数据集迁移到 Amazon S3。或者,您可以使用 AWS SDK 和 AWS 命令行界面 (AWS CLI) 来创建高效的并行和批量传输流程。要对大文件使用分段上传,请参阅在使用 AWS CLI 向 Amazon S3 上传大文件时,如何优化性能?
用于确定周转时间的 Amazon S3 服务器访问日志
要查看周转时间指标,请启用 Amazon S3 服务器访问日志记录。有关周转时间指标的详细信息,请参阅 Amazon S3 服务器访问日志格式中的周转时间。使用周转时间指标来确定操作所花费的时间。然后,您可以评估 Amazon S3 之外可能导致下载或上传缓慢的其他延迟。
如果延迟高于预期,最佳做法是重试请求,而不是等待请求完成。有关详细信息,请参阅 Amazon S3 的性能准则。
文件传输活动
使用 TotalRequestLatency 指标来跟踪每个请求所花费的时间。这是从 S3 存储桶收到的第一个字节到本地客户端发送到存储桶的最后一个字节的时间。要确定潜在的性能问题,请查看 GetRequests 和 PutRequests 指标以及 4xx 和 5xx 状态代码。
**注意:**AWS 按照与 Amazon CloudWatch 自定义指标相同的费率对 GetRequests 和 PutRequests 指标进行计费。

