为什么 RefreshCache 操作在我的文件网关上花费很长时间?

1 分钟阅读
0

当我在 AWS Storage Gateway 中的文件网关上启动 RefreshCache 操作时,该操作需要很长时间才能完成。

解决方法

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

RefreshCache 操作可识别自网关上次识别和缓存对象以来 Amazon Simple Storage Service (Amazon S3) 对象发生的变化。更改可能包括更新、上传或删除的对象。为了完成此操作,文件网关在 Amazon S3 存储桶上运行递归 LIST 操作。然后,文件网关对从 LIST 操作返回的每个对象运行 HEAD 对象操作。HEAD 操作保留元数据并将其存储在文件网关缓存中。

以下因素会影响 RefreshCache 操作所需的时间:

  • 如果 S3 存储桶中有大量对象,则 RefreshCache 的运行时间会增加。这是因为文件网关针对存储桶中的所有对象运行 HEAD 对象。
  • RefreshCache 操作特定于文件网关内的单个文件共享。一个文件共享支持在给定时间进行两次 RefreshCache API 操作。如果您发送更多请求以启动缓存刷新,则在正在进行的操作完成之前会启动更多操作。这可能会导致 InvalidGatewayRequestException 错误
  • S3 存储桶可以支持每秒每个前缀 3,500 个 PUT/COPY/POST/DELETE 或 5,500 个 GET/HEAD 请求。这些支持的请求费率也适用于文件网关向您的 S3 存储桶发出的请求。请求量会影响 RefreshCache 操作的完成速度。如果 S3 存储桶也由文件网关以外的服务使用,则 RefreshCache 的运行时间可能会增加。

要缩短 RefreshCache 操作的运行时间,请执行以下任一操作:

  • 减少存储桶中的对象数量。
  • 部署与 S3 存储桶中的不同前缀相对应的多个文件共享。不要对整个存储桶使用一个文件共享。
    注意: 您最多可以为单个文件网关创建 10 个文件共享。由于 RefreshCache 操作是按文件共享运行的,因此这有助于缩短完成单次 RefreshCache 操作所需的时间。
  • 如果您对整个 S3 存储桶使用一个文件共享,请将 RefreshCache 操作集中在使用新对象更新的存储桶的特定前缀或文件夹上。这样可以缩小操作范围,有助于缩短运行时间。当您使用 AWS CLIStorage Gateway API 运行操作时,将 RefreshCache 操作指向特定的文件夹。此选项在 Storage Gateway 控制台中不可用。
  • 在非高峰时段运行 RefreshCache 操作,以处理对 S3 存储桶的其他请求。您可以使用 AWS Lambda 和 Amazon CloudWatch 在计时器上启动操作

相关信息

在 AWS Storage Gateway 上自动执行文件网关的缓存刷新流程

AWS 官方
AWS 官方已更新 7 个月前