2010-08-28 79 views
8

我知道应用引擎使用会话的memcache和数据存储。我可以在appstats中看到,当我调用getSession(),创建一个新会话时,发生1个memcache和1个数据存储。Google App Engine for Java会话究竟如何工作?

但是,在我的应用程序的每个请求中,我从会话中获取当前用户对象。并且没有memcache或数据存储会显示在appstats中。

这是如何工作的?

+0

您是否在会话环境中更改了任何内容? – 2010-08-28 15:58:53

+1

理论上,额外的内存缓存层可以减少内存缓存命中的数量。只要应用程序只在单个服务器上运行,这将非常有意义,因为它会大大减少网络流量。 – sfussenegger 2010-10-22 12:15:32

回答

1

谷歌博客“Easy Performance Profiling with Appstats”有一篇很好的文章,着眼于分析Appstats中的memcache。它在Python中进行了讨论,但引用了Appstats for Java的使用。

来源: “谷歌应用程序引擎>Appstats for Java

如何使用

的将Appstats Servlet过滤器增加了自己的远程过程调用框架构成了这一App Engine服务的API。它记录请求处理程序期间所有API调用的统计信息,然后使用名称空间__appstats__将数据存储在内存缓存中。 Appstats保留最近1,000次请求的统计数据(大约)。数据包括简要记录(每个约200字节)和详细记录(每个记录最多可达100 KB)。

Java版本的Appstats使用固定值和行为来确定数据如何存储在memcache和数据存储中。 (这些不能配置,因为他们可以用将Appstats的Python版本。)

如果您遇到与内存缓存数据未显示将Appstats了问题,你可能想在JCache看作到App的界面引擎memcache服务。或者,还有一些适合于报告memcached统计信息的工具,推荐here

干杯。

+0

我不认为它没有显示出来,我认为这个会话其实并没有在那些地方使用memcache,因为我的cpu_usage也没有增加。 – Kyle 2010-09-11 17:26:45