cancel
Showing results for 
Search instead for 
Did you mean: 

Uso de CPU muy alto - SOLUCIONADO

alkalde
Confirmed Champ
Confirmed Champ
Hola a todos,

soy nuevo en esto de Alfresco y ando haciendo una pruebas para poner un gestor documental en la empresa. He instalado un Alfresco Community 4.2.f en un servidor con Ubuntu 64bits, en realidad es un Zentyal 3.4 de 64Bit que está basado en Ubuntu e incluye una administración via web para implementar toda una serie de servicios. He configurado CIFS para montar una unidad de red en los clientes windows. Esta noche me he dejado copiando 3 carpetas, en total unos 40gb y me he encontrado en el log estos errores de forma repetitiva:
<blockcode>


2014-04-10 02:55:16,926  WARN  [solr.tracker.CoreTracker] [SolrTrackingPool-alfresco3] Node index failed and skipped for 265109 in Tx 877023
java.net.SocketTimeoutException: Read timed out
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read(SocketInputStream.java:150)
   at java.net.SocketInputStream.read(SocketInputStream.java:121)
   at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
   at sun.security.ssl.InputRecord.read(InputRecord.java:480)
   at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
   at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
   at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
   at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
   at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
   at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
   at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
   at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
   at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
   at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
   at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
   at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
   at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
   at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
   at org.alfresco.httpclient.AbstractHttpClient.executeMethod(AbstractHttpClient.java:135)
   at org.alfresco.httpclient.AbstractHttpClient.sendRemoteRequest(AbstractHttpClient.java:111)
   at org.alfresco.httpclient.HttpClientFactory$HttpsClient.sendRequest(HttpClientFactory.java:371)
   at org.alfresco.solr.client.SOLRAPIClient.getTextContent(SOLRAPIClient.java:992)
   at org.alfresco.solr.tracker.CoreTracker.addContentPropertyToDoc(CoreTracker.java:2872)
   at org.alfresco.solr.tracker.CoreTracker.indexNode(CoreTracker.java:2505)
   at org.alfresco.solr.tracker.MultiThreadedCoreTracker$NodeIndexWorkerRunnable.doWork(MultiThreadedCoreTracker.java:812)
   at org.alfresco.solr.tracker.MultiThreadedCoreTracker$AbstractWorkerRunnable.run(MultiThreadedCoreTracker.java:753)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:724)
2014-04-10 03:05:46,479  ERROR [solr.core.SolrCore] [pool-1-thread-1] java.lang.OutOfMemoryError: Java heap space

2014-04-10 04:18:41,235  ERROR [solr.core.SolrCore] [pool-1-thread-1] java.lang.NullPointerException
   at org.alfresco.solr.AlfrescoSolrEventListener$OwnerIdManager.addAll(AlfrescoSolrEventListener.java:3302)
   at org.alfresco.solr.AlfrescoSolrEventListener.newSearcher(AlfrescoSolrEventListener.java:209)
   at org.apache.solr.core.SolrCore$4.call(SolrCore.java:1163)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
   at java.util.concurrent.FutureTask.run(FutureTask.java:166)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:724)

2014-04-10 04:18:57,149  ERROR [solr.core.SolrCore] [pool-1-thread-1] java.lang.NullPointerException

</blockcode>

Tenemos que subir unos 300 GB de documentación, y al subir mediante CIFS carpetas con tamaño de varios GB se empieza a comer la memoria del servidor y el uso de la CPU pasa al 700%, quedando el sistema lento. El servidor tiene 2 procesadores XEON de 4 nucleos y 16GB de RAM, y lleva 2 Discos Duros SATA en RAID 1 de 7200RPM. Mientras Alfresco está en reposo el uso de la CPU tiene algunos picos por encima del 100% pero normalmente está entre el 0% y 40%. El problema parece que viene al querer copiar carpetas que ocupan cantidad de GB, el uso de CPU empieza a subir de forma paulatina hasta llegar al 700% y la memoria empieza a consumirse poco a poco, si paro la copia de ficheros el uso de CPU vuelve a estar bien, pero en cuanto se intenta acceder desde los equipos clientes a la unidad CIFS solo para explorar las carpetas vuelve a subir con picos entre el 400% y el 700% de CPU.

En /opt/alfresco/tomcat/bin/setenv.sh tengo:

<blockcode>

JAVA_OPTS="-XX:-DisableExplicitGC -XX:ReservedCodeCacheSize=1024m $JAVA_OPTS "
JAVA_OPTS="-XX:MaxPermSize=1024M -Xms8G -Xmx8G $JAVA_OPTS "

</blockcode>


He subido los parámetros que venían por defecto para usar 8GB de memoria, tengo 16GB de RAM, no se si es correcto.

En el alfresco-global.properties tengo:
<blockcode>

###############################
## Common Alfresco Properties #
###############################

dir.root=/opt/alfresco/alf_data

alfresco.context=alfresco
alfresco.host=127.0.0.1
alfresco.port=8080
alfresco.protocol=http

share.context=share
share.host=127.0.0.1
share.port=8080
share.protocol=http

