当offline_user_session表有很多记录时,密钥斗篷启动非常慢

时间:2020-01-15 10:46:49

标签: performance optimization token keycloak startup

我们的应用中大约有100万用户。我们使用具有标准配置的Keycloak实例(https://hub.docker.com/r/jboss/keycloak/)。 此外,我们使用离线令牌,该问题以某种方式连接到了

offline_user_session 表中的记录越多,启动密钥库实例的时间就越多。

如果记录数为0,则开始大约需要30秒。

有80万个会话时,需要8分钟才能开始

大约有100万次会话时,它可以启动30分钟或更长时间

我试图在互联网上找到任何东西,并在官方文档中进行了查询,但仍然没有结果。

1 个答案:

答案 0 :(得分:2)

在分析 user_session 离线表时,存在与定义此表的良好做法相关的问题。

<头>
字段 类型 默认 额外
USER_SESSION_ID varchar(36) 没有 PRI NULL
USER_ID varchar(255)
REALM_ID varchar(36) 没有
CREATED_ON int(11) 没有
OFFLINE_FLAG varchar(4) 没有 PRI
数据 长文本
LAST_SESSION_REFRESH int(11) 没有 0

在数据库层,我们有一个构造问题,当使用具有“varchar”类型的两列组成主键时。这种情况是出现问题的唯一原因,只有在有很多记录的情况下才会明显。

这个问题的解决方案是将主键交换为大整数数据类型,并将其保留为列(USER_SESSION_ID、OFFLINE_FLAG)作为唯一索引。但是,这涉及到应用层的配置调整,这应该与解决方案提供商一起看到。

<头>
字段 类型 默认 额外
身份证 BIGINT 没有 PRIL
USER_SESSION_ID varchar(36) 没有 UNI NULL
USER_ID varchar(255)
REALM_ID varchar(36) 没有
CREATED_ON int(11) 没有
OFFLINE_FLAG varchar(4) 没有 UNI
数据 长文本
LAST_SESSION_REFRESH int(11) 没有 0