【问题标题】:Cassandra stress test fails after large number of inserts大量插入后,Cassandra 压力测试失败
【发布时间】:2013-12-21 01:59:31
【问题描述】:

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

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

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

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

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

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

谢谢, VS

【问题讨论】:

  • 这实际上是在集群中的机器(节点)出现故障时发生的。不知何故,压力测试中使用的连接池机制在机器出现故障时无法恢复,从而导致测试过程完全崩溃。如果有人有更多信息,请添加到这里。

标签: cassandra datastax-enterprise


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多