我试图关闭 DB 和它生成的所有打开的文件,但是 .sst
文件仍然打开。
- 什么是
.sst
文件? (供 LevelDB 使用) - 为什么我在关闭数据库后仍然看到它们?
- 谁/什么关闭了它们?
我想在运行几天后,我最终会得到 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/