【问题标题】:Will my App Engine Memcache limits scale with my app?我的 App Engine Memcache 限制会随着我的应用而扩展吗?
【发布时间】:2012-03-08 17:58:36
【问题描述】:

1000 名用户的测试结果是否与我使用 10,000 名用户获得的结果相似?如果我还运行 10 倍的实例,内存缓存使用量增加 10 倍会改变我得到的结果吗?

我一直在使用 memcache 做很多事情,而且效果很好。现在,我想在其中放入更多,缓存几个关键查询的结果。每个用户的查询都不同,我现在每周有一千个用户。

我对这种策略持谨慎态度。我可以花一些时间来实现它,并发现对于我的一千名用户来说效果很好。但是,假设我的网站越来越受欢迎,突然间我有了 10,000 个用户。我会看到内存缓存性能下降吗?

我担心会急剧下降。我可以想象有一些不可见的限制,比如允许我使用 1GB 的内存缓存数据。突然间,随着使用量增加 10 倍,我可能会远远超过这个限制,并看到大量的颠簸或其他东西。

这对客户来说似乎很难测试 - 我希望 App Engine 内部人员发表评论。

感谢您的任何见解!

【问题讨论】:

标签: google-app-engine


【解决方案1】:

只有 Google 知道 GAE 上的 Memcache 实现的内部结构,因此在一般公共网站上提出此类问题不太可能得到明确的答案。

但是让我推测一下:如果您看一下新的Python NDB API,您会发现默认情况下所有数据存储都缓存(部分)在内存缓存中。因此,如果 Google 在默认情况下大规模地这样做,那么我猜他们确保 memcache 是可扩展的。

编辑:

此外,GAE sessions 默认还使用 Memcache 缓存会话数据,这意味着所有使用会话的应用(= 大多数 Web 应用)也大规模使用 Memcache。

【讨论】:

    【解决方案2】:

    您总是可以通过将序列化数据写入 blobstore 来伪造 memcache...

    【讨论】:

      【解决方案3】:

      只要您没有热键,App Engine 内存缓存就会随心所欲地扩展。

      随着您的扩展,您需要从共享内存缓存转移到专用内存缓存,您以 1GB 为单位购买专用内存缓存。

      除了获得适量的内存外,您还需要确保有足够的内存缓存来处理负载。如App Engine memcache docs 中所述,如果项目大小约为 1 kB,则每 GB 内存缓存可支持约 10k 键操作/秒。

      真正限制扩展的一件事是热键。每 GB 10k keyops/s 仅适用于密钥分布均匀的情况。如果您有少量流量不成比例的密钥,那么它们可能会超过部分后端系统的容量。管理控制台中的 memcache 查看器部分将显示您最常用的键,以帮助您诊断热键。

      【讨论】:

        猜你喜欢
        • 2011-07-02
        • 2012-01-15
        • 2014-08-12
        • 1970-01-01
        • 2018-07-22
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多