我们有一个带有复制因子3的五节点Cassandra集群。我们的应用程序中遇到了大量的读取超时。当我们检查每个Cassandra节点上的tpstats时,我们看到三个节点有很多读取请求丢弃和高CPU利用率,而在另外两个节点上读取请求丢弃为零且CPU利用率适中。请注意,所有服务器上的读取请求总数几乎相同。
在进行线程转储之后,我们发现CPU利用率高的原因是,与其他两个节点相比,并行GC在三个节点上运行很多,这导致CPU利用率很高。我们无法理解的是,当我们的分区键和查询的分布几乎是一致的时,GC应该在三个节点上运行更多而在两个节点上运行更少。
Cassandra版本是2.2.3。