限制
minikube 驱动程序
对于 Linux,需要 kvm2 驱动程序才能实现可扩展的解决方案(已测试 15 个 Keycloak 副本)。当添加超过 8 GB 的内存时,可以创建更多实例。
目前,Linux 上的 Podman 驱动程序仅支持最多 5 个 Keycloak 实例,因为打开文件数量限制实际上是线程数量限制。超过此限制后,容器将抱怨无法启动更多进程。
minikube 运行时
在较大的机器上测试 cri-o 运行时时,通过 Kubernetes API 和 Web 浏览器启动 Pod 并访问它们的行为不稳定。Pod 的存活探测有时会失败,并且 Pod 会重启。经过一些分析后,原因尚不清楚,可能是与打开文件数量有限有关。
Jaeger 和跟踪抽样
为每个跟踪收集的数据很大,可能会导致 Jaeger Pod 迅速出现内存不足的情况。为了最大程度地减少收集的数据量,OTEL_TRACES_SAMPLER_ARG
值设置为 0.001,仅跟踪千分之一的请求。默认情况下,跟踪功能已禁用,可以在 Keycloak 的 helm 图表的 values.yaml
文件中启用。
Tempo 被认为是另一种跟踪解决方案。虽然跟踪数据已通过 OTEL 成功提交,并且按跟踪 ID 搜索功能按预期工作,但目前(处于测试版)的跟踪搜索功能不会返回一些跟踪(例如用户删除)。因此,目前使用 Jaeger 跟踪。
Cryostat 用于 JFR 录制
helm 图表的内容最初由 Cryostat 运算符创建。在分析运算符 2.0 版本创建的资源时,没有支持的方法可以向发现的 cryostat-deployment 添加所需的的环境变量。因此,现在已将其提取并放置在此处作为 Helm 图表。
Cryostat 实例需要在与它连接的 JVM 相同的命名空间中运行。因此,它是 Keycloak 部署的一部分,而不是单独的 Helm 图表。
创建的分析是常规分析,而不是异步分析。因此,分析将受到安全点偏差问题的影响。有关详细信息,请参阅 Java 异步分析器
这个项目是一个用于 Java 的低开销抽样分析器,它不会受到安全点偏差问题的影响。它具有特定于 HotSpot 的 API 来收集堆栈跟踪并跟踪内存分配。分析器适用于 OpenJDK、Oracle JDK 和基于 HotSpot JVM 的其他 Java 运行时。
目前,在没有得到证实的情况下,不使用异步分析应该足够了。