我们最近开始在我们的Cassandra集群中遇到问题。也许有人对如何解决此问题有想法。我们在40个节点的集群上运行Cassandra 3.11.7。我们正在使用复制因子= 3,并且在一致性级别QUORUM上进行读/写。
最近,单个节点的CPU负载突然增加,然后持续了一段时间。在此期间,我们可以观察到许多丢弃和排队的MUTATION。如果我们在有问题的节点上重新启动Cassandra,则一个或两个其他节点将开始遇到相同的问题。我们已经检查了日志文件和访问模式,但尚未找到原因。
这种行为的最常见原因是什么?我们应该在哪里仔细看?有没有人有类似的经历?
答案 0 :(得分:1)
如果我们在有问题的节点上重新启动Cassandra,其他一个或两个节点就会开始遇到相同的问题。
首先,当单个节点出现问题时,重新启动它通常不会有任何效果。如果有的话,您将清除JVM堆...它将在启动时快速重新填充。认真地说,不要指望重新启动节点来解决任何问题。
有人有类似的经历吗?
是的,几次。对于与Cassandra不相关的事情:
iostat
并查找诸如iowait
和steal
的高百分比之类的东西。有时,共享资源与他人的表现不佳。如果您没有iostat
,请获取(yum install -y sysstat
)。这种行为的最常见原因是什么?我们应该在哪里仔细看?
对于与Cassandra相关的问题,我看到了几种可能性:
nodetool compactionstats
查看Merkle Tree计算并使用nodetool netstats
修复流。nodetool compactionstats
。如果是这样,您可以尝试降低压缩吞吐量,以免影响正常操作。gc.log.*
文件。如果是GC,通常可以通过阅读并调整GC设置来修复它。如果您的团队中没有谁是JVM GC专家,我建议您使用G1GC,因为它可以消除很多猜测。请注意,我上面提到的所有内容都永远不会通过重启进行修复。实际上,很可能会从上次停止的地方继续备份。