我尝试关闭数据库及其生成的所有已打开文件,但.sst
文件仍处于打开状态。
.sst
个文件? (用于LevelDB)我想,经过几天的运行,我最终会得到org.iq80.leveldb.DBException: IO error: Too many open files
例外!
答案 0 :(得分:0)
删除数据库处理程序后,将关闭所有sst文件。
但是sst文件仍然在你的磁盘上。您可以尝试max_open_files
删除所有数据库文件。
您可以在Options
中设置IO error: Too many open files
,以便在打开数据库时避免ID
。
答案 1 :(得分:0)
<强> 1。什么是.sst文件? (用于LevelDB)
.sst
应该将您的数据存储在磁盘上。
<强> 2。关闭数据库后,为什么还能看到它们?
leveldb
将文件存储在磁盘上,关闭数据库只意味着关闭句柄来操作它,而不是删除数据。就像你关闭mysql
守护进程一样,你没有真正删除数据,你可以在重启时访问它。
第3。谁/什么关闭他们?
打开数据库实例并保存.sst
文件的文件描述符的过程将关闭它们。
由于您可能关心标题中提出的问题,“levelDB:.sst文件仍然在关闭数据库后打开”,通常情况下,文件描述符将被关闭但不会关闭文件。如果它们仍然打开,请使用lsof
查找打开它们的过程。