4

我一直在尝试使用压力测试将 10 亿条记录插入 Cassandra,但在插入几百万条记录后失败,并出现以下错误:

操作 [641412926] 重试 10 次 - 插入密钥时出错 0641412926 ((UnavailableException))

操作 [641412995] 重试 10 次 - 插入密钥时出错 0641412995 ((UnavailableException))

操作 [641413235] 重试 10 次 - 插入密钥时出错 0641413235 ((UnavailableException))

操作 [641413164] 重试 10 次 - 插入密钥时出错 0641413164 ((UnavailableException))

我在每次压力测试中都观察到了这个问题。有时,集群中的任何一个节点都会出现故障。这是一个已知的问题?关于为什么会发生这种情况的任何特殊原因?我在 8 台机器的集群上使用 Cassandra 1.2.3。

谢谢,VS

4

2 回答 2

3

UnavailableException 表示您联系的节点在集群中找不到足够的副本来满足请求的密钥。如果您在压力测试期间有节点上下移动,您可能需要更多容量来处理您针对集群运行的负载。

为什么会这样?你可能在某些方面能力不足。如果您没有用完磁盘空间,您应该评估您的 CPU 负载和您的 IO 以尝试找出发生了什么。在使用 Cassandra 时,区分峰值负载和持续负载很重要。虽然 Cassandra 可以处理短暂的峰值,但从长远来看,它完全有可能在节点上抛出比它可以处理的更多的负载。这意味着,如果您的高峰持续五分钟,您可能会没事的。如果您的高峰持续数天,您应该增加容量,因为您的集群最终会落后。

于 2013-12-20T17:59:31.457 回答
1

首先要检查的是您要插入的节点是否已启动并且 cassandra 是否正在运行。假设它是,那么你可能会压倒 cassandra。通常,当 JVM 垃圾收集进程以灾难性方式失败时,在 JVM 中运行的应用程序无法恢复。这可能是您触发的错误情况,这可能是您的 Cassandra 节点无法恢复的原因。要确认是否是这种情况,请启用更详细的 GC 日志记录和/或查阅 system.log 中现有的 JVM GC 日志消息。

于 2013-07-16T13:28:28.667 回答