我的开发环境中有一个Cassandra集群。最近我做了一些写请求测试,发现有很多"REQ/RSP被丢弃";日志中的消息,如下所示。
${source_ip}:7000->/${dest_ip}:7000-SMALL_MESSAGES-d21c2c3e dropping message of type MUTATION_RSP whose timeout expired before reaching the network
MUTATION_REQ messages were dropped in last 5000 ms: 0 internal and 110 cross node. Mean internal dropped latency: 0 ms and Mean cross-node dropped latency: 3971 ms
我还发现,删除的MUTITION_REQ比删除的MUTATION_RSP多:(我发现使用"nodetool tpstats"(
Latencies waiting in queue (micros) per dropped message types
Message type Dropped 50% 95% 99% Max
HINT_RSP 63 1131.752 2816.159 3379.391 3379.391
GOSSIP_DIGEST_SYN 0 1629.722 2816.159 4055.2690000000002 4055.2690000000002
HINT_REQ 4903 1955.666 1955.666 1955.666 1955.666
GOSSIP_DIGEST_ACK2 0 1131.752 2816.159 4055.2690000000002 4055.2690000000002
MUTATION_RSP **6146** 1358.102 2816.159 3379.391 89970.66
MUTATION_REQ **450775** 1358.102 3379.391 4866.323 4139110.981
我的问题是:
- 一个健康集群通常会有这么多MUTATION_REQ/RSP被丢弃吗
- 我认为复制节点上的MUTATION_RSP被丢弃,协调器节点上的MUTATION_REQ被丢弃。我说得对吗
感谢
我在Cassandra邮件列表上遇到了同样的问题,问了同样的答案:
首先要检查的是,是否有NTP客户端在所有Cassandra上运行服务器?他们的时钟同步吗?如果你回答";是";对于两者,请检查服务器负载,是否有服务器的CPU使用率或磁盘使用率高利用有交换活动吗?如果没有,请检查GC日志,然后寻找长时间的GC暂停。
我的问题是时钟同步错误。
因此,首先,使用timedatectl
实用程序检查每个节点上的时钟,在输出中,应该有两个条目NTP enabled
和NTP synchronized
以及yes
。如果时钟不同步,请强制所有节点同步,然后对每个受影响的节点进行全面修复(我制作了nodetool -full -pr
(。在那之后,你应该从根本上减少MUATION_*下降的消息——从数百条重负载的消息减少到每天一两条。