设置:1
3 节点 cassandra 集群。每个节点位于具有4 核32 GB RAM、800GB SSD (DISK)、1Gbit/s = 125 MBytes/sec 网络带宽的不同机器上
2 台 cassandra-stress 客户端机器,其配置与上述完全相同。
实验 1:在一台机器上运行一个客户端,创建 1 到 1000 个线程,并且具有 Quorum 的一致性级别,cassandra 节点上的最大网络吞吐量约为 8MBytes/sec,cassandra 节点和客户
实验 2:在两台不同的机器上运行两个客户端,创建 1 到 1000 个线程,具有 Quorum 的一致性级别,cassandra 节点上的最大网络吞吐量约为 12MBytes/sec,cassandra 节点和客户端的 CPU 使用率为 90%
即使我的客户端在两台不同的机器上运行,也没有看到双倍的吞吐量,但我可以理解 cassandra 节点受 CPU 限制,这可能就是原因。这样我就可以进入 setup2
设置 2
3 节点 cassandra 集群。每个节点位于具有8 个内核32 GB RAM、800GB SSD (DISK)、1Gbit/s = 125 MBytes/sec 网络带宽的不同机器上
2 台 cassandra-stress 客户端机器,4 核 32 GB RAM,800GB SSD (DISK),1Gbit/s = 125 MBytes/sec 网络带宽
实验 3:在一台机器上运行一个客户端,创建 1 到 1000 个线程,并且具有 Quorum 的一致性级别,cassandra 节点上的最大网络吞吐量约为 18MBytes/sec,而 cassandra 节点上的 CPU 使用率为 65-70%,并且 > 90% 在客户端节点上。
实验 4:在两台不同的机器上运行两个客户端,创建 1 到 1000 个线程,并且具有 Quorum 的一致性级别,cassandra 节点上的最大网络吞吐量约为 22MBytes/sec,而 cassandra 节点上的 CPU 使用率 <=75%,并且在两个客户端节点上 >90%。
所以这里的问题是,一个客户端节点我能够推送 18MB/秒(网络吞吐量),而两个客户端节点运行两台不同的机器,我只能以 22MB/秒(网络吞吐量)的峰值推送?我想知道为什么会出现这种情况,即使这次 cassandra 节点上的 cpu 使用率在 8 核机器上约为 65-70%。
注意:我停止了 cassandra,并在两台不同的 ec2 机器上运行了一个名为 iperf3 的工具,我能够看到 118 MBytes/秒的网络带宽。我将所有内容都转换为字节而不是位,以避免任何形式的混淆。