1

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

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

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

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

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

Cassandra 集群中不同数量的虚拟机观察到的吞吐量: cassandra 集群中不同数量的虚拟机观察到的吞吐量

4

2 回答 2

4

很可能会遇到磁盘 IO 瓶颈。尤其是对于非 ssd 驱动器,这是完全可以预料的。除非每个 vm 都有专用的磁盘/cpu,否则资源竞争将导致这样的争用。此外,每个 vm 2gb 不足以使用 Cassandra 进行任何类型的性能基准测试,因为推荐的最小 JVM 堆大小为 8gb。

于 2016-01-24T00:51:53.417 回答
3

Cassandra 擅长水平扩展(几乎是线性的),但这并不意味着简单地将虚拟机添加到一个物理主机就可以提高吞吐量——物理主机上的单个虚拟机对资源(磁盘、cpu、内存、网络)的争用会减少) 比 4,所以很可能一台 VM 的性能会好于 4。

根据定义,如果您正在增加资源,您应该会看到它的性能更好 - 但您不是,您只是在增加对现有资源的争用。如果你想扩展 cassandra,你需要使用额外的物理资源来测试它——更多的物理机器,而不是同一台机器上的更多 VM。

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

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

于 2016-01-24T20:10:03.300 回答