2017-04-21 114 views
0

我有一个关于Linux中的mmap文件(Ubuntu 14具体)的问题。Linux内存映射文件(删除)

我们在主机上运行DSE/DSE SOLR,我们看到一些文件随机消失。它看起来像应用程序开始构建索引时创建了一堆mmap文件,并在继续构建索引时使用它们。查看/ proc/$ {dse_pid}/map_files我看到一堆指向(删除)文件的符号链接。在我们的日志中,我们看到的东西像

错误[HTTP-8983-EXEC-5] 2017年4月20日02:08:41,901 SolrException.java (线136),IO,同时试图让错误java.io.FileNotFoundException:在 目录的大小_2zm29_Lucene41_0.pos

什么样的map_files样子就是这样的一个例子:

LR -------- 1个卡桑德拉卡桑德拉64 Apr 21 16:49 7f82c1a22000-7f82c1a23000 - > /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig_BloomFilter_0.tim (删除)LR -------- 1个卡桑德拉卡桑德拉64 04月21 16点49 7f82c1a23000-7f82c1a24000 - > /卡桑德拉/data/solr.data/clearcore_solr.validations_search/index/_2grig_BloomFilter_0.pos (删除)lr -------- 1 cassandra cassandra 64 Apr 21 16:49 7f82c1a24000-7f82c1a25000 - > /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig_BloomFilter_0.doc (删除)lr -------- 1 cassandra cassandra 64 Apr 21 16:49 7f82c1a25000-7f82c1a28000 - > /cassandra/data/solr.data /clearcore_solr.validations_search/index/_2grig_Lucene41_0.pos (删除)lr -------- 1 cassandra c assandra 64 Apr 21 16:49 7f82c1a29000-7f82c1a2a000 - > /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig.nvd (删除)lr -------- 1 cassandra cassandra 64 4月21 16:49 7f82c1a2a000-7f82c1a2b000 - > /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig_Lucene41_0.doc (删除)

我的问题是,是否有任何可能导致这些文件随机消失?好像它每隔几天有一个或两个文件记录这种类型的错误,proc /中大约有90个(删除的)链接。操作系统是否可以提前清理某些mmap文件,从而导致proc /中的符号链接被破坏?我无法解释这种行为。

此外,通常情况下,如果一个进程没有正确关闭其与mmap文件的连接,操作系统是否清理文件并将其从文件系统中删除?或者如果一个进程不干净地打断它与文件的连接会发生什么?

回答

0

Solr使用大量的Java堆以及大型的mmap文件。如果它耗尽所有物理内存,您将看到戏剧性的减速,但仍然没有失败。

Solr的mmap文件是短暂的。您可以调查DSE为什么要保留与Solr的mmap文件的符号链接。但是如果没有功能性DSE问题,那么也许这一切都没有关系。