2017-08-04 12 views
0

サービスを実行した後にRocksDBJavaを使用していますが、「開いているファイルが多すぎます」という例外があります。以前の問題を掘り起こして私が知ったのは、最大数のファイルを開くというシステムの制限のためだとわかった。 rocksDBが使用しているディレクトリを調べると、1KBサイズの100,000個以上のsstファイルがあることがわかりました。これは、指定されたエラーの原因になります。 私はrocksBDを大規模なSSTファイルを生成するように設定する方法があることを知りたかったので、作成されるファイルの総数は最小であり、このエラーを避けることができます。RocksDB:非常に小さいサイズのSSTファイルが多すぎます

また、多くの読み取りスレッドと1つの書き込みスレッドがあり、読み書きする前に(RocksDB.open()とRocksDB.close()を使用して)接続を開いて閉じます。

答えて

0

これらの2つのオプションを使用して、より大きなSSTファイルを作成することができます。target_file_size_baseおよびtarget_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'という別の命名規則を使用しているようです –

関連する問題