为什么Cassandra Local Latency P999大于超时?

时间:2017-07-23 08:23:58

标签: cassandra

我们正在使用ColumnFamily.ReadLatency.999percentile来监控表的本地读取延迟。但是我们看到这个数字是巨大的,有时它会超过1000秒。但是我们在yaml配置中设置的读取超时仅为10秒。指标是否有问题,或者即使达到超时,读取仍然有效。

在巨大的本地延迟期间,我确实看到待处理的读取阶段很高。所以看起来像是在超时后挂起。

知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

(至少从3.11开始)本地读取中没有任何内容可以超时。消息在收到消息时被丢弃,而不是在处理过程中。因此,一旦本地读取开始,它将不会停止直到完成。这意味着如果需要90秒,则需要很长时间并且无论超时设置如何都要记录。客户端早已收到超时或已经超时,所以当副本发回这个响应时它会被丢弃(没有人在听,所以没有理由去看它)。

它花费这么长时间的原因很多,但最有可能来自大型分区或太多墓碑(这通常会导致GC暂停)。