我正在使用 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 是否应该被认为对写入有害?