【问题标题】:Why is my Cassandra node stuck with MutationStage increasing?为什么我的 Cassandra 节点卡在 MutationStage 增加?
【发布时间】:2013-01-20 18:51:54
【问题描述】:

我正在使用 Cassandra 来存储图片。我们目前正在从旧系统中大规模迁移图片。一段时间内一切正常,但最终我们会在保存时收到TimedOutException,我认为这是因为工作队列已满。

但是,在等待(几个小时)完成后,情况仍然相同(停止迁移后它不会自行恢复)

似乎只有1个节点有问题,其tpstats命令显示以下数据

即使我们在几小时前停止了插入,但未决的 MutationStage 操作仍在增加。

这到底是什么意思?什么是突变阶段?

我可以检查什么,看看为什么这么久后它还没有稳定下来?环中的所有其他服务器都处于 0 待处理操作。

我们尝试的任何新插入都会引发 TimedOutException... 异常。

这是铃声信息,以防有用


(有问题的节点是第一个)

EDIT:日志最后几行如下

INFO [OptionalTasks:1] 2013-02-05 10:12:59,140 MeteredFlusher.java (line 62) flushing high-traffic column family CFS(Keyspace='pics_persistent', ColumnFamily='master') (estimated 92972117 bytes)  
INFO [OptionalTasks:1] 2013-02-05 10:12:59,141 ColumnFamilyStore.java (line 643) Enqueuing flush of Memtable-master@916497516(74377694/92972117 serialized/live bytes, 141 ops)
INFO [OptionalTasks:1] 2013-02-05 10:14:49,205 MeteredFlusher.java (line 62) flushing high-traffic column family CFS(Keyspace='pics_persistent', ColumnFamily='master') (estimated 80689206 bytes)
INFO [OptionalTasks:1] 2013-02-05 10:14:49,207 ColumnFamilyStore.java (line 643) Enqueuing flush of Memtable-master@800272493(64551365/80689206 serialized/live bytes, 113 ops)
WARN [MemoryMeter:1] 2013-02-05 10:16:10,662 Memtable.java (line 197) setting live ratio to minimum of 1.0 instead of 0.0015255633589225548
INFO [MemoryMeter:1] 2013-02-05 10:16:10,663 Memtable.java (line 213) CFS(Keyspace='pics_persistent', ColumnFamily='master') liveRatio is 1.0 (just-counted was 1.0).  calculation took 38ms for 86 columns
INFO [OptionalTasks:1] 2013-02-05 10:16:33,267 MeteredFlusher.java (line 62) flushing high-traffic column family CFS(Keyspace='pics_persistent', ColumnFamily='master') (estimated 71029403 bytes)
INFO [OptionalTasks:1] 2013-02-05 10:16:33,269 ColumnFamilyStore.java (line 643) Enqueuing flush of Memtable-master@143498560(56823523/71029403 serialized/live bytes, 108 ops)
INFO [ScheduledTasks:1] 2013-02-05 11:36:27,798 GCInspector.java (line 122) GC for ParNew: 243 ms for 1 collections, 1917768456 used; max is 3107979264
INFO [ScheduledTasks:1] 2013-02-05 13:00:54,090 GCInspector.java (line 122) GC for ParNew: 327 ms for 1 collections, 1966976760 used; max is 3107979264

【问题讨论】:

  • 请在邮件列表中询问;那里有更多的专家
  • 您能否向我们提供有关您在 cassandra 中的“模式”的信息?如何选择保存每张图像的位置(键/列名)?您能否告诉我们在您进行此迁移时是否正在发生兼容性? (检查 nodetool compactionstats)
  • 哪个版本的 Cassandra?

标签: java performance optimization cassandra deadlock


【解决方案1】:

我猜你只是在写超载你的一个节点——即你写得比它能够消化的快。如果你的文章很大,这很容易。

即使在您停止写入集群后,MutationStage 仍在增加,因为其他节点仍在处理排队的突变请求并将副本发送到此过载节点

我不知道为什么其中一个节点会过载,因为可能有几个原因:

  • 节点比其他节点慢(不同的硬件或不同的配置)
  • 集群未正确平衡(但是,nodetool ring 输出的开头表明情况并非如此)
  • 您将所有写入定向到此特定节点,而不是将它们平均分配到所有节点,例如循环赛
  • 您配置了太大的内存表总大小限制/或缓存大小导致总堆空间太小,并且您的节点正在与 GC 作斗争,而恰好这个节点是第一个陷入 GC 死亡螺旋的节点

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2019-06-23
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多