Networking 我可以看出cassandra是CPU绑定的,用于写繁重的工作负载,但它也是网络绑定的吗?

Networking 我可以看出cassandra是CPU绑定的,用于写繁重的工作负载,但它也是网络绑定的吗?,networking,cassandra,cassandra-2.0,cassandra-2.1,Networking,Cassandra,Cassandra 2.0,Cassandra 2.1,设置:1 3节点cassandra集群。每个节点都位于不同的计算机上,具有4个内核32 GB RAM、800GB SSD(磁盘)、1Gbit/s=125 MBytes/sec网络带宽 2台cassandra stress客户端计算机,具有与上述相同的精确配置 实验1:在一台机器上运行一个客户端,创建1到1000个线程,具有仲裁的一致性级别,cassandra节点上的最大网络吞吐量约为8MB/s,cassandra节点和客户端上的CPU使用率均为85-90% 实验2:在两台不同的机器上运行两个客户

设置:1

3节点cassandra集群。每个节点都位于不同的计算机上,具有4个内核32 GB RAM、800GB SSD(磁盘)、1Gbit/s=125 MBytes/sec网络带宽

2台cassandra stress客户端计算机,具有与上述相同的精确配置

实验1:在一台机器上运行一个客户端,创建1到1000个线程,具有仲裁的一致性级别,cassandra节点上的最大网络吞吐量约为8MB/s,cassandra节点和客户端上的CPU使用率均为85-90%

实验2:在两台不同的机器上运行两个客户端,创建从一个到1000个线程的任意位置,具有仲裁的一致性级别,cassandra节点上的最大网络吞吐量约为12字节/秒,cassandra节点和客户端上的CPU使用率均为90%

虽然我的客户机运行在两台不同的机器上,但没有看到吞吐量翻倍,但我可以理解cassandra节点是CPU受限的,这可能就是原因。这就引出了设置2

设置2

3节点cassandra集群。每个节点都位于不同的计算机上,具有8个内核32 GB RAM、800GB SSD(磁盘)、1Gbit/s=125 MBytes/s的网络带宽

2台卡桑德拉压力客户端计算机,具有4核32 GB RAM、800GB SSD(磁盘)、1Gbit/s=125 MBytes/sec网络带宽

实验3:在一台机器上运行一个客户端,创建1到1000个线程,具有仲裁的一致性级别,cassandra节点上的最大网络吞吐量约为18MBytes/sec,cassandra节点上的CPU使用率为65-70%,客户端节点上的CPU使用率>90%

实验4:在两台不同的机器上运行两个客户端,创建1到1000个线程,具有仲裁的一致性级别,cassandra节点上的最大网络吞吐量约为22MBytes/sec,两个客户端节点上的CPU使用率均为90%

所以这里的问题是,对于一个客户端节点,我能够以18MB/秒的速度(网络吞吐量)推送,而对于两个运行两台不同机器的客户端节点,我只能以22MB/秒的峰值(网络吞吐量)推送??我想知道为什么会出现这种情况,尽管这次cassandra节点上的cpu使用率在8核机器上约为65-70%


注意:我停止了cassandra,在两台不同的ec2机器上运行了一个名为iperf3的工具,我能够看到每秒118 MB的网络带宽。我正在将所有内容转换为字节而不是位,以避免任何形式的混淆。

我明确表示,我确实使用iperf3测量了它。当然,我使用iperf3测量了一个实例的最大网络带宽,我报告的其他网络吞吐量数字是从“sudo iftop-B”中获得的想法:在测试过程中,运行一个dstat并查看“网络带宽”列,以检查是否可以将网络流量与CPU使用量关联起来。磁盘I/O也是如此,尽管我认为您不应该有问题,因为您使用的是SSD,但谁知道呢