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

时间:2018-09-10 06:10:27

标签: python cassandra cassandra-driver

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

在此键空间中,我们大约有230个表。每个表大约有40列。我们对这些表的写操作大约每天仅在五分钟内进行3万次写操作。我大约有6个python工作脚本,一次可以对任何一张表进行写操作,直到当天所有230张表都被写完为止,他们都会继续进行这些写操作。脚本通过简单的会话使用python cassandra-driver进行这些写操作。就此处写入的数据而言,其中很多是nulls

实际上,如果我是对的,那么可以认为这是每天6分钟内进行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的性能吗?

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

我觉得我们的集群不健康,应该针对我的工作进行修复。如果是这样,我不确定从哪里开始。有人能指出我正确的方向吗?

如果我可以提供进一步的信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

插入空值将创建墓碑。从查询中排除空列将不会创建逻辑删除。您可以在here上读到一点。我不确定插入null是否会导致这种情况,但是考虑到插入null(这会创建逻辑删除)绝对是一种改进。