Java 在Google App Engine上启用会话对性能的影响是什么?

Java 在Google App Engine上启用会话对性能的影响是什么?,java,google-app-engine,session,Java,Google App Engine,Session,在谷歌应用程序引擎上启用会话对性能的影响是什么 我刚刚在我的Google App Engine应用程序中打开了true,现在我的请求使用的CPU时间比启用之前多了100毫秒。它还让用户额外等待100毫秒,等待服务器响应每个请求。这似乎是一个相当大的成本,我甚至没有调用getSession或以任何方式使用它,它仍然增加了额外的延迟 我能做些什么来加快速度吗 编辑:奇怪的是,额外的cpu时间现在不见了 每个使用会话的请求都需要从memcache(在最佳情况下)或数据存储中获取会话数据,然后在请求结束

在谷歌应用程序引擎上启用会话对性能的影响是什么

我刚刚在我的Google App Engine应用程序中打开了
true
,现在我的请求使用的CPU时间比启用之前多了100毫秒。它还让用户额外等待100毫秒,等待服务器响应每个请求。这似乎是一个相当大的成本,我甚至没有调用getSession或以任何方式使用它,它仍然增加了额外的延迟

我能做些什么来加快速度吗


编辑:奇怪的是,额外的cpu时间现在不见了

每个使用会话的请求都需要从memcache(在最佳情况下)或数据存储中获取会话数据,然后在请求结束时将会话信息写入缓存和数据存储。增加100毫秒的延迟似乎是一个合理的数字;显然,任何给定请求的实际延迟将取决于是否存在缓存未命中以及每个API调用的延迟(高度波动;请参阅应用引擎状态页)。

2018更新

我知道这个问题有点老了,但我认为值得一提的是,GAE课程的表现目前甚至更差。这是因为
\u ah\u会话
\u expires
属性现在正在被索引。查询过期会话时,使用此索引肯定很方便。但这有一个缺点:

  • 存储一个
    \u ah\u会话
    实体需要4次写入,而不是2次写入
  • 由于
    \u expires
    属性包含单调递增的值,因此维护其索引会带来一定的争用风险,有关详细信息,请参阅
  • 编辑:请注意,有一种流传甚广的说法是,
    \u ah_SESSION
    实体在每次请求后都会自动重写,只是为了更新过期时间戳。但事实并非如此。根据实际情况,只有在会话至少过期25%时才强制执行此类重写。这大大减少了对数据存储的访问。我之所以提到这一点,是因为我最初也相信这个神话D