第 10 章 服务器缓存配置


红帽单点登录有两种缓存类型。一个类型的缓存位于数据库的前面,以减少 DB 的负载,并通过在内存中保留数据来降低总体响应时间。域、客户端、角色和用户元数据保存在这种类型的缓存中。这个缓存是本地缓存。即使您位于带有更多 Red Hat Single Sign-On 服务器的集群中,本地缓存也不会使用复制。相反,它们只会在本地保留副本,且该条目被更新到集群的其余部分中,且条目会被驱除。存在单独的复制缓存 工作,该任务将不validation消息发送到整个集群,有关应该从本地缓存驱除哪些条目。这可大大减少网络流量,使事情变得高效,并避免在线路上传输敏感元数据。

第二类缓存处理用户会话、离线令牌和跟踪登录失败,以便服务器可以检测密码保护和其他攻击。这些缓存中的数据是临时的,仅在内存中,但可能会在集群中复制。

本章讨论这些缓存的一些配置选项用于集群和非集群部署。

注意

这些缓存的更高级配置可在 JBoss EAP 配置指南Infinispan 部分找到。

10.1. 驱除和过期

为 Red Hat Single Sign-On 配置多个不同的缓存。有一个包含安全应用程序、常规安全数据和配置选项信息的 realm 缓存。还有一个包含用户元数据的用户缓存。这两个缓存都默认为 10000 条目,并使用最近一次使用的驱除策略。它们各自绑定到控制集群设置中驱除的对象修订缓存。这个缓存会被隐式创建,有两倍配置的大小。同样适用于 授权 缓存,它保存授权数据。密钥 缓存保存了有关外部密钥的数据,不需要具有专用修订缓存。它并没有明确声明了 过期时间,因此密钥会被定期过期并强制从外部客户端或身份提供程序下载。

这些缓存的驱除策略和最大条目可以在 standalone. xml、standalone -ha.xmldomain.xml 中配置,具体取决于您的 操作模式。在配置文件中,使用 infinispan 子系统有部分,它类似于:

<subsystem xmlns="urn:jboss:domain:infinispan:12.0">
    <cache-container name="keycloak">
        <local-cache name="realms">
            <object-memory size="10000"/>
        </local-cache>
        <local-cache name="users">
            <object-memory size="10000"/>
        </local-cache>
        ...
        <local-cache name="keys">
            <object-memory size="1000"/>
            <expiration max-idle="3600000"/>
        </local-cache>
        ...
    </cache-container>
Copy to Clipboard Toggle word wrap

若要限制或扩展允许的条目的数量,只需添加或编辑特定缓存配置 的对象 元素或特定缓存配置的 expiration 元素。

此外,还有单独的缓存 会话clientSessions离线 会话、offClientSessionsloginFailuresactionTokens。这些缓存在集群环境中分发,它们默认不会绑定。如果他们有界线,那么某些会话可能会丢失。过期的会话由 Red Hat Single Sign-On 本身内部清除,以避免在不限制的情况下增大这些缓存的大小。如果因为大量会话造成内存问题,您可以尝试:

  • 增加集群大小(集群中更多节点意味着会在节点间平均分配会话)
  • 为 Red Hat Single Sign-On 服务器进程增加内存
  • 减少所有者数量,以确保缓存在一个位置保存。详情请查看 第 10.2 节 “复制和故障切换”
  • 为分布式缓存禁用 l1-lifespan。如需了解更多详细信息,请参阅 Infinispan 文档
  • 减少会话超时,该功能可单独为 Red Hat Single Sign-On 管理控制台中的每个域执行。但这可能会影响最终用户的可用性。如需了解更多详细信息 ,请参阅 超时

还有额外的复制缓存 工作,它最常用于在集群节点间发送消息;默认情况下也未绑定。但是,由于此缓存中条目非常短,所以这个缓存不应造成任何内存问题。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部