cassandra节点没有响应,“Native-Transport-Requests”仅在2个节点上很高

时间:2018-06-04 20:54:26

标签: apache cassandra

我们最近在我们的生产中部署了微服务,这些微服务与Cassandra节点进行通信以进行读/写。

部署之后,我们开始注意到主DC中所有cassandra节点上的CPU突然下降到0。这种情况每天至少发生一次。当每次发生这种情况时,我们看到随机的2个节点(在SAME DC中)彼此无法访问(“nodetool describecluster”),当我们检查“nodetool tpstats”时,这2个节点的ACTIVE Native-Transport数量更多 - 请求b / w 100-200。这两个节点也相互存储HINTS,但是当我更长时间“ping”它们时,我看不到任何数据包丢失。当我们重新启动那两个cassandra节点时,问题将在那一刻得到修复。这种情况发生在2周以后。

我们使用Apache Cassandra 2.2.8。

此外,微服务日志在所有cassandra节点上的CPU突然下降之前都有读/写超时。

2 个答案:

答案 0 :(得分:0)

您可能在客户端上使用令牌感知负载平衡策略,并且大量更新单个分区或范围。在这种情况下,所有协调负载将集中在单个副本集上。可以更改您的应用程序以使用RoundRobin(或DC感知循环)LoadBalancingPolicy,它可能会解决。如果确实如此,您的应用程序中有一个热点,您可能希望关注您的数据模型。

答案 1 :(得分:0)

它看起来像一个数据模型问题(热分区导致特定副本中出现问题)。

但无论如何,您可能希望将以下内容添加到cassandra-env.sh以查看是否有帮助:

JVM_OPTS="$JVM_OPTS -Dcassandra.max_queued_native_transport_requests=1024"

有关此内容的详情,请访问:https://issues.apache.org/jira/browse/CASSANDRA-11363