增加VM数量会降低Cassandra吞吐量。可能是什么原因?

时间:2016-01-23 23:58:32

标签: cassandra cassandra-2.1 ycsb

我正在使用YCSB基准测试工具来对Cassandra集群进行基准测试。 我改变了集群中的虚拟机数量。 我正在使用1个物理主机,我正在使用1,2,3,4个虚拟机进行基准测试(如附图所示)。

生成的工作负载始终与Workload C 10,000,00操作相同,10,000条记录 每个VM都有2 GB RAM,20GB驱动器

Cassandra - 1个种子节点,endpoint_snitch - gossipproperty Keyspace YCSB - 复制因子3,

问题在于,当我增加群集中的虚拟机数量时,吞吐量会降低。可能是什么原因?

根据定义,通过增加计算资源(即虚拟机),群集应该提供更好的性能,但正好相反,如附图所示。请解释一下可能的原因是什么?我正在撰写关于这个主题的论文,但我无法弄清楚这个的原因,请帮忙,我将感激你。

Cassandra集群中不同数量的VM观察到的吞吐量: Throughput observed by varying number of VMs in cassandra cluster

2 个答案:

答案 0 :(得分:4)

很可能遇到磁盘IO瓶颈。特别是对于非ssd驱动器,这是完全可以预期的。除非你有每个vm的专用磁盘/ CPU,否则资源的竞争会引起这样的争用。另外2gb / vm不足以与Cassandra进行任何类型的性能基准测试,因为建议的最小JVM堆大小为8gb。

答案 1 :(得分:3)

Cassandra非常擅长横向扩展(几乎是线性扩展),但这并不意味着简单地将VM添加到一个物理主机将增加吞吐量 - 物理主机上的单个VM将减少对资源的争用(磁盘, cpu,内存,网络)超过4,因此可能一个VM的性能优于4。

根据定义,如果你 WERE 增加资源,你应该看到它的效果更好 - 但你不是,你只是简单地将争用添加到现有资源。如果要扩展cassandra,则需要使用其他物理资源对其进行测试 - 更多物理机器,而不是同一台机器上的VM。

最后,正如Chris Lohfink所提到的,你的虚拟机太小而无法进行有意义的测试 - 建议使用8GB的JVM堆,另外还有8GB的vm页面缓存来支持读取 - 运行Cassandra且RAM少于16G通常是非理想的在生产中。

您正在尝试使用加油站级设备测试喷气发动机(为数百或数千个物理节点设计的分布式数据库) - 您的基准硬件对于真实的生产环境是不可行的,因此您的基准测试结果没有意义。