我和卡桑德拉一起运行了一系列的基准。除其他外,我尝试了以下配置:1个客户端节点,3个服务器节点(相同的环)。所有实验都是在清理服务器之后运行的:
pkill -9 java; sleep 2; rm -r /var/lib/cassandra/*; ./apache-cassandra-1.2.2/bin/cassandra -f然后我从客户端节点运行cassandra-stress (3个副本,一致性任意/全部):
[stop/clean/start servers]
./tools/bin/cassandra-stress -o INSERT -d server1,server2,server3 -l 3 -e ANY
[224 seconds]
[stop/clean/start servers]
./tools/bin/cassandra-stress -o INSERT -d server1,server2,server3 -l 3 -e ALL
[368 seconds]可以推断,降低一致性级别会提高性能。然而,没有理由要这样做。瓶颈是服务器上的CPU,它们都必须,最终要做一个本地写。事实上,仔细阅读服务器日志就会发现,已经发生了暗示性的切换。重复这个实验,我有时会在客户机上得到UnavailableException,在服务器上得到“丢弃的突变消息”。
这个问题记录在案了吗?写起来应该被认为是有害的吗?
发布于 2013-03-04 22:59:23
我不太清楚你的意思是什么。事情似乎是按设计进行的。
是的,如果您在CL.ONE上写作,它将比在CL.ALL上更快地完成写入-因为它只需要从一个节点获得一个ACK -而不是所有这些节点。
然而,您并没有测量修复数据所需的时间。您将花费时间排队和处理暗示的切换-然而,节点只停留了一个小时。
最终,您将不得不运行一个nodetool repair来更正一致性并删除墓碑。
https://stackoverflow.com/questions/15206904
复制相似问题