当我使用cassandra集群时,为什么我的客户机CPU利用率这么高?

当我使用cassandra集群时,为什么我的客户机CPU利用率这么高?,cassandra,Cassandra,这是我的后续问题。我已将我的客户端和节点配置为尽可能接近此处建议的内容:。整个设置并不完全是世界级的(例如,客户端在一台配备32G RAM和现代处理器的笔记本电脑上)。在这一点上,我更感兴趣的是开发卡桑德拉基础设施的直觉 我注意到,如果我关闭集群中除一个节点外的所有节点,并对其运行测试客户机,则吞吐量约为120-140个insert/s,CPU利用率约为30-40%。当我启动所有6个节点并针对它们运行这台客户机时,我看到吞吐量约为110-120个insert/s,CPU利用率约为80-100%

这是我的后续问题。我已将我的客户端和节点配置为尽可能接近此处建议的内容:。整个设置并不完全是世界级的(例如,客户端在一台配备32G RAM和现代处理器的笔记本电脑上)。在这一点上,我更感兴趣的是开发卡桑德拉基础设施的直觉

我注意到,如果我关闭集群中除一个节点外的所有节点,并对其运行测试客户机,则吞吐量约为120-140个insert/s,CPU利用率约为30-40%。当我启动所有6个节点并针对它们运行这台客户机时,我看到吞吐量约为110-120个insert/s,CPU利用率约为80-100%

我所有的测试都是用一个干净的数据库运行的(我完全删除了所有的数据库文件并重新启动),我插入了3000万行

我的测试客户机是多线程的,每个线程都使用未标记的批处理专门写入一个分区,正如各种源为类似我的模式(例如)所推荐的那样


这是预期的CPU峰值行为吗?

当您启动已关闭一段时间的附加节点时,它可能会受到暗示切换的冲击。当一个节点关闭时,其他节点将累积提示(将数据存储在system.Hights表中),并在节点恢复时将其发送给该节点。这将创建额外的工作(cpu和其他),而该节点将进行备份。您的程序是否监视飞行中请求的数量?你的文章有多大?@phact:你的第一个观察是有意义的。听起来我不应该从头开始。我不知道如何监控飞行中的请求。我的批处理大小是8,在调用getUnterruptibly()让节点赶上我的客户端之前,我执行了其中的16个。我观察到8-10和10-16的execureAsync()集合之间的批处理产生的时间最快。这就是你要问的吗?谢谢。是的,这里有几个参考实现,你可以看一下——Ryan Svhila Brian Hess——当我“从头开始”时,做这个:sudo rm-fr/opt/cassandra/data/*/*/var/lib/cassandra/commitlog/*&&sudo/opt/cassandra/apache-cassandra-2.1.4/bin/cassandra-f。另外,我在没有从头开始的情况下又尝试了几次运行,单客户端的运行时间似乎有所改善,CPU利用率达到了约40-60%。谢谢你的洞察力。