【问题标题】:How to fix incosistent and slow Google Cloud Storage response times?如何解决不一致且缓慢的 Google Cloud Storage 响应时间?
【发布时间】:2017-11-18 01:16:22
【问题描述】:

我正在使用谷歌云存储来存储和检索一些文件,我的问题是我得到的响应时间不一致,有时很慢。

我的应用程序是在 Google Container Engine 中运行的 ASP.NET Core 应用程序。容器引擎集群位于europe-west1-c。 Cloud Storage 存储分区是多区域的,位于位置 EU,它是一个安全存储分区(不可公开访问)。我正在使用最新版本的官方Google.Cloud.Storage.V1 SDK 包来访问云存储。 (我尝试了1.0.0 和新的2.0.0-beta01。)我正在使用StorageClient 对象的单例实例,它应该在引擎盖下进行连接池。

我正在测量并记录从云存储下载文件所需的时间,这就是我所做的测量。

var sw = Stopwatch.CreateNew();

await client.DownloadObjectAsync(googleCloudOptions.StorageBucketName, filepath, ms);

sw.Stop();

所以我直接测量 SDK 调用,没有任何我自己的应用程序逻辑。

我在此测量中获得的数字在平均时期内看起来像这样。

44ms
56ms
501ms
274ms
90ms
237ms
145ms
979ms
446ms
148ms

您可以看到一开始差异已经很大(而且响应时间通常非常缓慢)。

但有时我什至会得到这样的响应时间(我见过的最慢的响应时间超过 10 秒)。

172ms
4,348ms
72ms
51ms
179ms
2,508ms
2,592ms
100ms

考虑到我正在下载的文件大小约为 2 KB,而且我的应用程序每秒执行的请求少于 1 个,而且我在 Google Cloud 中运行我的应用程序,这真的很糟糕。我不认为存储桶未预热可能是个问题,因为我主要下载相同的少量文件,并且每分钟至少执行几个请求。

有谁知道这种缓慢的原因是什么,或者我如何调查出了什么问题?

更新:按照@jterrace的建议,我已经在生产环境运行gsutil perfdiag,并上传了终端输出和生成的json报告here

我还收集了更多测量数据,您可以在此处查看过去 7 天的统计数据。

因此您可以看到,缓慢的请求并不经常发生,但超过半秒的响应时间并不少见,我们甚至每天都有少数超过 5 秒的请求。

我想弄清楚我们是否做错了什么,或者这是 Cloud Storage 所预期的,我们必须做好准备,以应对这些缓慢的响应。

【问题讨论】:

  • 您的应用程序在哪里运行?在 GCE 上还是在您自己的服务器上?你能用gsutil perfdiag 重现结果吗?
  • 我的应用程序正在 GCE 中运行 europe-west1-cgsutil perfdiag我没试过,我试试看。
  • 嗯,我试过gsutil perfdiag,下载时间在150ms-500ms之间,我没有看到任何超慢的时间。但我不确定这是否具有代表性,因为我是在我的机器上执行此操作的,而我的实际应用程序在 GCE 中运行,所以应该更快(?)。
  • 我肯定会在 GCE 上测试它。根据您的本地计算机所在的位置及其连接,结果可能会有很大差异。
  • 呃,AFAIK Google 不保证其云系统的延迟。它不是一个实时系统。也不是别人的。它不会像本地连接的 SSD...

标签: c# asp.net-core google-cloud-platform google-cloud-storage


【解决方案1】:

我们对 GCS 也有同样的问题。我们得到的唯一答案(来自 GCS 支持)是使用指数退避。 第一个请求应该是 200ms 超时,下一次尝试 400ms 等等。

【讨论】:

  • 我一直使用指数退避来提高可靠性,但从未意识到它可以用于延迟:)
  • 从那以后我们也得到了 GCloud 支持的官方答复,我们没有做错任何事情,预计有时响应时间会很慢,只是我们的应用程序必须准备好处理这个问题(预加载此文件并缓存它们等)。如果我在一段时间内找不到任何其他内容,我会将其标记为答案。
【解决方案2】:

我在 GCE 中看到的一个常见问题是,由于 gcloud 客户端具有严重的 DNS 依赖性,DNS 查询而不是实际客户端(存储或其他)限制了流量的爆发。我强烈建议您将 etcd 或其他一些 DNS 缓存添加到您的容器中。否则 GCE 中的任何实际流量都会阻塞。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多