2017-08-04 155 views
0

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

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

回答

0

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

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

+0

谢谢,你能帮我怎么设置这些值在JavaRocks中。 – AmanSinghal

+0

我检查了API,但是我找不到使用Java API设置这些值的任何方法。 – AmanSinghal

+0

@AmanSinghal看来,Java的API使用另一个命名规则:'org.rocksdb.Options','setTargetFileSizeBase','setTargetFileSizeMultiplier','setMaxOpenFiles'你检查 –