2013-04-08 213 views
1

我做了一些测试,它看起来像zookeeper不清理最后的 500个已删除的节点。Zookeeper不清理已删除的节点

在我的测试中,我创建了节点并删除了创建后的每个节点。 I 重复此步骤1000次,然后触发完整的gc。这些都是 结果

Creating 1000 Nodes and deleting 1000 Nodes and each node has... 
...1000kb data = 529MB heap used after FullGC 
...500kb data = 281MB heap used after FullGC 
...256kb data = 140MB heap used after FullGC 
...128kb data = 68MB heap used after FullGC 

如果我创建1000个节点,每个1000KB的数据,然后用128KB数据删除 节点,之后创建1000个节点,并再次删除 节点,68MB堆空间被使用。

因此,看起来Zookeeper缓存/不清理最后500个删除的节点。

这是一个错误还是有配置参数来改变这种行为?

回答

0

ZKDatabase.committedLog保留过去的500个事务。所以这就是行为的原因。此设置不可配置,但有一个open issue