Linux内存映射文件(已删除)

时间:2017-04-21 16:56:55

标签: linux memory-management solr cassandra mmap

我对Linux中的mmap文件有疑问(Ubuntu 14具体)。

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

这样的内容
  

ERROR [http-8983-exec-5] 2017-04-20 02:08:41,901 SolrException.java   (第136行)尝试获取大小时的IO错误   目录:java.io.FileNotFoundException:_2zm29_Lucene41_0.pos

map_files的外观示例如下:

  

lr -------- 1 cassandra cassandra 64 Apr 21 16:49   7f82c1a22000-7f82c1a23000 - >   /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig_BloomFilter_0.tim   (删除)lr -------- 1 cassandra cassandra 64 Apr 21 16:49   7f82c1a23000-7f82c1a24000 - >   /cassandra/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 cassandra 64 Apr 21 16:49   7f82c1a29000-7f82c1a2a000 - >   /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig.nvd   (删除)lr -------- 1 cassandra cassandra 64 Apr 21 16:49   7f82c1a2a000-7f82c1a2b000 - >   /cassandra/data/solr.data/clearcore_solr.validations_search/index/_2grig_Lucene41_0.doc   (删除)

我的问题是,是否有任何可能导致这些文件随机消失的内容?似乎每隔几天就有一两个文件记录这种类型的错误,在proc /中有大约90个(删除的)链接。操作系统是否可能过早地清理其中一些mmap文件,因此proc /中的符号链接会被破坏?我无法解释这种行为。

另外,对于mmap文件,如果进程没有正确关闭与mmap文件的连接,操作系统是否清理文件并将其从文件系统中删除?或者如果某个流程没有彻底破坏它与文件的连接会发生什么?

1 个答案:

答案 0 :(得分:0)

Solr使用大量Java堆,也使用大型mmap文件。如果它达到消耗所有物理RAM的程度,你会看到一个急剧减速,但仍然没有失败。

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