【问题标题】:Apache Ignite 2.7.5 delete cache and free up memoryApache Ignite 2.7.5 删除缓存并释放内存
【发布时间】:2021-07-14 06:26:30
【问题描述】:

我们使用 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 实例回收的磁盘空间永远无法作为集群一起启动。 ignite 日志中没有具体的错误,但是做了一个:

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

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

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

【问题讨论】:

    标签: java caching ignite gridgain


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      相关资源
      最近更新 更多