cassandra - Cassandra 集群中的突然负载峰值
问题描述
我们最近开始遇到 Cassandra 集群的问题。也许有人对如何解决这个问题有想法。我们在 40 个节点的集群上运行 Cassandra 3.11.7。我们使用复制因子 = 3 并在一致性级别 QUORUM 上读/写。
最近,单个节点经历了 CPU 负载的突然峰值,然后持续了一段时间。在此期间,我们可以观察到许多丢弃和排队的 MUTATION。如果我们在有问题的节点上重新启动 Cassandra,那么一两个其他节点就会开始遇到同样的问题。我们检查了日志文件和访问模式,但还没有找到原因。
这种行为的最常见原因可能是什么?我们应该在哪里仔细观察?有没有人有过类似的经历?
解决方案
如果我们在有问题的节点上重新启动 Cassandra,那么一两个其他节点就会开始遇到同样的问题。
首先,当单个节点出现问题时,重新启动它通常没有任何效果。如果有的话,您将清除 JVM 堆...在启动时将很快重新填充。说真的,不要指望重新启动节点来修复任何问题。
有没有人有过类似的经历?
是的,好几次。对于与 Cassandra 无关的事情:
- 您在云环境中吗?运行
iostat
并寻找诸如高百分比iowait
和steal
. 有时共享资源不能很好地与其他人一起使用。如果没有iostat
,请获取 (yum install -y sysstat
)。 - 检查所有用户的 cron。我们曾经有一个文件完整性检查器作为我们的基本映像的一部分安装的问题,它完全符合您的要求。
这种行为的最常见原因可能是什么?我们应该在哪里仔细观察?
对于 Cassandra 相关的问题,我看到了一些可能性:
- 维修。检查节点是否正在运行修复。您可以查看 Merkle Tree 计算
nodetool compactionstats
并使用 修复流nodetool netstats
。 - 压实。检查
nodetool compactionstats
。如果是这样,您可以尝试降低压缩吞吐量,以免影响正常操作。 - 垃圾收集。检查
gc.log.*
文件。如果是 GC,通常可以通过阅读和调整 GC 设置来修复它。如果您的团队中没有任何人是 JVM GC 专家,我建议使用 G1GC,因为它消除了很多猜测。
请注意,我上面提到的所有内容都无法通过重新启动来修复。事实上,它很可能会从上次中断的地方重新开始。
推荐阅读
- r - 使用 R 中的绘图函数,我希望将带有标签的数据点展开而不是索引,因为我只有 y 值
- c# - 如何在没有无头浏览器的情况下在服务器端创建 Google 图表?
- javascript - 将表单名称发送到 JS/jQuery 和序列化
- python - Python:从一个 txt 文件中解析多个 JSON 对象
- c++ - 指针作为类变量 Qt
- c# - 将值从“select asp-for”传递到“textarea”asp.net core razor
- dc.js - 今天如何在折线图上添加垂直线?
- meteor - MeteorJS - 不能使用 npm 包作为 Picker 路由器的中间件
- r - 为什么我不能在 R 中的线性模型中预测新的观察结果
- arrays - 在树枝中的数组中循环遍历数组