2

目前我正在调试 Apache Cassandra 的性能问题。当列族的 Memtable 被填满时,它会排队等待刷新到 SSTable。当您执行大量写入时,经常会发生这种刷新。当此队列被填满时,写入将被阻止,直到下一次成功完成刷新。这表明您的节点无法处理它正在接收的写入。

nodetool 中是否有一个矩阵表明这种行为?换句话说,我想要一个表明节点无法跟上它正在接收的写入的数据。

谢谢!!

4

3 回答 3

4

几年来这不是真的。活动的 memtable 被切换,一个新的 memtable 处于活动状态。新的突变发生在这个实时内存表上,而“要刷新”的内存表包含在本地读取中。MemtableFlushWriter 线程池在其上排队了刷新任务。因此,您可以看到有多少待处理(在 tpstats 下)。您还可以在 MutationStage 下看到备份的突变。

最终

nodetool tpstats

很可能是您要寻找的东西。

于 2016-01-13T21:09:15.843 回答
3

我想要一个表明节点无法跟上它正在接收的写入的数据。

您的问题可能与磁盘 I/O 无法处理吞吐量有关 --> 内存表刷新排队 --> 写入被阻止

命令dstat是您调查 I/O 问题的朋友。其他一些 linux 命令可能也很方便。阅读 Amy Tobey 的这篇出色的博文:https ://tobert.github.io/pages/als-cassandra-21-tuning-guide.html

nodetool 中是否有一个矩阵表明这种行为?

节点工具 tpstats

于 2016-01-13T20:57:29.087 回答
2

我相信您正在寻找 tp(线程池)统计信息。

nodetool tpstats

通常阻塞的 FlushWriters 表明您的存储系统无法跟上写入工作负载。您是否偶然使用旋转磁盘?在这种情况下,您还需要密切关注 iostat。

这是 tpstats 的文档:https ://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsTPstats.html

于 2016-01-13T20:54:23.937 回答