共享内存缓存 vs 专用内存缓存 & 配额计算

6
我有一个应用程序,在memcache中存储了约20000个条目。每个条目都是一个可序列化对象,包含一个字符串和两个整数。我将过期时间设置为6小时。
我使用的是共享/免费的memcache。它似乎只能存储约5000个条目(大约7mb)。最老的条目总是几分钟前的。为什么呢?
后来我想:让我们换成专用的memcache。然后缓存运行得很好,它可以存储所有条目,最老的条目是6小时前的,一切都符合预期。除了配额之外。几个小时后,它就显示我已经使用了18个“Gbyte小时”。
我的总缓存大小约为11mb。所以我猜成本应该是($0.12 / Gbyte / hr)-> $0.12 *〜0.01Gb * 24小时每天,这只是约$0.03。
我错在哪里了?我的计算有误吗?我是否误解了“Gbyte小时”的含义?
2个回答

7
AppEngine专用memcache按照每1GB的块进行定价,而不是基于您在专用分配的1GB存储中使用的内容。请参见此处:https://developers.google.com/appengine/docs/adminconsole/memcache 您的专用memcache每天将花费您2.88美元。
“专用”为您提供了空间,但每秒操作数为10,000个操作。
关于您在共享(免费)memcache上的体验,您所看到的不是通常预期的情况。很不幸,您很可能在一个AppEngine集群上,一些其他应用程序正在滥用共享memcache。

对于集群服务:我能否切换我的实例所在的集群?或者还有其他什么操作吗? - Goddchen
不,你得看其他人如何使用共享的memcache。而且由于它是免费的,你可以肯定每个人都尽可能地想要使用它。有很多报告称共享的memcache效果不佳。我认为如果你有大量的流量,它可能会对你更有效,如果你的流量很少,它将不断被清除,因为这就是memcache的工作方式。 - dragonx
我将我的应用程序切换到专用的memcache,所以我只能告诉你我们之前为了提高memcache内容的粘性所做的事情:我注意到在同一个键上执行put和get操作会使该键变得更加粘性。如果你进行了put操作,但是没有立即获取数据,那么你会降低缓存命中率。 - Jerome

4

专用memcache按千兆字节计费。因此,小于1GB的任何内容都将被计费为1GB,而您可能已经将其运行了18个小时。是的,有点糟糕。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接