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 以及堆外内存) .
我尝试了以下方法:
尝试编写 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
来删除缓存。这样做之后,磁盘 space 被 ignite 实例回收,永远无法作为一个集群一起启动。点燃日志中没有具体错误,但执行了:
./control.sh --baseline
没有给出任何结果,终端挂了。
目前,有一个API 可以根据记录的 id
一个一个地删除对象,但是以当前的速度删除 1.5 亿条条目需要 8 周的时间.
有没有更好的方法来实现这个?
您可以 运行 只是 cache.destroy();
(不删除每个条目)
它将破坏缓存并回收磁盘上的space。
我们使用 Apache Ignite(版本 2.7.5)作为启用了 ignite 持久性的 2 节点分区集群。
2 个 ignite 实例中的每一个都有一个缓存(例如,名为 XYZ),每个实例占用约 250 GB space。这个table有1.5亿条记录。
今后我们不再需要这个缓存,我想删除这个缓存并在每个实例中回收 space(磁盘 space 以及堆外内存) .
我尝试了以下方法:
尝试编写 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
来删除缓存。这样做之后,磁盘 space 被 ignite 实例回收,永远无法作为一个集群一起启动。点燃日志中没有具体错误,但执行了:
./control.sh --baseline
没有给出任何结果,终端挂了。
目前,有一个API 可以根据记录的 id
一个一个地删除对象,但是以当前的速度删除 1.5 亿条条目需要 8 周的时间.
有没有更好的方法来实现这个?
您可以 运行 只是 cache.destroy();
(不删除每个条目)
它将破坏缓存并回收磁盘上的space。