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
Ответы
Ответ 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