cancel
Showing results for 
Search instead for 
Did you mean: 

java.lang.OutOfMemoryError: Java heap space

emerson
Champ in-the-making
Champ in-the-making
Hola a todos,

Mi alfresco está súper lento,

Validando los logs, me same una error como este:

java.lang.OutOfMemoryError: Java heap space
Exception in thread "SolrTrackingPool-alfresco4" java.lang.OutOfMemoryError: Java heap space
Exception in thread "SolrTrackingPool-alfresco5" java.lang.IllegalStateException: this writer hit an OutOfMemoryError; cannot flush
   at org.apache.lucene.index.IndexWriter.doFlushInternal(IndexWriter.java:4279)
   at org.apache.lucene.index.IndexWriter.doFlush(IndexWriter.java:4264)
   at org.apache.lucene.index.IndexWriter.flush(IndexWriter.java:4255)
   at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2701)
   at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2655)
   at org.alfresco.solr.AlfrescoUpdateHandler.addDoc(AlfrescoUpdateHandler.java:323)
   at org.alfresco.solr.tracker.CoreTracker.indexNode(CoreTracker.java:2503)
   at org.alfresco.solr.tracker.MultiThreadedCoreTracker$NodeIndexWorkerRunnable.doWork(MultiThreadedCoreTracker.java:758)
   at org.alfresco.solr.tracker.MultiThreadedCoreTracker$AbstractWorkerRunnable.run(MultiThreadedCoreTracker.java:699)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
   at java.lang.Thread.run(Thread.java:722)
Exception in thread "SolrTrackingPool-alfresco6" java.lang.IllegalStateException: this writer hit an OutOfMemoryError; cannot flush
   at org.apache.lucene.index.IndexWriter.doFlushInternal(IndexWriter.java:4279)
   at org.apache.lucene.index.IndexWriter.doFlush(IndexWriter.java:4264)
   at org.apache.lucene.index.IndexWriter.flush(IndexWriter.java:4255)
   at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2701)
   at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2655)
   at org.alfresco.solr.AlfrescoUpdateHandler.addDoc(AlfrescoUpdateHandler.java:323)
   at org.alfresco.solr.tracker.CoreTracker.indexNode(CoreTracker.java:2503)
   at org.alfresco.solr.tracker.MultiThreadedCoreTracker$NodeIndexWorkerRunnable.doWork(MultiThreadedCoreTracker.java:758)
   at org.alfresco.solr.tracker.MultiThreadedCoreTracker$AbstractWorkerRunnable.run(MultiThreadedCoreTracker.java:699)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
   at java.lang.Thread.run(Thread.java:722)
Exception in thread "SolrTrackingPool-alfresco2" java.lang.IllegalStateException: this writer hit an OutOfMemoryError; cannot flush
   at org.apache.lucene.index.IndexWriter.doFlushInternal(IndexWriter.java:4279)
   at org.apache.lucene.index.IndexWriter.doFlush(IndexWriter.java:4264)
   at org.apache.lucene.index.IndexWriter.flush(IndexWriter.java:4255)
   at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2701)
   at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2655)
   at org.alfresco.solr.AlfrescoUpdateHandler.addDoc(AlfrescoUpdateHandler.java:323)
   at org.alfresco.solr.tracker.CoreTracker.indexNode(CoreTracker.java:2503)
   at org.alfresco.solr.tracker.MultiThreadedCoreTracker$NodeIndexWorkerRunnable.doWork(MultiThreadedCoreTracker.java:758)
   at org.alfresco.solr.tracker.MultiThreadedCoreTracker$AbstractWorkerRunnable.run(MultiThreadedCoreTracker.java:699)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
   at java.lang.Thread.run(Thread.java:722)



He leído variis links, y apuntan a aumentar estos valores que tengo:

-Xms24m
-Xmx256m
-XX:MaxPermSize=96m


Servirá si los aumento?

Agradezco su valiosa ayuda.
15 REPLIES 15

gonial
Champ in-the-making
Champ in-the-making
Buenas de nuevo a todos.

Perdonar que vuelva a insistir, pero me podéis confirmar si existe una limitación con el límite máximo de tamaño de los archivos para la versión 4.2.f¿?.

Es que ni intentando cambiar los parámetros del archivo "setenv.bat", soy capaz de hacer superar esa limitación usando mi aplicación web para cargar los documentos.

angelborroy
Community Manager Community Manager
Community Manager
Quizá sea una limitación de Windows, en Linux no ocurre. Yo he llegado a subir ficheros de varios Gigas en esa versión.

¿Qué versión de Windows estás utilizando?
Hyland Developer Evangelist

gonial
Champ in-the-making
Champ in-the-making
Gracias Angel por contestar, ya que aun sigo dándole vueltas al mismo asunto.

La versión 4.2.f está instalada en un "Windows server 2008 r2 standard", el mismo donde estaba instalada en origen, una versión 5.0.d de Alfresco.

Lo que me sucede ahora es lo siguiente, si uso la aplicación web desde el Eclipse de mi máquina (Windows 7), el tamaño máximo del archivo que puedo cargar desde mi aplicación web es de alrededor de unos 500MB antes de que me salte el error "GRAVE: java.lang.OutOfMemoryError: Java heap space".

En el caso de que despliegue el war de la aplicación dentro del Apache Tomcat del Alfresco 4.2.f en la máquina antes dicha (Windows server 2008 r2 standard). El tamaño que del fichero que quiero cargar no puede ser mayor de "+- 116MB" si no quiero volverme a encontrar con el mismo error "GRAVE: java.lang.OutOfMemoryError: Java heap space".

No entiendo si de verdad el problema viene por parte de Windows y si trabajase en Linux no me vería afectado por él. O si tal vez la limitación venga solo asociada a la configuración que por defecto viene con el Apache Tomcat (la versión del Tomcat de mi máquina local es la 7.0.59 y la que viene con la versión 4.2.f es Tomcat 7.0.52 ).

Seguiré investigando hacia una posible solución…

angelborroy
Community Manager Community Manager
Community Manager
En esa versión, al menos en Linux, los parámetros de memoria para Java los tienes que incluir en el fichero
/opt/alfresco-4.2.f/tomcat/scripts/ctl.sh
. Encontrarás la siguiente línea (o similar):

   export JAVA_OPTS="-XX:MaxPermSize=256m -Xms128m -Xmx1024m -XX:+DisableExplicitGC -Djava.awt.headless=true -Dalfresco.home=/Users/angelborroy/opt/ast-alfresco-4.2.e -Dcom.sun.management.jmxremote -Dsun.security.ssl.allowUnsafeRenegotiation=true -XX:ReservedCodeCacheSize=128m"


Prueba a subir el valor de
MaxPermSize
Hyland Developer Evangelist

gonial
Champ in-the-making
Champ in-the-making
Gracias Angel.

Estaba probando la configuración sobre las distinas máquinas que tengo, aunque creo que el problema puede venir también por las características de las mismas.

Crees demasiado justo que las máquinas cuenten con 4 y 8 GB de RAM¿….?

Gracias de nuevo.

angelborroy
Community Manager Community Manager
Community Manager
La configuración mínima recomendada para Alfresco es 4 GB, así que no creo que sea un problema de recursos de la máquina. De hecho, nosotros tenemos algún Alfresco "todo en uno" por ahí corriendo con esa cantidad de memoria.
Hyland Developer Evangelist