如何解决不稳定且缓慢的Google云端存储响应时间问题?

Mar*_*cze 9 c# google-cloud-storage google-cloud-platform asp.net-core

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

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

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

var sw = Stopwatch.CreateNew();

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

sw.Stop();
Run Code Online (Sandbox Code Playgroud)

所以我在没有任何自己的应用程序逻辑的情况下直接测量SDK调用.

我在这个测量中获得的数字在平均时间内看起来像这样.

44ms
56ms
501ms
274ms
90ms
237ms
145ms
979ms
446ms
148ms
Run Code Online (Sandbox Code Playgroud)

你可以看到方差已经非常大了(并且响应时间通常非常缓慢).

但偶尔我会得到这样的响应时间(我见过的最慢的时间超过10秒).

172ms
4,348ms
72ms
51ms
179ms
2,508ms
2,592ms
100ms
Run Code Online (Sandbox Code Playgroud)

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

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

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

我还收集了一些测量值,在这里你可以看到过去7天的统计数据.

该图显示了有关云存储下载时间的统计信

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

我想弄清楚的是我们是否做错了什么,或者这是云存储的预期,我们必须准备好能够处理这些缓慢的响应.

Ran*_*anP 3

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

  • 从那时起,我们还得到了 GCloud 支持的官方答复,我们没有做任何错误,预计有时响应时间会很慢,我们的应用程序必须准备好处理这个问题(预加载此文件并缓存它们等) .)。如果我在一段时间内找不到其他内容,我会将其标记为答案。 (3认同)