Alfresco Share: Error status 408 Read timed out

Buenas a todos.

Quiero compartir este problema porque, en un principio, no le encontramos solución buscando por Internet y creo que podría servirle a más de uno en el futuro:

Tenemos una instalación en un cliente con más de 100 gigas (y creciendo), unos 6.000 usuarios (creciendo también), un Alfresco 3.4.10 y una JVM de 8 gigas asignada (para la heap – Xmx y Xms).

Aqui el problema: Mediante un dashlet que mostraba todos los workflows de un usuario (usando el getPooledTasks del servicio del workflow), cuando intentaba rescatar alrededor de 5.100 tareas Alfresco no era capaz de reaccionar y nos mostraba este error a nivel de servidor de aplicaciones (catalina.out, o en mi caso el log hub de weblogic):

17:04:20,050  INFO  [webscripts.connector.RemoteClient] Error status 408 Read timed out
java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)….

El problema es que Alfresco, con la JVM que tiene (la heap en concreto) no es capaz de atender todas las peticiones que recibe, excediendo el tiempo que tiene establecido internamente para la respuesta entre Alfresco y Share (por defecto 120 segundos), de ahí a que muestre un read time out.

Investigando por Google encontramos varios JIRAs, pero hablan de la 4.0 y nosotros tenemos una 3.4. por lo que no nos servía.

Aquí la solución para Alfresco versión 3.4:

  1. Abrir el jar spring-webscripts-X.X.X-SNAPSHOT.jar que encontráis en webapps/alfresco/WEB-INF/lib/ y navega dentro de él por: org/springframework/extension/webscript/
  2. Copia spring-webscript-application-context.xml a tu carpeta web-extension (en shared/classes/alfresco) con el nombre custom-spring-webscript-application-context.xml
  3. Incrementa las propiedades <property name=”readTimeout”><value>120000</value></property>
  4. Reiniciar el Alfresco

Aquí la solución para Alfresco versión 5.x:

  1. Repetir paso 1: Por ejemplo en una 5.0.x sería en WEB-INF/lib el jar spring-webscripts-5.0.2.5.jar
  2. Extrae el jar y abre el archivo  {EXTRACTED_DISK_PATH}\org\springframework\extensions\webscripts\spring-webscripts-application-context.xml
  3. Localiza la propiedad readTimeout, la podrás encontrar dentro del bean <bean id=”connector.remoteclient.abstract” abstract=”true”>
  4. Modifica el valor (está en milisegundos) y reinicia tu alfresco.

Y listo, ahora con el tiempo de respuesta incrementado cuando desde Share manda la petición alfresco es capaz de atender las peticiones y de devolver todas las tareas de ese usuario :-)

¡Espero que os haya servido!

¡Un saludo!

6 pensamientos en “Alfresco Share: Error status 408 Read timed out

  1. Juan Carlos Carrillo

    Hola Cristina,
    Es una Community 4.2.d sobre Ubuntu 64b (2 cpus, 4 GB ram)

    La JVM esta dimensionada con: -XX:MaxPermSize=256m -Xms128m -Xmx1024m

    El error se produce al intentar previsualizar algunos documentos (generalmente xlsx de aprox. 1mb), entonces se pone el proceso soffice.bin al 100% de cpu y da un error de que no puede mostrar el archivo. En catalina.out se registra lo siguiente:

    2013-09-13 09:36:55,739 INFO [webscripts.connector.RemoteClient] [http-bio-443-exec-4] Exception calling (GET) http://localhost:80/alfresco/s/api/node/workspace/SpacesStore/e1e53411-62ed-4de7-9000-a931b459e690/content/thumbnails/webpreview?c=force&no
    Cache=1379057691223&alf_ticket=TICKET_84046f178f7edf1947f414fa36e574f0aef8083d
    2013-09-13 09:36:55,767 INFO [webscripts.connector.RemoteClient] [http-bio-443-exec-4] Error status 408 Read timed out

    Muchas Gracias de antemano.

    Responder
  2. Cristina Martín

    El problema del timeout es que cuando intentas previsualizar ese excel, share manda la petición a Alfresco, y tarda más recursos en procesarla de lo que tienes tu asignado.

    Prueba a subir los valores: -Xms1G -Xmx3G

    Reinicias y me comentas.

    Un saludo!!

    Responder

Deja un comentario