第 4 章 修复的问题
Cryostat 发行版本可能包括对在早期版本的 Cryostat 中发现的问题的修复。查看每个修复的问题备注,以了解此问题的说明和后续修复。
Cryostat 2.4 发行版本中解决了以下问题:
在较晚连接目标时规则激活失败
在 Cryostat 2.4 之前,Cryostat 可能无法在发现的 JVM 目标上触发自动规则。当发现机制(例如,OpenShift 端点查询)在容器中的 JVM 准备好接受传入的 JMX 请求之前,会出现这个问题。
Cryostat 2.4 通过对之前没有连接的目标 JVM 进行重新检查来解决这个问题,并在一个集合期间定期尝试触发规则。在这个版本中,有助于在更快时间内解决 Cryostat 和 JVM 之间的任何连接问题。在这个版本中,在启用或禁用规则之间切换时,避免意外的规则触发行为。
发现插件注册失败
在 Cryostat 2.4 之前,Cryostat 代理的实例可能无法与 Cryostat 服务器注册。尽管注册协议定义了有助于识别此类故障和重置注册的行为,但这些定义的行为也会在其他情况下失败。如果发生这两个失败,Cryostat 服务器会具有服务器被视为有效的无效代理注册记录。在这种情况下,代理可能会根据上一个注册失败的假设进一步尝试注册。但是,服务器会根据代理已经注册的假设拒绝代理再次注册。这让代理和服务器无法相互识别或重置注册状态。
Cryostat 2.4 解决了这个问题,并提供更可靠的代理发现注册。
由于代理实例不可用,服务器启动失败
在 Cryostat 2.4 之前,如果您关闭并重启 Cryostat 服务器,服务器可能无法成功重启。如果您关闭了具有有效代理注册记录的服务器,然后在不重启代理的情况下关闭这些代理实例,则会出现此问题。在这种情况下,在服务器启动时,服务器可能会看到预先存在的代理注册记录,并期望这些代理实例仍然存在。但是,由于代理不再可用,服务器启动随后会失败。
Cryostat 2.4 解决了这个问题。在这个发行版本中,在服务器启动时,如果不再可用的代理注册记录仍存在,服务器会删除这些注册记录,服务器会正常启动。
cryostat-reports 和 jfr-datasource对容器调整属性不需要覆盖
cryostat-reports 和 jfr-datasource 容器都使用 OpenJDK UBI 运行时镜像。在 Cryostat 2.4 之前,这些容器被错误地配置为覆盖基础镜像的入口点脚本执行的各种容器调整属性。
在 Cryostat 2.4 中,cry ostat-reports 和 jfr-datasource 容器不再覆盖 container-tuning 属性,这些参数现在处于活跃状态。
使用自动规则重启 flight 记录时,Truncation JFR 数据
在 Cryostat 2.4 之前,当客户端请求使用自动规则创建 JFR 记录时,这可能会导致为现有记录意外截断 JFR 数据。如果客户端请求包含 restart=true 设置,但具有相同名称的现有记录没有处于 STOPPED 状态,会出现这种情况。在这种情况下,服务器会自动停止、删除和重新创建记录,这会导致非存档记录数据丢失。
Cryostat 2.4 通过引入 replace 参数解决了这个问题,该参数会取代之前版本中提供的 restart 参数。当您定义自动规则来创建 JFR 记录时,您现在可以在客户端请求中包含 replace=stopped 设置。此设置指示服务器仅在现有记录处于 STOPPED 状态时才会重新启动 JFR 记录。如果现有记录处于另一个状态,如 RUNNING,服务器将拒绝请求。
由于小 CPU 限制,容器启动失败
在 Cryostat 2.4 之前,如果使用小 CPU 限制部署 Cryostat,容器可能无法启动。
Cryostat 2.4 通过确保即使使用小 CPU 限制部署 Cryostat,容器也可以启动来解决这个问题。