解决 Cassandra 协调器节点写入超时的方法

Approach to resolve Cassandra Coordinator node timeouts on writes

我有一个简单的单节点 Cassandra 集群,具有 replication_factor=1

的基本键空间配置

在这个键空间中,我们有大约 230 tables。每个 table 大约有 40 列。我们对这些 table 的写入速度大约是每天一次,五分钟内写入 30k。我有大约 6 个 python worker 脚本,它们一次可以将这些写入任何一个 table,它们将继续进行这些写入,直到当天写入所有 230 个 table。这些脚本使用 python cassandra-driver 和一个简单的会话来进行这些写入。至于这里写的数据,很多都是nulls.

实际上,如果我是对的,这可以被认为是 6 个并发连接每天 5 分钟内生成 30k+ 个条目。

我了解 cassandra 的写入和删除工作方式,并且熟悉协调器节点等。我正在观察间歇性发生的回溯,如下所述:

"cassandra/cluster.py", line 2030, in cassandra.cluster.Session.execute (cassandra/cluster.c:38536)
app_nstablebuilder.1.69j772led82k@swarm-worker-gg37    |   File "cassandra/cluster.py", line 3844, in cassandra.cluster.ResponseFuture.result (cassandra/cluster.c:80834)
app_nstablebuilder.1.69j772led82k@swarm-worker-gg37    | cassandra.WriteTimeout: Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'consistency': 'ONE', 'required_responses': 1, 'received_responses': 0}

我的问题与如何解决这个问题有关。我无法验证问题是出自我的工作人员的脚本还是出自 Cassandra 集群本身。我应该放慢我的工作人员进行写入的速度吗?我应该 运行 进行某种诊断来提高 Cassandra 的性能吗?

到目前为止我阅读的所有解决方案都与多节点集群有关,但我找不到用于单节点集群的解决方案。

我觉得我们的集群不健康,我的努力应该集中在修复那里。如果是这样,我不确定从哪里开始。谁能指出我正确的方向?

如果我可以提供任何进一步的信息来帮助您,请告诉我。

插入空值将创建墓碑。从查询中排除空列不会创建墓碑。您可以阅读一些有关此事的文章 here。我不确定插入空值是否会导致此问题,但插入空值(这会创建逻辑删除)绝对是一项需要考虑的改进。