首页 > 解决方案 > 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 模块中的内置类,或者其他一些想法?有没有其他人甚至看到这个错误?我在其他任何地方都找不到它。

感谢您在解决此问题时提供的任何帮助。

标签: javarotationweblogicjfr

解决方案


推荐阅读