代码之家  ›  专栏  ›  技术社区  ›  bitwalker

如何处理Infinispan持久缓存存储中SoftIndexFileStore的旧文件?

  •  2
  • bitwalker  · 技术社区  · 8 年前

    文档中指出,如果条目过期,则压缩程序不可能清除清除的条目,并且磁盘使用量将随时间增长。从用户指南:

    当条目存储到期时,SIFS无法检测到 这些条目中的所有都已过期。因此,这样的旧文件将不会 压缩(方法AdvancedStore.purgeExpired()未实现)。 这可能导致过多的文件系统空间使用。

    我的大多数条目都会过期,但有些条目需要无限期地保存,这意味着我不能只是偶尔运行一次清理作业来删除所有数据文件。

    如何处理这种浪费的磁盘使用?运行几周后,我看到许多文件在几周内没有修改。删除未修改的旧文件(例如,不到一个月前)是否安全?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Radim Vansa    8 年前

    不旧文件永远不会再被修改(它们被写入一次,然后被认为是不可变的,直到被删除)。手动删除这些文件可能会导致失败,因为这些文件在索引中被引用。

    遗憾的是,当迭代存储并且发现条目过期时 Compactor.free() 因为可能会有多个并发迭代,我们可能会为单个条目多次调用它。

    一个合适的解决方案是实现一个周期性(或JMX触发的)进程,该进程遍历旧文件,计算过期条目占用的空间,并调度超过某个压缩阈值的文件。这应该包括 Compactor .请看 SIFS javadoc 一般设计说明。

    如果您对开发此功能感兴趣,并想进一步讨论,请访问 Infinispan forum .