Cassandra加载状态不更新(nodetool状态)

时间:2016-08-09 14:53:49

标签: cassandra

使用nodetool status我可以读出每个节点的Load。在表中添加或删除数据应该对该值产生直接影响。但是,无论nodetool status命令执行多少次,值都保持不变。

Cassandra documentation声明Load值需要90秒才能更新。即使在运行命令之间允许几分钟,结果总是错误的。我能够更新此值的唯一方法是重新启动节点。

我不相信它是相关的,但我应该补充说我正在使用docker containers来创建群集。

1 个答案:

答案 0 :(得分:6)

在您关联的documentation中,在Load下,它也会显示

  

因为包含了所有SSTable数据文件,所以不包含任何数据   清理,例如TTL过期的单元格或逻辑删除的数据被计算在内。

值得注意的是,当Cassandra deletes数据时,数据会用墓碑标记,并且在压缩之前不会被删除。因此,负载不会立即减少。您可force a major compaction使用nodetool compact

如果要添加数据,您还可以尝试刷新memtable。

的Apache notes
  

Cassandra写入首先写入CommitLog,然后写入   per-ColumnFamily结构称为Memtable。当Memtable已满时,   它作为SSTable写入磁盘。

因此,您需要在memtable满了之前添加更多数据,或者您可以运行nodetool flush(记录为here)来强制它。