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

Apache Ignite 2.7.5 delete cache and free up memory

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

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

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

我尝试了以下方法:

  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 来删除缓存。这样做之后,磁盘 space 被 ignite 实例回收,永远无法作为一个集群一起启动。点燃日志中没有具体错误,但执行了:

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

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

有没有更好的方法来实现这个?

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