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
,这将导致更少的段,从而减少打开文件。
优化索引。 它可能有太多的细分。
还尝试减少合并因子