apache ignite 2.7.5删除缓存并释放内存

vshtjzan  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(329)

我们使用ApacheIgnite(版本2.7.5)作为启用ignite持久性的2节点分区集群。
两个ignite示例中的每个示例都有一个缓存(例如,名为xyz),它在每个示例中占用了大约250GB的空间。这个表有1.5亿条记录。
向前看,我们不再需要这个缓存了,我想删除这个缓存并回收每个示例中的空间(磁盘空间以及堆外内存)。
我尝试了以下方法:
尝试编写一个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的连接。
尝试通过进入ignite示例并执行 rm cache-XYZ . 执行此操作后,ignite示例回收的磁盘空间永远无法作为一个集群一起启动。ignite日志中没有特定错误,但执行以下操作: ./control.sh --baseline 没有给出任何结果,终端被吊死。
目前,有一个api可以在给定的条件下逐个删除对象 id 但以目前的速度删除1.5亿个条目需要8周的时间。
有没有更好的方法来实现这一点?请帮忙

cfh9epnr

cfh9epnr1#

你可以直接跑 cache.destroy(); (不删除每个条目)它将销毁缓存并回收磁盘上的空间。

相关问题