indexin使用solr时打开文件exception太多

我正在使用SOLR在我的Web应用程序中索引文档,solr.war部署在jboss服务器上。 但索引时我得到的文件太多,打开exception。 下面是一些exception堆栈跟踪:

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 。

如本SOLR Jira中所述 ,您可以尝试以下选项:

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

优化索引。 它可能有太多的细分。

还尝试减少合并因子