【问题标题】:Google App-Engine memcached extremely slowGoogle App-Engine memcached 非常慢
【发布时间】:2015-12-19 22:17:38
【问题描述】:

我最近推出了运行 AppEngine 后端的 iPhone/Android 应用。这是我第一次在生产环境中使用 AppEngine。

随着流量的增加,我开始遇到严重的延迟问题。目前最小空闲实例为1,max_pending_latency为1s。

是的,我这边还有优化的空间,但是我不明白

  1. 为什么延迟与请求/秒、流量、memoryUsage、memcacheUsage 等无关。我不明白为什么 9 月 21 日没有明显的延迟。

  2. 为什么对 memcached 的调用需要慢至 500 毫秒。 (通常它快 10 倍)。我正在使用 NDB 和 1GB 专用 memcached。增加到 5GB 没有效果。

这仅仅是 AppEngine 的工作原理吗?我想听听你的见解。

谢谢

【问题讨论】:

  • 您可能想在 freenode 上的#appengine 频道或邮件列表中提出这个问题。您的 rpc 图表显示了一组同步的 ndb 事务,但 memcache 部分不应该花这么长时间。
  • 据我所知,在 Memcache 中可能会看到这样的时间。除非使用专用(付费)Memcache,否则无法保证性能时间。 source
  • @Nick 我已经在使用专用的 Memcache。听起来好像出了点问题。
  • 对 RPC 调用进行分组是提高性能的好主意。我还需要澄清一下,专用的memcache实际上只有存储空间的保证。据我在文档中看到的,波动性和延迟没有被提及。 [[1]](cloud.google.com/appengine/docs/developers-console/#memcache) [[2]](cloud.google.com/appengine/features/#memcache)
  • 您在处理 300+ms 或 500+ms 的请求时使用的数据大小是多少?花费更少时间的请求有多大:它们是小得多还是大致相同?

标签: performance google-app-engine memcached latency


【解决方案1】:

我忘记更新了……我记得这个问题是我自己创建数据存储区密钥引起的。基本上,没有很好地分配密钥会引入“热平板电脑”问题。一旦我停止创建自己的密钥并让 AppEngine 创建它们,问题似乎就解决了。

【讨论】:

    【解决方案2】:

    当我们在同一个 memcache 键下存储大量实体时,我们经历了很长时间的反序列化。如果您存储大量具有大量结构化属性的实体,则可能需要很长时间。

    您不能在同一个缓存键中存储超过 1Mo 的对象大小。您可以使用Titan for App Engine 将您的缓存键划分为使用sharded memcache 的其他几个缓存键。它是透明的。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      相关资源
      最近更新 更多