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

使用Jmeter压测Keycloak出现CPU100%占用问题,寻求解决方案

Keycloak高并发登录场景性能优化方案

1. 基础配置调优

  • JVM参数优化:Keycloak默认JVM堆内存分配较低,可将Xmx/Xms调整为服务器可用内存的70%左右,同时开启G1垃圾回收器,根据CPU核心数匹配GC线程数,避免GC占用过多CPU资源,参考配置如下:
    JAVA_OPTS="-Xms8G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2"
  • 关闭非必要功能:默认开启的事件审计、用户会话持久化、OTP强制校验、复杂密码规则校验等非核心功能可根据场景关闭,同时禁用未用到的身份提供商插件、解除Admin API速率限制,可降低30%左右的CPU消耗。
  • 数据库层优化:将默认数据库连接池大小从100调整到200-300匹配1000并发场景,同时开启用户信息、客户端配置等静态数据的查询缓存,避免每次登录请求重复查询数据库。

2. 密码哈希策略调整

Keycloak默认对用户密码采用PBKDF2慢哈希算法,默认迭代次数为27500次,这是为了对抗暴力破解特意设计的,也是登录场景CPU高占用的核心原因。Identity Server默认的哈希迭代次数远低于Keycloak,所以同款压测下不会出现CPU瓶颈。

  • 可根据安全要求适当降低迭代次数,最低可调整到10000次,登录性能可提升3倍以上,也可以更换为相同安全等级下CPU消耗更低的argon2算法,可降低40%左右的哈希计算开销。
  • 仅压测场景下可临时将测试用户的哈希算法调整为无盐SHA256,压测完成后恢复生产配置即可。

注意:生产环境调整哈希迭代次数需先评估安全风险,不要低于业界推荐的最低阈值。

3. 架构层面扩容

  • 单节点Keycloak性能上限有限,若你使用的是2核4G规格的服务器,70并发打满CPU属于正常表现。生产场景可部署Keycloak集群,用Nginx或HAProxy做负载均衡,采用分布式缓存Infinispan同步会话数据,无需开启会话黏滞,1000并发场景仅需3台4核8G规格的节点即可轻松承载。
  • 有条件可将缓存层独立部署,用户会话、Token缓存等数据存入独立的Redis或Infinispan集群,避免占用Keycloak节点的运算资源。

4. 压测逻辑优化

  • 不要仅采用密码授权模式压测:密码模式每次请求都需要做密码哈希校验,是所有OAuth授权模式中CPU消耗最高的类型,若实际业务使用授权码模式、客户端凭证模式,需用对应模式开展压测,客户端凭证模式的并发性能可达密码模式的5倍以上。
  • 开启Token缓存:相同用户短时间内重复登录可直接返回缓存的有效Token,无需每次重新生成、验签。

内容的提问来源于stack exchange,提问作者Allen Chang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:03