我们在 AWS 上使用 EC2Snitch 有一个具有 3 个节点和复制因子 3 的 Cassandra 集群。
实例类型为 c5.2xlarge(8 核和 16GB RAM)。
集群一直运行良好,但突然从昨天晚上开始,所有节点上的 cassandra 进程开始崩溃。它们被设置为自动重新启动,但在启动后 1 或 2 或 3 分钟内它们会因内存堆空间不足错误而崩溃。
堆配置:
MAX_HEAP_SIZE="4G"
HEAP_NEWSIZE="800M"
在此之后,我们尝试将节点大小增加到 r5.4x 或 128 GB 内存并分配 64GB 堆,但仍然发生相同的事情,无论启动所有 3 个节点还是一次仅启动一个节点。我们可以注意到,第一次垃圾收集在一段时间后发生,然后在几秒钟内连续发生,无法释放任何进一步的内存并最终崩溃。
我们不确定启动后立即将哪些内容拉入内存。
其他参数:
- 卡桑德拉版本:2.2.13
- 数据库大小为 250GB
hinted_handoff_enabled: true
commitlog_segment_size_in_mb: 64
memtable_allocation_type: offheap_buffers
任何帮助在这里,将不胜感激。
编辑: 我们发现查询时有特定的表,它会导致 casssandra 节点崩溃。
cqlsh:my_keyspace> select count(*) from my_table ;
ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'}
所以我们认为,这与这个特定表中的数据损坏/巨大有关。谢谢。