java - Weblogic/OpenJDK 11 错误 - “无法检查文件大小以确定块旋转”
问题描述
我在 Weblogic 中遇到错误。我正在使用 OpenJDK 11.0.2 运行 Weblogic 14.1.1。我在 Red Hat Linux Enterprise 8.4 版上运行。这是必需的平台堆栈,因此我无法更新其中任何一个。
我收到的错误是“无法检查文件大小以确定块旋转”。运行大约 7-10 天后,它会显示在 Weblogic 日志中。它只是不断打印出来,填满日志。
我在 OpenJDK 的以下 Java 类中发现了错误消息: https ://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecorder.java
类名是 PlatformRecorder.java。错误出现在方法periodicTask() 的第442 行。
try {
if (SecuritySupport.getFileSize(currentChunk.getUnfishedFile()) > Options.getMaxChunkSize()) {
rotateDisk();
}
} catch (IOException e) {
Logger.log(JFR_SYSTEM, WARN, "Could not check file size to determine chunk rotation");
}
如您所见,它位于 IOException 的 catch 块中。不幸的是,他们没有在日志中打印出异常的详细信息。
这似乎是 Java Flight Recorder (JFR) 的一部分。我对此并不熟悉,但我的理解是默认情况下不应该启用它。但是 Weblogic/OpenJDK 似乎确实在运行它(因为我收到了那个错误)。
由于此错误在 Weblogic 运行大约一周后才会出现,因此听起来好像有一些资源不可用或在一定时间后“用完”。我确实检查了磁盘空间,并没有发现任何异常。我还在Weblogic目录结构下找到了一些“.jfr”文件,但它们都是空的。
我想也许我可以用我的一个替换这个类的默认实现,在那里我打印出异常细节,也许会给我一个线索。但这些似乎在 Java 模块中。而且我不确定如何用我的一个替换模块中的本机 Java 类。
另一个想法是 Weblogic 中可能正在进行一些分析,导致它启动。但我不确定如何关闭所有分析(或者这是否是一件好事)。但是我显然不能在生产中每周回收一次 Weblogic,因为这个错误不断出现。
有人对可能导致此错误的原因有任何想法吗?或者如何确定更多细节,比如如何覆盖 Java 模块中的内置类,或者其他一些想法?有没有其他人甚至看到这个错误?我在其他任何地方都找不到它。
感谢您在解决此问题时提供的任何帮助。
解决方案
推荐阅读
- python - Snake Game IndexError:列表索引超出范围
- react-native - 如何在 React Native 中修复这些漏洞
- here-api - 无法在浏览器上呈现 Here 地图
- java - 在 Cucumber 测试中无法关闭 CamelContext
- powershell - 如果 Pester 测试失败,我如何“不稳定”构建 Jenkins 管道?
- c - 如何在c中添加多个带空格的字符串?
- mysql - 如何使用 ALTER 命令将具有 int 数据类型的列添加到 SQL 中的表中?
- python - Python通过在同一行中放置紧密匹配的时间戳来合并许多数据帧
- powershell - 以文件名作为变量的 Powershell ForEach 循环
- intellij-idea - IntelliJ IDEA 获取元素文本