首页 > 解决方案 > 如何确定 Cassandra 节点是否已耗尽?

问题描述

我想知道 Cassandra 节点是否正在运行(我知道如何做这部分,我可以检查一个java进程是否正在运行,这是该服务器上唯一使用的进程java)以及在不运行时,是否节点在停止之前已正确排空。

所以问题是:如何确定是否nodetool drain针对当前停止的节点运行?

这可能与应该为空的提交日志有关,但我不太确定如何检查。我正在寻找一种在控制台中这样做的方法。


更新:

根据 Pandey 的回答,我的提交日志文件如下所示:

首先是提交日志在/etc/cassandra/cassandra.yaml文件中的位置:

commitlog_directory: /var/lib/cassandra/commitlog

以及该文件夹的内容:

alexis@cass1:~$ ls -l /var/lib/cassandra/commitlog
total 65536
-rw-r--r-- 1 cassandra cassandra 33554432 Feb 22 17:15 CommitLog-6-1550882527529.log
-rw-r--r-- 1 cassandra cassandra 33554432 Feb 22 17:15 CommitLog-6-1550882527530.log

(1024 × 1024 × 32 = 33554432 — 正好是 32Mb)

标签: cassandranodetool

解决方案


“nodetool drain”只是将节点中的所有内存表刷新到磁盘上的 SSTables。Cassandra 停止侦听来自客户端和其他节点的连接。一旦您触发了 drain 命令,如果您从“nodetool status”检查,节点将显示来自其他节点的 DN 状态,也不会发生八卦。运行 nodetool drain 后需要重启 Cassandra。

对于 Commitlog,您需要检查 cassandra.yaml 中的第一个提交日志路径,然后才能检查。


推荐阅读