将我们的集群(4DC,ubuntu 14.04 x64,cpp-driver 2.0.1作为我们应用程序中的客户端)从4.6升级到4.7后,在少量节点的日志中收到消息,消息量很小" MessagingService.java:888 - 在过去的5000毫秒内丢失了1个MUTATION消息"在线程池转储中有1个Pending HintedHandoff通知
我尝试的是什么:如何找到这个突变/提示并放弃它?
旁注:
我们不增加负载(版本4.6使用此负载正常工作)
我们不减少节点数量
我们有ssd支持存储
答案 0 :(得分:3)
丢弃的突变通常意味着您的磁盘无法跟上您的摄取。在这一点上,您可能感兴趣的是找出是否有任何线程池备份(如果这是IO问题,通常是flushwriters)。这就是为什么cassandra会在那时记录踏板状态。
Cassandra构建于SEDA架构之上,具有多个线程池,可以处理多达一定数量的并行任务。当活动任务多于池可以同时处理时,挂起的线程池任务堆积起来。一旦系统有资源,它们最终将被处理,或者在极端情况下丢弃。
要查看线程池的当前状态,请使用nodetool tpstats
。很可能您的提示任务已经处理完毕。
您正在积累提示这一事实意味着您的某些节点已关闭,并且正在重播提示以保持一致性,因为该节点已重新启动。
您的核心问题是丢失的突变。如果您继续看到以下情况,请考虑以下操作之一: