Подтвердить что ты не робот

Solr - java пустое пространство памяти

Может ли кто-нибудь помочь мне выяснить причину ошибки в tomcat. я m, используя solr в нем. начиная с него отлично работает. позже я подниму эту ошибку. после перезапуска он отлично работает. пожалуйста, помогите мне узнать об ошибке.

7 марта 2011 г. 10:36:47 org.apache.solr.common.SolrException log SEVERE: java.lang.RuntimeException: java.lang.OutOfMemoryError: Java пустое место в org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1068) в org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:418)   в org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:85)   в org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:169)   на org.apache.solr.handler.XMLLoader.load(XMLLoader.java:69) at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:54)   в org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)   на org.apache.solr.core.SolrCore.execute(SolrCore.java:1316) в org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338)   в org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)   в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)   в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)   в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)   в org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)   в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)   в org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)   в org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)   в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)   в org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)   в org.apache.coyote.http11.Http11Protocol $Http11ConnectionHandler.process(Http11Protocol.java:634)   в org.apache.tomcat.util.net.JIoEndpoint $Worker.run(JIoEndpoint.java:445)   at java.lang.Thread.run(Неизвестный источник) Причиняется: java.lang.OutOfMemoryError: пространство кучи Java

4b9b3361

Ответ 1

Попробуйте увеличить объем памяти

Либо установите переменную окружения JAVA_OPTS="-Xms256m -Xmx500m", что означает, что размер начального куча составляет 256 МБ, не более 512 МБ. Или отредактируйте файл catalina.bat или .sh и добавьте туда эту строку.

Вам нужно поиграть с этими значениями, несколько недель назад у меня было задание индексатора SOLR, около 2 ГБ данных, куча 700 МБ.

Ответ 2

Вы можете попытаться уменьшить параметр соединения по умолчанию для пакета batchSize JDBC в определении вашего источника данных.
DataImportHandler предназначен для потоковой передачи строк один за другим. Он передает значение размера выборки (по умолчанию: 500) в Statement # setFetchSize, которое некоторые драйверы не соблюдают.

Если вы используете MsSQL, вы можете добавить data params paramsBuffering = "adaptive".

См. здесь для получения дополнительной информации:
http://wiki.apache.org/solr/DataImportHandlerFaq

Ответ 3

запустите tomcat с -Xmx1024m или некоторое большее значение, чтобы дать tomcat больше места для кучи.

Ответ 4

вы должны обязательно изучить настройку JVM. для начала вам следует изменить параметры JVM, чтобы выпустить журнал коллекции мусора, а затем использовать инструмент для анализа этого журнала. этот анализ поможет вам выбрать разумные значения для вашей кучи, а также позволит вам оценить, действительно ли у вас утечка памяти или проблема с настройкой кучи. см. этот связанный вопрос для некоторой информации об инструментах анализа GC:

Анализ журналов GC для горячих точек Sun, JVM 6