Cassandra 因压缩和清理而挂起

Posted

技术标签:

【中文标题】Cassandra 因压缩和清理而挂起【英文标题】:Cassandra hangs with compaction and cleanup 【发布时间】:2015-11-18 15:42:05 【问题描述】:

Cassandra 2.1.5 正在 Debian 3.2.68-1+deb7u5 x86_64 GNU/Linux 上运行

 # java -version
 java version "1.7.0_72"
 Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

6 个节点的集群。来自客户的查询正常工作。但是磁盘空间使用了 80-90%(用于 cassandra 数据)。并且大表的压缩正在挂起(并且清理也是如此) - 没有任何错误。直到节点重新启动 - 在小表的压缩工作之后,直到开始压缩大表(> 50Gb) - 从这一刻起,“进度”和“已完成”列中的nodetool compactionstats 不会更改,并且会增加“待处理任务”。

nodetool stop COMPACTION

没有解决这个问题:检查 - cassandra 此刻在做什么?仅从压缩中跳过大表? 加入新节点,如压缩,挂起......

【问题讨论】:

请参考support.datastax.com/hc/en-us/articles/… 不,我没有看到任何 AntiEntropy 或网络错误...但我会阅读 datastax 帮助中心,谢谢。 【参考方案1】:

我们的 4 个节点的 2.1.5 cassandra 集群遇到了类似的情况。没有错误,但压缩被卡住并且节点无法处理传入的请求。我们使用 jstack 进行线程转储,然后找到被挂起的压缩线程。然后,我们杀了它。之后,节点继续照常工作。

【讨论】:

以上是关于Cassandra 因压缩和清理而挂起的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 请求因 HTTP 错误而挂起

Oozie-sqoop 工作流在 cloudera 中因心跳问题而挂起

Cassandra 中的手动压缩

Cassandra nodetool 状态在不同节点上不一致,挂起的压缩任务太多

Python套接字recv()由于硬件而挂起?

如何在由于库函数而挂起的函数上实现超时? [复制]