我正在与Cassandra一起运行一系列基准测试。其中,我尝试了以下配置:1个客户端节点,3个服务器节点(相同的环)。清理完服务器后运行所有实验:
pkill -9 java; sleep 2; rm -r /var/lib/cassandra/*; ./apache-cassandra-1.2.2/bin/cassandra -f
然后我从客户端节点运行cassandra-stress
( 3副本,一致性ANY / ALL):
[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,并且" MUTATION消息被丢弃"在服务器上。
是否记录了此问题? CL!= ALL应该被认为对写入有害吗?
答案 0 :(得分:0)
我不太清楚你的观点是什么。事情似乎按设计工作。
是的,如果你在CL.ONE上写,它将在CL.ALL上更快地完成写入 - 因为它只需要从一个节点获得ACK - 而不是所有节点。
但是,您没有测量修复数据所需的时间。您将花时间排队并处理提示的切换 - 但是,节点只能保持一小时。
最终,您必须运行nodetool repair
来更正一致性并删除逻辑删除。