开发人员控制台显示过时的memcache结果?

时间:2014-12-28 17:52:10

标签: google-app-engine caching

[我认为这是开发人员控制台的一个问题而不是编程问题,但谷歌将我推荐给stackoverflow。]

在Compute / App Engine / Memcache选项卡上,Memcache结果似乎已过时。看看CACHE" ITEMS IN CACHE" (3个计数)和列表中的项目(14个计数)。在我"刷新缓存"之后,列表中仍然存在项目,但是当我"找到密钥"在" Flush cache"之后的列表中没有任何回报。这意味着,memcache似乎按照假设运行,但网站似乎显示陈旧的结果。

Memcache Tab from the Google Deverlopers Console

Chrome和IE中出现同样的问题。即使我重新加载页面和/或刷新浏览器缓存,该网站仍会显示过时的结果。任何解决方法?或者我忽略了什么?

-

现在变得好笑!我刷新了memcache并添加了一个项目,但根据控制台我在缓存中有3个项目,列表中显示的单个项目负责所有流量的250%,lol。 @Google,这是制作还是测试?

enter image description here

1 个答案:

答案 0 :(得分:1)

TL; DR密钥列表是过去一小时左右的密钥活动的近似值。它不是高速缓存当前状态的表示 - 因此预计它可能与“高速缓存中的项目”计数不匹配。

更多细节......

App Engine dev。感谢Oliver指出这个问题,你说输出是令人困惑的,我们需要修复输出或它所代表的解释。

这就是问题所在。显示的键列表从未意味着准确反映缓存的当前状态,尤其是对于小缓存。它旨在让您了解什么是“最热门”的密钥,它实际上仅适用于拥有数百或数十亿个密钥的应用程序,这些密钥可能有一些热键可能会阻止内存缓存有效扩展。

当您从App Engine购买更多专用内存缓存时,您不需要购买更多千兆字节内存,您还可以购买更多吞吐量(每购买1 GB,您每秒可获得大约10k键操作数) 。但是,如果您的密钥在其活动中分布均匀,您将只能利用所有购买的吞吐量。如果您有一些热键,那么它们可能会使部分内存缓冲过载,导致延迟或错误率过高。

因此,为了确保大型应用程序可以有效地扩展内存缓存,我们会显示您最热门的密钥列表。为我们的大规模分布式操作计算一个精确的“顶部K”键列表是非常昂贵的,所以我们做了一些近似,其中一个是在一小时的时间段内进行计算。

这些近似值适用于处于稳定状态的大型应用程序(这是我们的目标),但正如您所发现的,当应用程序的活动和内容发生变化时,它们可能会为小型应用程序产生异常结果。

小型应用程序的这些异常结果是我们的疏忽,我将提交一个内部错误来解决它。可能是我们只是向用户界面添加了一些文本,以清楚地表明列表是过去一小时左右的键活动的近似值,而不是缓存当前状态的表示。

相关问题