我的App Engine Memcache会限制我的应用程序的扩展吗?

时间:2012-03-08 17:58:36

标签: google-app-engine

1000名用户的测试结果与10,000名用户的测试结果相似吗?如果我还有10倍的实例运行,那么memcache使用量会增加10倍会改变我得到的结果吗?

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

我对这个策略很谨慎。我可以花一些时间来实现这一点,并发现对于我的千位用户来说它很有效。但是,说我的网站越来越流行,突然间我有10,000个用户。我会看到内存缓存性能下降吗?

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

对于客户来说,这似乎很难测试 - 我很喜欢App Engine内部人士的评论。

感谢您的任何见解!

3 个答案:

答案 0 :(得分:2)

在GAE上实现Memcache的内部只有谷歌知道,因此在一般公共网站上提出这样的问题并不能得到明确的答案。

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

修改

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

答案 1 :(得分:0)

您可以通过将序列化数据写入blobstore来伪造内存缓存...

答案 2 :(得分:0)

只要您没有热键,App Engine内存缓存就会根据您的需要进行扩展。

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

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

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