Keycloak JVM 选项
本文档涵盖了有关 JVM 选项的信息,这些选项用于调整 Keycloak 的性能。
为什么 JVM 堆调整与 Keycloak 的性能相关
Keycloak 作为一个基于 Java 的应用程序,依赖 JVM 进行内存管理。适当的堆大小确保应用程序拥有足够的内存来处理其操作,而不会遇到与内存相关的問題。高效的垃圾收集 (GC) 是此过程中的重要因素。如果堆太小,GC 将频繁运行,从而增加 CPU 使用率并可能导致暂停。相反,堆过大可能导致更长的 GC 暂停。通过适当调整堆大小,可以最大程度地减少花费在垃圾收集上的时间,从而提高应用程序的整体吞吐量。
此外,适当的堆调整有助于防止内存不足 (OOM) 错误,有助于提高 Keycloak 的稳定性和可靠性。它还改善了延迟和响应时间,这对身份验证和授权任务至关重要。适当的内存管理使应用程序能够有效地扩展,处理负载增加而不会降低性能。此外,优化的堆设置确保高效地利用资源,既能防止资源利用不足,又能防止资源过度消耗。
设置 JVM 选项
我们可以在部署中设置 JVM 选项,在部署中可以覆盖特定变量(如 JVM_OPTS/JAVA_OPTS_KC_HEAP),并启用特殊标志。请记住,如果您有多个容器/服务器,请确保以一致的方式将配置应用于所有 Keycloak JVM。
我们还可以通过在 Keycloak 服务器节点上运行以下命令来验证配置是否已应用,该命令会打印应用于特定 JVM 的 VM.flags。
jcmd 1 VM.flags
JAVA_OPTS_KC_HEAP
容器特定工作负载 JVM 堆选项
- -XX:MaxRAMPercentage
-
设置 JVM 可以使用的系统物理内存的最大百分比。
- -XX:MinRAMPercentage
-
设置 JVM 可以使用的系统物理内存的最小百分比。
- -XX:InitialRAMPercentage
-
设置分配给 JVM 的系统物理内存的初始百分比。
垃圾收集调整选项
- -XX:+UseG1GC
-
启用 G1 垃圾收集器。
- -Xlog:gc:file="path/to/file"
-
我们可以设置此选项以生成 GC 日志,然后可以收集这些日志以执行 GC 日志分析。
- -XX:MaxGCPauseMillis
-
设置最大 GC 暂停时间的目标。