### database connection properties ###
db.driver=org.gjt.mm.mysql.Driver
db.username=XXXXXXXXXX
db.password=XXXXXXXXXX
db.name=alfresco
db.url=jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8

### FTP Server Configuration ###
ftp.enabled=true
ftp.port=2121

### RMI service ports ###
alfresco.rmi.services.port=50500
avm.rmi.service.port=0
avmsync.rmi.service.port=0
attribute.rmi.service.port=0
authentication.rmi.service.port=0
repo.rmi.service.port=0
action.rmi.service.port=0
deployment.rmi.service.port=0

### External executable locations ###
ooo.exe=/opt/alfresco/libreoffice/program/soffice.bin
ooo.enabled=false
ooo.port=8100
img.root=/opt/alfresco/common
img.dyn=${img.root}/lib
img.exe=${img.root}/bin/convert
swf.exe=/opt/alfresco/common/bin/pdf2swf
swf.languagedir=/opt/alfresco/common/japanese

jodconverter.enabled=true
jodconverter.officeHome=/opt/alfresco/libreoffice
jodconverter.portNumbers=8100

### Initial admin password ###
alfresco_user_store.adminpassword=b5c8f974de77b57610342debfa984c3a

### E-mail site invitation setting ###
notification.email.siteinvite=false

### License location ###
dir.license.external=/opt/alfresco

### Solr indexing ###
index.subsystem.name=solr
dir.keystore=${dir.root}/keystore
solr.port.ssl=8443

### BPM Engine ###
system.workflow.engine.jbpm.enabled=false

### CIFS SERVER ###

cifs.enabled=true
cifs.domain=xxxxxxxx.xxxxxx.xxxxxx
cifs.serverName=serverdell
cifs.hostannounce=true
cifs.ipv6.enabled=false
cifs.tcpipSMB.port=445
cifs.netBIOSSMB.namePort=137
cifs.netBIOSSMB.datagramPort=138
cifs.netBIOSSMB.sessionPort=139
cifs.WINS.autoDetectEnabled=true
cifs.pseudoFiles.shareURL.enabled=false
cifs.pseudoFiles.enabled=false
cifs.pseudoFiles.explorerURL.enabled=false

</blockcode>

Otro dato es que estoy usando como base de datos MySQL y que Alfresco está corriendo bajo root , ya se que no es buena idea de que corra bajo el usuario root, no se si aparte de los problemas de seguridad que pueda haber tiene algo que ver con mi problema de CPU. Esta bajo root por que a pesar de hacer todas las redirecciones de puertos con iptables no he conseguido nunca que funcione CIFS por los puertos originales tcp 445,139 y udp137,138, si funcionaban bien por 1445, 1337, 1338 y 1339, pero las redirecciones no funcionaban. Por eso opte, al menos de momento, por dejar los puertos normales en el alfresco-global.properties y correrlo con el usuario root ya que problemas de suguridad no voy a tener en el entorno que va a correr y no va a estar accesible desde internet.

Desde ya muchas gracias por vuestro tiempo y a ver si alguien le ha pasado algo similar y puede ayudarme.

Saludos.
1 ACCEPTED ANSWER

alkalde
Confirmed Champ
Confirmed Champ
Al final lo he solucionado haciendo una instalación por separado de Tomcat y desplegando Alfresco sobre el tomcat limpio, reutilizando la base de datos que ya tenia de la instalación previa y el directorio alf_data. Ahora cuando se importa documentos de forma masiva la CPU no suele pasar del 70% cuando antes no bajaba de entre el 500% y 700% y la navegación por las carpetas era muy lenta e inusable.

Para el que le interese, me ha servido de ayuda este enlace:

http://www.whiteboardcoder.com/2013/01/install-alfresco-community-42-on-ubuntu_31.html

Saludos.

View answer in original post

2 REPLIES 2

alkalde
Confirmed Champ
Confirmed Champ
Hola de nuevo, a ver si alguien me pudiera ayudar, desde ya muchas gracias por su tiempo.

He sacado un volcado en el log de alfresco mientras estaba subiendo una carpeta con documentos al repositorio mediante CIFS. He provocado el volcado con un kill -3 Thread_java . He observado que cuando subo una carpeta con contenido, con el comando top -H puedo ver que se genera 8 procesos java que consumen la misma CPU o casi la misma y que imagino que corresponden a cada uno de los 8 núcleos pertenecientes a los 2 XEON que tiene el servidor.

Como el volcado es muy largo lo voy a adjuntar en fichero, estaría muy agradecido a quien me pueda dar alguna pista para poder solucionar este problema.

Un saludo y gracias por adelantado.

alkalde
Confirmed Champ
Confirmed Champ
Al final lo he solucionado haciendo una instalación por separado de Tomcat y desplegando Alfresco sobre el tomcat limpio, reutilizando la base de datos que ya tenia de la instalación previa y el directorio alf_data. Ahora cuando se importa documentos de forma masiva la CPU no suele pasar del 70% cuando antes no bajaba de entre el 500% y 700% y la navegación por las carpetas era muy lenta e inusable.

Para el que le interese, me ha servido de ayuda este enlace:

http://www.whiteboardcoder.com/2013/01/install-alfresco-community-42-on-ubuntu_31.html

Saludos.