1

我们的 Web 应用程序使用 shiro 进行身份验证。我们将会话存储在 EHCache 中,由文件存储支持,并使用复制来确保所有 Web 服务器都具有所有会话。我们使用的是对等复制,而不是多播配置。事情似乎大部分时间都有效。但是,有时不会复制登录或注销。

我们将看到带有以下异常的堆栈跟踪:org.apache.shiro.session.UnknownSessionException:没有 ID 为 [dc996ea4-daff-431f-946b-6a5a214f9477] 的会话

如果文件不同步,它将保持不同步。

有没有人建议我们为什么会看到这种行为?

4

1 回答 1

1

坦率地说,我会尝试完全摆脱对等复制......因为它有可能出现竞争条件和并发异常,这可以解释你随机丢失的条目。我将转向使用 Bigmemory Max 的更强大的分布式缓存解决方案,该解决方案最多可免费用于 4 个客户端 + 4GB 内存存储 ( http://terracotta.org/products/bigmemorymax )

编辑 - 仅供参考,BigMemory Max 仍然是 ehcache ......它只是一个“分布式 ehcache”,具有额外的“堆外”内存能力......

于 2013-08-14T18:00:30.407 回答