DSE 4.6到4.7:1 MUTATION消息在最后5000ms内丢失

时间:2015-06-02 10:52:48

标签: datastax-enterprise

将我们的集群(4DC,ubuntu 14.04 x64,cpp-driver 2.0.1作为我们应用程序中的客户端)从4.6升级到4.7后,在少量节点的日志中收到消息,消息量很小" MessagingService.java:888 - 在过去的5000毫秒内丢失了1个MUTATION消息"在线程池转储中有1个Pending HintedHandoff通知

我尝试的是什么:
run" nodetool truncatehints"在集群中的每个运行节点上 将openjdk更改为oracle jdk(1.7.0_76-b13)
退役节点并重新加入

如何找到这个突变/提示并放弃它?

旁注:
我们不增加负载(版本4.6使用此负载正常工作)
我们不减少节点数量 我们有ssd支持存储

已修复https://issues.apache.org/jira/browse/CASSANDRA-9129

1 个答案:

答案 0 :(得分:3)

丢弃的突变通常意味着您的磁盘无法跟上您的摄取。在这一点上,您可能感兴趣的是找出是否有任何线程池备份(如果这是IO问题,通常是flushwriters)。这就是为什么cassandra会在那时记录踏板状态。

Cassandra构建于SEDA架构之上,具有多个线程池,可以处理多达一定数量的并行任务。当活动任务多于池可以同时处理时,挂起的线程池任务堆积起来。一旦系统有资源,它们最终将被处理,或者在极端情况下丢弃。

要查看线程池的当前状态,请使用nodetool tpstats。很可能您的提示任务已经处理完毕。

您正在积累提示这一事实意味着您的某些节点已关闭,并且正在重播提示以保持一致性,因为该节点已重新启动。

您的核心问题是丢失的突变。如果您继续看到以下情况,请考虑以下操作之一:

  • 添加节点
  • 获得更好的存储空间(不要使用共享存储空间--I.E。亚马逊 EBS,ssd比旋转磁盘更快)
  • 减少工作量
  • 确保您正在加载最佳实践(良好的数据模型) 分散负载,具有负载均衡的数据存储驱动程序等。)