第 2 章 扩展
启动红帽构建的 Keycloak 后,请考虑使用这些扩展和调整指南将您的实例调整为所需的负载:
- 尽可能减少资源利用率
- 实现目标响应时间
- 最小化数据库池争用
- 解决内存不足错误或过度垃圾回收开销
- 通过水平扩展提供高可用性
2.1. 垂直扩展
当您监控红帽构建的 Keycloak 工作负载时,请检查 CPU 或内存是否位于或过度使用。查阅 概念以调整 CPU 和内存资源大小,以更好地调整 Java 虚拟机(JVM)可用的资源。
在增加 JVM 可用的内存量前,特别是遇到内存不足错误时,最好使用堆转储决定什么占用量。过多的响应时间可能还表示 HTTP 工作队列太大,对负载的调优比简单地提供更多内存要好。请参见以下部分。
2.1.1. 常见调优选项
红帽构建的 Keycloak 根据您提供的内核数自动调整已使用的线程数量。手动更改线程数可以提高整体吞吐量。如需了解更多详细信息,请参阅配置线程池的概念。但是,更改线程数必须与其他 JVM 资源(如数据库连接)一同使用;否则,您可能会在其它位置移动瓶颈。如需了解更多详细信息,请参阅数据库连接池的概念。
要限制排队工作的内存使用率并为负载她提供,请参阅有关 配置线程池的概念。
如果您在获取数据库连接时出现超时,您应该考虑增加可用连接数。如需了解更多详细信息,请参阅数据库连接池的概念。
2.1.2. 垂直自动扩展
有些平台(如 Kubernetes)提供了垂直自动扩展的机制。如果需要重启服务器实例,则红帽构建的 Keycloak 不建议使用垂直自动扩展,目前是 Kubernetes 上的 Java 的情况。您可以考虑提供更高的 CPU 和/或内存限值,以便 JVM 根据需要在这些限制内调整。