我正在使用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观察到的吞吐量:
答案 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通常是非理想的在生产中。
您正在尝试使用加油站级设备测试喷气发动机(为数百或数千个物理节点设计的分布式数据库) - 您的基准硬件对于真实的生产环境是不可行的,因此您的基准测试结果没有意义。