cassandra - 如何确定 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)
解决方案
“nodetool drain”只是将节点中的所有内存表刷新到磁盘上的 SSTables。Cassandra 停止侦听来自客户端和其他节点的连接。一旦您触发了 drain 命令,如果您从“nodetool status”检查,节点将显示来自其他节点的 DN 状态,也不会发生八卦。运行 nodetool drain 后需要重启 Cassandra。
对于 Commitlog,您需要检查 cassandra.yaml 中的第一个提交日志路径,然后才能检查。
推荐阅读
- javascript - Threejs ,导入的 .objs 被拉伸,它们没有保存它们的实际大小
- c# - 将 Mat 数组从 EmguCV 传递到 OpenCV?
- javascript - 突出显示画布元素中的特定像素
- css - 无法获得 CSS 高度以传播到 Bootstrap 行
- php - 比较 XAMPP 和 php -S localhost:8000,它们看起来很不一样
- apache - 无法从本地网络外部访问 Apache
- docker - 如何将我的测试结果从 docker 容器导出到主机上的目录
- json - Postgresql 合并/聚合 json 列并返回 json 对象作为输出
- c++ - 如何打印大于“unsigned long long”的“std::bitset”的十进制值?
- java - 使用参数化测试返回方法应该没有参数