0

我注意到我的 cassandra 集群上打开的文件数量有所增加,并去检查它的运行状况。Nodetool 状态报告每个已分配 3TB 的每个节点仅使用 300gb。

在我开始看到 cassandra 日志中出现 HEAP OOM 错误后不久。

这些节点已经运行了 3-4 个月没有问题,但是填充了一系列测试数据,然后从它们中删除。

通过df命令检查硬盘驱动器后,我能够确定它们在 jboded 场景中的填充率都在 90-100% 之间。

编辑:进一步调查显示其余文件位于“快照”子文件夹中,并且数据子文件夹本身没有数据库表。

我的问题是,有人看过这个吗?为什么压实没有释放这些墓碑?这是一个错误吗?

4

3 回答 3

0

还要检查您是否可能对snapshot_before_compaction有非默认 true

于 2016-11-17T16:26:44.750 回答
0

快照会在 cassandra 集群的整个生命周期内发生。这些快照没有被捕获,nodetool status但仍然占用空间。在这种情况下,消耗所有空间的快照是在删除表时创建的。

要检索当前快照列表,请使用命令nodetool listsnapshots

可以通过编辑/etc/cassandra/cassandra-env.sh和设置auto_snapshot为 false 来禁用此功能。或者,可以通过命令清除这些快照nodetool clearsnapshot <name>

于 2016-11-17T19:33:26.293 回答
0

快照不是墓碑——它们是您数据的备份。

正如 Highstead 所说,您可以通过 clearsnapshot 命令删除任何未使用的快照。

您可以通过 cassandra.yaml 禁用自动快照功能

https://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html#reference_ds_qfg_n1r_1k__auto_snapshot

于 2016-11-17T13:57:07.350 回答