使用solrj索引文件时出现内存不足的问题

时间:2011-09-30 12:05:09

标签: solr solrj heap-dump

我用solrj编写了一个简单的程序,索引文件但是经过一分钟后它就崩溃了 java.lang.OutOfmemoryError:出现java堆空间

我使用Eclipse并且我的内存存储大约为2GB,我为我的VM arg中的tomcat和我在Debug Configuration中的应用程序设置-Xms1024M-Xmx2048M并取消注释solrconfig中的maxBufferedDocs并将其设置为100然后再次运行应用程序但是当它到达大于500MB的文件时它会很快崩溃

有没有使用solrj索引大文件的配置? 我的solrj的详细信息如下:

String urlString = "http://localhost:8983/solr/file"; 
CommonsHttpSolrServer solr = new CommonsHttpSolrServer(urlString); 

ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract"); 

req.addFile(file); 
req.setParam("literal.id", file.getAbsolutePath()); 
req.setParam("literal.name", file.getName()); 
req.setAction(ACTION.COMMIT, true, true); 

solr.request(req); 

2 个答案:

答案 0 :(得分:1)

你是否也在eclipse中运行java类时设置堆大小参数?

Run -> Run Configurations > <Class Name> > Arguments -> VM arguments

答案 1 :(得分:0)

Solr是否也和solrj在同一台机器上运行?运行Solr的计算机上可能存在内存限制。一旦启动Solr,你有多少可用内存? - 你可能需要更多内存。

尝试在每个文档后面提交一个提交,看看你是否可以暂时解决问题。