当前位置: 首页 > 知识库问答 >
问题:

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

郎献
2023-03-14

我用Infinispan(8.2.4 Final)设置了一个集群缓存存储,使用SoftIndexFileStore进行持久化。

文档中指出,如果条目过期,压缩程序将无法清理清除的条目,磁盘使用量将随着时间的推移而增加。从用户指南:

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

我的大多数条目都会过期,但有一些需要无限期保留,这意味着我不能简单地每隔一段时间运行一次清理作业来删除所有数据文件。

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

共有1个答案

牧甫
2023-03-14

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

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

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

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

 类似资料:
  • 问题内容: 人们如何处理Docker容器的持久性存储? 我当前正在使用这种方法:构建映像(例如针对PostgreSQL),然后使用以下命令启动容器 恕我直言,这有一个缺点,我绝对不能(偶然)删除容器“ c0dbc34fd631”。 另一个想法是将主机卷“-v”安装到容器中,但是, 用户ID 的容器内不一定匹配 用户ID 从主机,然后权限可能会混乱。 注意:例如,您可以使用where 是分配给仅数据

  • 和RDD相似,DStreams也允许开发者持久化流数据到内存中。在DStream上使用persist()方法可以自动地持久化DStream中的RDD到内存中。如果DStream中的数据需要计算多次,这是非常有用的。像reduceByWindow和reduceByKeyAndWindow这种窗口操作、updateStateByKey这种基于状态的操作,持久化是默认的,不需要开发者调用persist(

  • 我使用JPA(Eclipse Link 2.5)进行持久性。我的Web应用程序包含AJAX页面更新。保存帖子时,发布的内容会在不刷新浏览器的情况下显示。该帖子具有使用OneTo多关系与之关联的标签。这些标签应该在保存后也会显示出来。但是,由于启用了缓存,我无法获取标签。 这是我的代码: 我怎样才能让事情运转起来?如何刷新一个实体及其所有关联的实体?谢了。

  • 我有大约6个设置文件(xml或json ),我想存储在Azure中,但在我的Windows客户端应用程序中使用。我计划将它们存储在blob存储中,并使用以下代码下载它们: 设置文件不会经常更改。如何在本地缓存文件,以避免每次下载? 有更好的方法吗?我应该使用的其他Azure服务?

  • 最近我发现了一个像Apache Mesos这样的东西。 在所有演示和示例中,这一切看起来都令人惊讶。我可以很容易地想象一个人将如何竞选无状态的工作--这自然符合整个想法。 3-请告诉我的方法在哲学方面是否是错误的(数据服务器的DFS和Mesos顶部的postgres之类的服务器的某种切换) 问题主要是从Apache Mesos的持久存储中复制的,由程序员堆栈交换上的zerkms提出。

  • 本平台是通过storageclass来动态创建PV。也就是说咱们依赖于storageclass,如果您的Kubernetes不支持相应的存储试,将无法非常方便的进行挂载。 目前暂不支持挂载多个PVC,或许以后会更新吧。 这里演示的是用的NFS进行演示,实际使用时可根据自己的需求配置相应的provisioner,其他配置是一样的不需要调整,只需要在“模版管理” 调整StorageClass和Pers