使用Cassandra 5.0.4 SAI索引引发堆内存问题求助
Cassandra 5.0.4 SAI索引堆内存泄漏:已知问题与解决方案
已知问题匹配
Cassandra官方已确认,5.0.x系列版本(包括5.0.4)的SAI索引存在特定场景下的堆内存泄漏问题:当索引字段为低基数取值(如你的shippingtype仅1-100个可能值),同时伴随高速率写入、大分区量(250,000个唯一分区)时,SAI的内部基数统计与分区映射缓存会出现无法回收的对象堆积。
这种泄漏的特征完全符合你的描述:
- 未使用SAI索引时堆内存正常
- 启用索引后堆内存持续增长,停止写入也无法释放
- 调整
MaxDirectMemorySize、file_cache_size_in_mb等非SAI相关参数无效果
修复版本
该问题已在Cassandra 5.0.5及后续的5.0.x维护版本中被修复,升级到对应版本是彻底解决问题的最优方案。
临时缓解手段(无法立即升级时)
- 删除涉事的SAI索引
orders_shippingtype_idx,改用其他查询优化方式(例如基于分区键的前置过滤,或物化视图——需注意物化视图会带来额外的写入开销) - 降低写入速率,减缓内存泄漏的积累速度,但这仅能临时延缓问题,无法根治。
内容的提问来源于stack exchange,提问作者Gregor
相关产品推荐
相关产品推荐

