2015-06-20 79 views
2

我们在生产环境中使用Apache Solr,每周都会收到以下异常。Apache solr越来越多(打开的文件太多)

ERROR - 2015-06-19 00:45:02.127; org.apache.solr.common.SolrException; java.io.FileNotFoundException: /opt/solr/solr/list_activity_10_1847/data/index/_9_Lucene41_0.doc (Too many open files) 
     at java.io.FileOutputStream.open(Native Method) 
     at java.io.FileOutputStream.<init>(FileOutputStream.java:221) 
     at java.io.FileOutputStream.<init>(FileOutputStream.java:171) 
     at org.apache.lucene.store.FSDirectory$FSIndexOutput.<init>(FSDirectory.java:389) 
     at org.apache.lucene.store.FSDirectory.createOutput(FSDirectory.java:282) 
     at org.apache.lucene.store.NRTCachingDirectory.unCache(NRTCachingDirectory.java:247) 
     at org.apache.lucene.store.NRTCachingDirectory.sync(NRTCachingDirectory.java:182) 
     at org.apache.lucene.index.IndexWriter.startCommit(IndexWriter.java:4519) 
     at org.apache.lucene.index.IndexWriter.prepareCommitInternal(IndexWriter.java:2994) 
     at org.apache.lucene.index.IndexWriter.commitInternal(IndexWriter.java:3097) 
     at org.apache.lucene.index.IndexWriter.commit(IndexWriter.java:3064) 
     at org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:582) 
     at org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:95) 
     at org.apache.solr.update.processor.UpdateRequestProcessor.processCommit(UpdateRequestProcessor.java:64) 
     at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalCommit(DistributedUpdateProcessor.java:1707) 
     at org.apache.solr.update.processor.DistributedUpdateProcessor.processCommit(DistributedUpdateProcessor.java:1684) 
     at org.apache.solr.update.processor.LogUpdateProcessor.processCommit(LogUpdateProcessorFactory.java:157) 
     at org.apache.solr.handler.RequestHandlerUtils.handleCommit(RequestHandlerUtils.java:69) 
     at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:78) 
     at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) 
     at org.apache.solr.core.SolrCore.execute(SolrCore.java:1967) 
     at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:777) 
     at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:418) 
     at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207) 
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) 
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) 
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075) 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384) 

删除不需要的核心并重新启动Solr后,此问题将暂时解决。我无法确定问题的根源,寻找永久解决方案的帮助。

+2

不是很确定,但我已经看到这个错误主要是在Linux上(不涉及到solr虽然)。我不得不在/etc/security/limits.conf中增加限制并将其删除。 – Ouney

+1

psips重复的http://stackoverflow.com/questions/3828343/too-many-open-file-exception-while-indexin-using-solr –

+0

至少在CentOS上,打开文件的默认限制是一个非常保守的1024 ,这对许多Solr装置来说太小了。请按照Abhijit提供的链接来改变这一点。 –

回答