微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apache Ignite 2.7.5 删除缓存并释放内存

如何解决Apache Ignite 2.7.5 删除缓存并释放内存

我们将 Apache Ignite(版本 2.7.5)用作启用了 ignite 持久性的 2 节点分区集群。

这 2 个 ignite 实例中的每一个都有一个缓存(例如,名为 XYZ),每个实例占用约 250 GB 的空间。该表有 1.5 亿条记录。

今后我们不再需要这个缓存,我想删除这个缓存并回收每个实例中的空间(磁盘空间以及堆外内存)。

我尝试了以下方法

  1. 尝试编写 API 以从缓存中删除所有数据并将其销毁。

    @DeleteMapping(path = "/delete-cache")
     public String deleteCache() {
         try {
             IgniteCache<XYZId,XYZ> cache = ignite.cache("XYZCache");
             cache.removeAll();
             cache.destroy();
         } catch (Exception e) {
    
             LOG.error("Exception while destroying cache: ",e);
    
             return "Fail";
         }
         return "Success";
     }
    

    但在点击此 API 时,Ignite 挂起,我的服务与 Ignite 失去连接。

  2. 尝试通过进入 ignite 实例并执行 rm cache-XYZ删除缓存。执行此操作后,由 ignite 实例回收的磁盘空间永远无法作为一个集群一起启动。点燃日志中没有特定错误,但执行以下操作:

./control.sh --baseline 没有给出任何结果,终端挂了。

目前,有一个 API 可以根据记录的 id 逐个删除对象,但以当前速度删除 1.5 亿个条目需要 8 周时间。

有没有更好的方法来实现这一目标?

解决方法

您可以只运行 cache.destroy();(无需删除每个条目) 它将破坏缓存并回收磁盘上的空间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?