我一直试图使用压力测试向Cassandra插入10亿条记录,并且在数百万次插入后失败并出现以下错误:
操作[641412926]重试10次 - 错误插入键0641412926((UnavailableException))
操作[641412995]重试10次 - 错误插入键0641412995((UnavailableException))
操作[641413235]重试10次 - 错误插入密钥0641413235((UnavailableException))
操作[641413164]重试10次 - 错误插入键0641413164((UnavailableException))
我在每次压力测试中都观察到了这个问题。有时,群集中的任何一个节点都会关闭。这是一个已知的问题?关于为什么会发生这种情况的任何特殊原因?我在8台机器的集群上使用Cassandra 1.2.3。
谢谢, VS
答案 0 :(得分:3)
UnavailableException意味着您联系的节点无法在群集中找到足以请求完成请求的密钥的副本。如果在压力测试期间有节点上下移动,则可能需要更多容量来处理针对群集运行的负载。
为什么会这样?你可能在某种程度上不足。如果你的磁盘空间不足,你应该评估你的CPU负载,以及你的IO来试图弄清楚发生了什么。使用Cassandra时,重要的是要区分峰值负载和持续负载。虽然Cassandra可以处理短暂的峰值,但是在一个节点上投入的负荷完全可能比长期可以处理的更多。这意味着如果您的峰值持续五分钟,您可能会没事。如果您的峰值持续数天,则应该增加容量,因为您的群集最终会落后。
答案 1 :(得分:1)
要检查的第一件事是您插入的节点是否已启动且cassandra是否正在运行。假设它是,那么你可能是压倒性的cassandra。通常,当JVM垃圾收集进程以灾难性方式失败时,在JVM中运行的应用程序无法恢复。这可能是您触发的错误情况,这可能是您的Cassandra节点无法恢复的原因。要确认是否是这种情况,请在system.log中启用更详细的GC日志记录和/或查阅现有的JVM GC日志消息。