You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes部署Keycloak性能优化:需支持500CCU并优化响应时间

Keycloak集群性能优化方案(解决Infinispan超时&提升至500CCU)

问题定位

当前压测到150CCU出现Infinispan缓存超时错误,且Pod CPU/内存占用仅20%未触发HPA,说明瓶颈不在于计算资源,而是分布式缓存同步延迟或缓存配置不合理导致的请求阻塞。

具体优化配置

一、Infinispan缓存核心参数调整(针对standalone-ha.xml)

  1. 调整缓存副本数(CACHE_OWNERS)
    默认缓存副本数过高会增加跨Pod同步开销,修改以下核心缓存的owners属性:

    <cache-container name="keycloak">
      <!-- 认证会话缓存 -->
      <replicated-cache name="authenticationSessions" mode="SYNC">
        <locking isolation="REPEATABLE_READ" acquire-timeout="3000" concurrency-level="1000"/>
        <transaction mode="NON_XA"/>
        <state-transfer enabled="true" timeout="60000"/>
        <!-- 集群节点数≥2时设为2,减少同步压力 -->
        <cluster owners="2"/>
      </replicated-cache>
      <!-- 登录失败缓存 -->
      <replicated-cache name="loginFailures" mode="SYNC">
        <locking isolation="REPEATABLE_READ" acquire-timeout="3000" concurrency-level="1000"/>
        <transaction mode="NON_XA"/>
        <cluster owners="2"/>
      </replicated-cache>
      <!-- 用户会话缓存 -->
      <replicated-cache name="sessions" mode="SYNC">
        <locking isolation="REPEATABLE_READ" acquire-timeout="3000" concurrency-level="1000"/>
        <transaction mode="NON_XA"/>
        <cluster owners="2"/>
      </replicated-cache>
    </cache-container>
    

    说明:集群节点数超过3时,可将owners设为2-3,平衡冗余度与同步开销。

  2. 延长缓存操作超时时间
    针对超时错误,调整缓存的锁定与请求超时:

    <!-- 在cache-container下添加传输层超时配置 -->
    <transport executor="infinispan-transport" lock-timeout="6000"/>
    <!-- 具体缓存的锁等待超时调整为5000ms -->
    <locking isolation="REPEATABLE_READ" acquire-timeout="5000" concurrency-level="2000"/>
    
  3. 切换部分缓存为异步模式(可选)
    对非强一致性要求的缓存(如loginFailures),改为ASYNC异步模式降低同步压力:

    <replicated-cache name="loginFailures" mode="ASYNC">
      <!-- 其他配置保持不变 -->
    </replicated-cache>
    

    注意:sessions和authenticationSessions需保留SYNC模式,避免会话不一致。

二、令牌与会话生命周期优化

通过缩短无效资源留存时间,减少缓存占用:

  • Access Token Lifespan(访问令牌有效期):在Keycloak控制台「领域设置→令牌」中,从默认5分钟改为1分钟(可根据业务场景调整至30秒)。
  • SSO Session Idle(SSO会话闲置超时):改为5分钟,自动清理闲置会话。
  • SSO Session Max(SSO会话最长有效期):改为1小时,避免长期无效会话占用缓存。

三、HPA配置优化

当前仅基于CPU触发扩容,无法应对缓存瓶颈,调整如下:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: keycloak-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: keycloak
  minReplicas: 3  # 提升最小副本数,增强缓存同步冗余度
  maxReplicas: 8
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 80
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 70  # 增加内存触发条件

四、额外调优建议

  1. 启用缓存统计
    在standalone-ha.xml中开启Infinispan统计,便于定位缓存热点:

    <cache-container name="keycloak" statistics="true">
      <!-- 其他配置 -->
    </cache-container>
    

    可通过JMX或Keycloak监控面板查看缓存命中率、同步延迟等指标。

  2. 数据库连接池优化
    调整数据源连接池参数,避免数据库连接成为瓶颈:

    <datasource name="KeycloakDS" jndi-name="java:jboss/datasources/KeycloakDS">
      <pool>
        <min-pool-size>20</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <prefill>true</prefill>
      </pool>
    </datasource>
    
  3. Kubernetes网络优化
    将Keycloak Pod调度到同一可用区,减少跨节点网络延迟,或启用集群网络优化插件提升缓存同步效率。


内容的提问来源于stack exchange,提问作者Viettel Solutions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:54:20