我正在使用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)
答案 0 :(得分:4)
如此SOLR Jira中所述,您可以尝试以下选项:
ulimit -n 1000000
useCompoundFile
中将solrconfig.xml
设置为true以使用Lucene的复合文件格式mergeFactor
,这会导致较少的细分,因此打开的文件较少。答案 1 :(得分:2)
File Descriptor将是您最有可能的原因。
检查操作系统设置的限制。并相应调整。 在Unix上,查看和设置的命令是ulimit。
答案 2 :(得分:0)
优化索引。它可能有太多的部分。
答案 3 :(得分:0)
还尝试减少合并因子