首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RocksDB:非常小的SST文件太多

RocksDB:非常小的SST文件太多
EN

Stack Overflow用户
提问于 2017-08-04 23:14:47
回答 2查看 3.2K关注 0票数 3

在运行RocksDBJava服务一段时间后,我看到了“打开的文件太多”的异常。通过在门户上提到的上一个问题的挖掘,我发现这是因为系统限制打开最大数量的文件。当我检查rocksDB正在使用的目录时,我注意到有超过100K的1KB大小的sst文件,这可能是导致给定错误的原因。我想知道是否有任何方法可以配置rocksDB来生成大尺寸的SST文件,以便创建的文件总数最小,并且我们可以避免此错误。

另外,在我当前的项目中,有许多读线程和一个写线程,在读或写rocksDB之前,我会打开和关闭连接(使用RocksDB.open()RocksDB.close())。

EN

回答 2

Stack Overflow用户

发布于 2017-08-06 16:26:06

您可以使用以下两个选项来创建更大的SST文件:target_file_size_basetarget_file_size_multiplier。详情请参见the doc

此外,您还可以使用max_open_files选项来限制RocksDB可以打开的文件数量。但是,为了获得良好的性能,我建议您增加系统对打开文件的最大数量的限制,并将max_open_files配置为-1

票数 3
EN

Stack Overflow用户

发布于 2018-07-26 11:02:13

默认情况下,当您调用RocksDB.open()时,RocksDB读取所有WAL以恢复内存,然后执行一个flush(),将内存写为SST文件。这就是为什么你有这么多小的SST文件。

要避免此行为,请在打开DB时将选项avoid_flush_during_recovery设置为true。Java版本名为avoidFlushDuringRecovery()。此外,永远不要调用flush或执行隐式刷新(如createCheckpoint等)。在你的代码中。

请参阅代码here

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45510290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档