最近我们的cassandra集群出现了问题。也许有人有办法解决这个问题。我们在一个40节点的集群上运行cassandra3.11.7。我们使用的是复制因子=3和一致性级别的读/写仲裁。
最近,单个节点的cpu负载突然激增,并持续了一段时间。在这期间,我们可以观察到许多丢弃的和排队的突变。如果我们在有问题的节点上重新启动cassandra,那么一个或两个其他节点也会遇到同样的问题。我们已经检查了日志文件和访问模式,还没有找到原因。
这种行为最常见的原因是什么?我们应该在哪里仔细看看?有没有人有过类似的经历?
1条答案
按热度按时间dy2hfwbg1#
如果我们在有问题的节点上重新启动cassandra,那么一个或两个其他节点也会遇到同样的问题。
首先,当单个节点出现问题时,重启它通常不会产生任何效果。如果有任何问题,您将清除jvm堆…它将在启动时快速重新填充。说真的,不要指望重启节点就能解决任何问题。
有没有人有过类似的经历?
是的,好几次。对于与Cassandra无关的事情:
您是否处于云环境中?跑
iostat
寻找高比例的iowait
以及steal
. 有时共享资源不能很好地与其他人协作。如果你没有iostat
,明白了吗(yum install -y sysstat
).检查所有用户的cron。我们曾经遇到一个问题,文件完整性检查器作为我们的基础映像的一部分安装,它正是你所说的。
这种行为最常见的原因是什么?我们应该在哪里仔细看看?
对于与Cassandra有关的问题,我看到了一些可能性:
修理。检查节点是否正在运行修复。你可以看到merkle树的计算
nodetool compactionstats
并用nodetool netstats
.压实。检查
nodetool compactionstats
. 如果是这样,您可以尝试降低压缩吞吐量,这样就不会影响正常操作。垃圾收集。检查
gc.log.*
文件夹。如果是gc,通常可以通过读取和调整gc设置来修复。如果您的团队中没有人是jvmgcMaven,我建议使用g1gc,因为它消除了很多猜测。请注意,我上面提到的一切都无法通过重新启动来修复。事实上,它很可能会重新回到原来的状态。