目前我正在调试Apache Cassandra的性能问题。当填充列系列的Memtable时,它将排队等待刷新到SSTable。当您执行大量写入时,通常会发生此刷新。 当此队列填满时,写入将被阻止,直到下一次成功完成刷新。这表示您的节点无法处理它正在接收的写入。
nodetool中是否有表示此行为的矩阵?换句话说,我想要一个数据,表明节点无法跟上它正在接收的写入。
谢谢!
答案 0 :(得分:4)
多年来这不是真的。活动的memtable被切换,新的memtable将其作为实时位置。在这个现场记忆中发生了新的突变,同时要刷新" memtables包含在本地读取中。 MemtableFlushWriter线程池具有排队的刷新任务。所以你可以看到有多少待处(在tpstats下)。备份你的突变也可以在MutationStage下看到。
最终
nodetool tpstats
很可能是你想要的。
答案 1 :(得分:3)
我想要一个数据,表明节点无法跟上它正在接收的写入。
您的问题可能与磁盘I / O无法处理吞吐量有关 - > memtables的刷新排队 - >写入被阻止
命令 dstat 是您调查I / O问题的朋友。其他一些linux命令也可能很方便。阅读Amy Tobey撰写的这篇优秀博客文章:https://tobert.github.io/pages/als-cassandra-21-tuning-guide.html
nodetool中是否有表示此行为的矩阵?
nodetool tpstats
答案 2 :(得分:2)
我相信您正在寻找tp(线程池)统计信息。
nodetool tpstats
通常,阻止的FlushWriters表示您的存储系统无法跟上写入工作负载。您是偶然使用旋转磁盘吗?在这种情况下,您还要关注iostat。
这里是tpstats的文档:https://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsTPstats.html