0

我有一个简单的单节点 Cassandra 集群,它具有基本的键空间配置replication_factor=1

在这个键空间中,我们有大约 230 个表。每个表大约有 40 列。我们对这些表的写入速度大约是每天一次在五分钟内写入 30k 次。我有大约 6 个python工作脚本,它们一次对任何一张表进行这些写入,并且它们都将继续进行这些写入,直到当天所有 230 个表都被写入。脚本使用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 的性能吗?

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

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

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

4

1 回答 1

1

插入空值将创建墓碑。从查询中排除空列不会创建墓碑。你可以在这里阅读一些关于这件事的内容。我不确定插入空值是否会导致这种情况,但插入空值(会创建墓碑)绝对是一个需要考虑的改进。

于 2018-09-12T11:02:45.427 回答