在一个六节点 Cassandra 集群 [复制因子 2] 上,我们注意到一个节点被热点 [heavy load]。查看 tpstats 时,我可以看到 Flush writer 和 Replicate on write stage 的任务一直被阻塞。
我们只有一个数据目录[因此将 cassandra 配置为仅使用一个 flushwriter] 并且 memtable flush 的队列大小为 2
Heavily Loaded Node
Replicate-on-write-stage 32 4128 599249 48 371304
Flush-writer 0 0 85 0 24
Normal Node:
ReplicateOnWriteStage 0 0 753665 0 0
FlushWriter 0 0 137 0 25
所有节点的配置完全相同,我们使用 Murmur Partitioner。
是否有其他一些统计数据可以参考,以跟踪 CPU 负载问题并在单个节点上阻塞的写入阶段进行复制?
tpstats 中的这些计数器是历史计数器还是每 N 分钟刷新一次?
从这里提到,块可能是因为 IO 不保留或巨大的行和排序[这增加了 cpu 负载]。后者可能是整个集群中一个节点异常负载的原因吗?