首页 > 解决方案 > 使用 Apache Ignite 一些过期数据保留在内存中,启用 TTL 并在线程执行后

问题描述

问题

创建一个 ignite 客户端(在客户端模式下为 false)并将一些数据(10k 个条目/值)放入其中,到期时间非常短(~20 秒)并启用 TTL。每次线程运行时,它都会删除所有过期的条目,但是经过几次尝试后,这个线程并没有删除所有过期的条目,其中一些保留在内存中并且不会被这个线程执行删除。这意味着我们在内存中有一些过期的数据,这是我们想要避免的。

请您确认这是一个真正的问题还是只是滥用/配置我的设置?

感谢您的反馈意见。

测试

我尝试了三种不同的设置:MacOS 上的完全本地模式(嵌入式服务器),在 Docker 中使用一个节点的远程服务器,以及在 kubernetes 中使用 3 个节点的远程集群。

重现

Git 仓库:https ://github.com/panes/ignite-sample

运行 MyIgniteLoadRunnerTest.run() 以重现上面描述的问题。

(全局设置:写入 10k 个 64 字节的条目,每个条目的 TTL 为 10 秒)

标签: javaignite

解决方案


这似乎是一个已知问题。这是跟踪它的链接https://issues.apache.org/jira/browse/IGNITE-11438。它将被包含在Ignite 2.8发布中。据我所知,它已经作为GridGain Community Edition的一部分发布。


推荐阅读