0

我正在使用 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 messages dropped”。

此问题是否记录在案?CL != ALL 是否应该被认为对写入有害?

4

1 回答 1

0

我不太确定你的意思是什么。事情似乎按设计工作。

是的,如果您在 CL.ONE 写入,它将比在 CL.ALL 更快地完成写入 - 因为它只需要从一个节点获取 ACK - 而不是所有节点。

但是,您没有测量修复数据所需的时间。您将花时间排队和处理提示的切换 - 但是,节点只能等待一个小时。

最终,您必须运行 anodetool repair来纠正一致性并删除墓碑。

于 2013-03-04T22:59:23.843 回答