如何将keycloak迁移到mysql数据库并修复300异常后的超时

Posted

技术标签:

【中文标题】如何将keycloak迁移到mysql数据库并修复300异常后的超时【英文标题】:How to migrate keycloak to mysql database and fix timeout after 300 exception 【发布时间】:2019-10-14 21:21:31 【问题描述】:

我正在尝试将 mysql 设置到我的 keycloak 实例,但由于以下异常而无法正常工作:

等待服务容器稳定的 [300] 秒后超时。操作将回滚。首先更新服务容器的步骤是在地址“添加” (“核心服务”=>“管理”), (“管理接口”=>“http 接口”) ]' 14:34:42,546 错误 [org.jboss.as.controller.management-operation](控制器引导线程)​​WFLYCTL0190:步骤处理程序 org.jboss.as.server.DeployerChainAddHandler$FinalRuntimeStepHandler@65d34517 用于操作 add-deployer-chains 在地址[] 处理操作回滚失败——java.util.concurrent.TimeoutException: java.util.concurrent.TimeoutException 在 org.jboss.as.controller.OperationContextImpl.waitForRemovals(OperationContextImpl.java:522) 在 org.jboss.as.controller.AbstractOperationContext$Step.handleResult(AbstractOperationContext.java:1518) 在 org.jboss.as.controller.AbstractOperationContext$Step.finalizeInternal(AbstractOperationContext.java:1472) 在 org.jboss.as.controller.AbstractOperationContext$Step.finalizeStep(AbstractOperationContext.java:1445) 在 org.jboss.as.controller.AbstractOperationContext$Step.access$400(AbstractOperationContext.java:1319) 在 org.jboss.as.controller.AbstractOperationContext.executeResultHandlerPhase(AbstractOperationContext.java:876) 在 org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:726) 在 org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:467) 在 org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1412) 在 org.jboss.as.controller.ModelControllerImpl.boot(ModelControllerImpl.java:521) 在 org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:472) 在 org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:434) 在 org.jboss.as.server.ServerService.boot(ServerService.java:435) 在 org.jboss.as.server.ServerService.boot(ServerService.java:394) 在 org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:374) 在 java.lang.Thread.run(Thread.java:748)

14:34:42,549 ERROR [org.jboss.as.controller.client] (Controller Boot Thread) WFLYCTL0190: Step handler org.jboss.as.server.DeployerChainAddHandler$FinalRuntimeStepHandler@65d34517 for operation add-deployer-chains at address [] failed handling operation rollback -- java.util.concurrent.TimeoutException.

https://developer.jboss.org/thread/272010 在这个问题中,他们也有类似的异常,并在将 timeout300 更改为 600 后解决了这个问题。 但是我在哪里可以更改此设置。

顺便说一句,我将 事务超时 更改如下,但仍然遇到问题。

<coordinator-environment default-timeout="7200" />

【问题讨论】:

增加超时可能会导致其他问题。请提供查询涉及的SQL。 【参考方案1】:

正如大多数人所建议的那样,添加此参数应该可以为您解决问题。

-Djboss.as.management.blocking.timeout=3600

【讨论】:

【参考方案2】:

我在台式机和笔记本电脑上都使用 ubuntu 20.04 LTS。我注意到 mysql 在笔记本电脑的 docker 容器上运行,而桌面上的一切都很好,但运行速度非常慢,请参阅 MySQL bug#46959。如果您遇到像我这样的问题,this solution 可能有用。

【讨论】:

以上是关于如何将keycloak迁移到mysql数据库并修复300异常后的超时的主要内容,如果未能解决你的问题,请参考以下文章

ISPN000580:无法迁移持久数据 - 升级到 jboss/keycloak 13.0.1

为使用 Spring Security 的应用迁移到 keycloak

从 Spring Security OAuth2 迁移到 Keycloak 时,如何解决“permitAll 仅适用于 HttpSecurity.authorizeRequests()”?

如何修复`EF Core中的远程主机`错误强制关闭现有连接

如何使用logstash将Mysql数据迁移到elasticsearch

如何将keycloak重定向到应用程序页面并获取令牌