伯克利DB JE JDB文件不断增加

时间:2018-12-11 09:35:16

标签: java berkeley-db-je

我正在调试系统中的磁盘空间问题,发现.jdb文件占用了大部分空间。

在浏览时,找到此链接https://backstage.forgerock.com/knowledge/kb/article/a14630082,在我的情况下,lnSizeCorrectionFactor约为1.4,fileDeleted = false。 我运行了disk space命令以查找空间利用率,结果发现所有jdb文件的利用率都不为零,但是大多数文件的利用率均为2到9之间的个位数。

我使用的不是je-5.0.58版本。我的问题是根据BDB文档https://docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/backgroundthreads.html#cleaner,如果jdb文件小于默认值50%,则需要对其进行清理。就我而言,即使它们只有一位数,为什么还不清洗它们?

我没有明确设置任何环境配置,因此根据定义它应该使用默认值。下面是创建bdb存储库的代码。

 private static Repository createBDBRepository(File environmentHome) throws 
 RepositoryException {
            BDBRepositoryBuilder builder = new BDBRepositoryBuilder();
            builder.setName("localbdb");
            builder.setEnvironmentHomeFile(environmentHome);
            builder.setTransactionNoSync(false);

            // Set BDB-JE flavor
            builder.setProduct("JE");

            builder.setCacheSize(20 * 1024 * 1024L);
            return builder.build();
    }

je.info文件中的日志行

   Chose lowest utilized file for cleaning. fileChosen: 0x50cbecc totalUtilization: 49 bestFileUtilization: 8 lnSizeCorrectionFactor: 1.1012049 isProbe: false
   No file selected for cleaning. totalUtilization: 50 bestFileUtilization: 8 lnSizeCorrectionFactor: 1.1012049 isProbe: false

1 个答案:

答案 0 :(得分:0)

如ForgeRock文档中所述,这是由于BDB JE版本5中的一个错误,该错误已在版本6和更高版本中得到解决。

引用BDB JE 6.x发行说明:

  

对日志利用率的计算进行了改进,以避免   清洁不足或过度清洁。例如,当日志利用率为   估计低于实际利用率,不必要   会发生过度清洁,这可能会降低性能。或登录时   利用率估计高于实际利用率,   清理不足将阻止回收未使用的磁盘空间。阻止   这些问题之后,每个已记录记录的大小现在都存储在   Btree BIN(内部内部节点),因此可以利用   在记录更新和删除期间正确计算,但仍然   避免获取旧版本的记录。有了这个改变,   日志清理器中的利用率调整工具   试图通过估计利用率来补偿此问题,   大多数应用程序不再需要。

     

因此,EnvironmentConfig.CLEANER_ADJUST_UTILIZATION参数   现在默认为false而不是true,并且将被禁用   完全在JE的未来版本中。有关更多信息,请参见   此参数的javadoc。

     

[#22275](6.0.7)