Java indexin使用solr时打开的文件异常过多

Java indexin使用solr时打开的文件异常过多,java,jboss,solr,Java,Jboss,Solr,我正在使用SOLR为我的web应用程序中的文档编制索引,SOLR.war部署在jboss服务器上。 但在索引时,我打开了太多的文件。以下是堆栈跟踪的一些异常: 12:31:33,267 ERROR [STDERR] Exception in thread "Lucene Merge Thread #0" 12:31:33,267 ERROR [STDERR] org.apache.lucene.index.MergePolicy$MergeException: java.io.FileNotFo

我正在使用SOLR为我的web应用程序中的文档编制索引,SOLR.war部署在jboss服务器上。 但在索引时,我打开了太多的文件。以下是堆栈跟踪的一些异常:

12:31:33,267 ERROR [STDERR] Exception in thread "Lucene Merge Thread #0"
12:31:33,267 ERROR [STDERR] org.apache.lucene.index.MergePolicy$MergeException: java.io.FileNotFoundException: /data/jbossesb/bin/solr/data/index/_2rw.prx (Too many open files)
12:31:33,267 ERROR [STDERR] at org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:351)
12:31:33,267 ERROR [STDERR] at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:315)
12:31:33,267 ERROR [STDERR] Caused by: java.io.FileNotFoundException: /data/jbossesb/bin/solr/data/index/_2rw.prx (Too many open files)
12:31:33,267 ERROR [STDERR] at java.io.RandomAccessFile.open(Native Method)
将是你最有可能的原因

检查操作系统设置的限制。并进行相应的调整。 在Unix上,要查看和设置的命令为。

如本文所述,您可以尝试以下选项:

  • 使用:
    ulimit-n 1000000增加您的ulimit
  • solrconfig.xml
    中将
    useCompoundFile
    设置为true,以使用Lucene的复合文件格式
  • 使用较低的
    mergeFactor
    ,这将减少段数,从而减少打开的文件

    • 优化索引。它可能有太多的段。

      还可以尝试降低合并因子。

      嗨,您能解释一下如何使用ulimit为指定用户设置此最大值吗?我搜索了几个站点,但没有找到好的命令:(/etc/security/limits.conf)——设置基于用户的ulimit的最佳位置