java - levelDB:.sst 文件在关闭 DB 后仍然打开

标签 java leveldb

我试图关闭 DB 和它生成的所有打开的文件,但是 .sst 文件仍然打开。

  1. 什么是.sst 文件? (供 LevelDB 使用)
  2. 为什么我在关闭数据库后仍然看到它们?
  3. 谁/什么关闭了它们?

我想在运行几天后,我最终会得到 org.iq80.leveldb.DBException: IO error: Too many open files 异常!

最佳答案

<强>1。什么是 .sst 文件? (供 LevelDB 使用)
.sst 应该将您的数据存储在磁盘上。

<强>2。为什么我关闭数据库后仍然看到它们?
leveldb 在磁盘上存储文件,关闭DB只是关闭操作它的句柄,并不删除数据。就像当你关闭mysql守护进程时,你并没有真正删除数据,当你重新启动时你可以访问它。

<强>3。谁/什么关闭了它们?
打开 db 实例并保存 .sst 文件的文件描述符的进程将关闭它们。

您可能关心您在标题中提出的问题,“levelDB: .sst files are still opened after closing DB”,通常情况下,文件描述符将被关闭而不是文件。如果它们仍然打开,请使用 lsof 找出打开它们的进程。

关于java - levelDB:.sst 文件在关闭 DB 后仍然打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39893019/

相关文章:

java - 如何在同一个包中轻松运行java程序?

java - 通知用户 Firebase 搜索是否成功

multithreading - 如何使用 Node.js 创建多线程应用程序,访问 LevelDB?

append - LevelDB 文件夹中的哪些文件是只能追加的?

database - 对于 LevelDB,我如何才能获得与 "official"性能报告中声称的相同的随机写入性能?

java - 在不上网的情况下调用Spring Controller 方法

java - Android Studio 中切换按钮文本值

java - 如何为 Cobol copybook 生成 java~jrecord 代码

database - 如何使用 LevelDB 访问 GoEthereum Transaction Trie

javascript - Webpack 条件要求