限制

minikube 驱动程序

对于 Linux,需要 kvm2 驱动程序才能实现可扩展的解决方案(已测试 15 个 Keycloak 副本)。当添加超过 8 GB 的内存时,可以创建更多实例。

目前,Linux 上的 Podman 驱动程序仅支持最多 5 个 Keycloak 实例,因为打开文件数量限制实际上是线程数量限制。超过此限制后,容器将抱怨无法启动更多进程。

minikube 运行时

在较大的机器上测试 cri-o 运行时时,通过 Kubernetes API 和 Web 浏览器启动 Pod 并访问它们的行为不稳定。Pod 的存活探测有时会失败,并且 Pod 会重启。经过一些分析后,原因尚不清楚,可能是与打开文件数量有限有关。

minikube 持久性存储

minikube 中的 PVC 将从本地文件系统挂载。因此,不会检查 PVC 的大小,并且一项服务可能会占用磁盘空间,以至于无法供其他服务使用。

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 运行时。

— Java 异步分析器

目前,在没有得到证实的情况下,不使用异步分析应该足够了。