Workflow et error 408 Read Timeout

cancel
Showing results for 
Search instead for 
Did you mean: 
amandine_b
Member II

Workflow et error 408 Read Timeout

Bonjour,

Je travaille actuellement sur une plateforme en Alfresco 4.2.f (migration d'une version 4.2.c) et je rencontre un problème d'erreur 408 Read Timeout.

Au démarrage du Tomcat, j'arrive correctement à lancer un workflow (invitation sur un site par exemple).
Au bout d'un moment indéfini et aléatoire, il devient impossible de démarrer un workflow quelque soit son type (envoi d'invitation, annulation d'invitation, démarrage d'un workflow comme "réviser et approuver"…).
Le problème disparaît au redémarrage du tomcat puis revient au bout d'un moment.

J'ai monté un autre environnement avec les mêmes WAR Alfresco et Share, la même base de données et la même configuration dans le alfresco-global.properties, et sur cette plateforme le problème n'est pas reproduit.

Lors d'un test, quand plusieurs invitations avaient échouées, j'ai réussi à débloquer la situation temporairement : En envoyant une commande wget sur l'URL ci-dessous, depuis le serveur d'Alfresco, Toutes les invitations en échec auparavant sont envoyées et le comportement redevient normal pour un temps.

Voici les logs de l'erreur 408 Read Timeout :

2015-06-22 09:12:21,772  INFO  [webscripts.connector.RemoteClient] [ajp-bio-8009-exec-7] Exception calling (GET) http://localhost:8080/alfresco/s/api/invite/cancel?inviteId=activiti%2410080&alf_ticket=TICKET_1a9da...
2015-06-22 09:12:21,786  INFO  [webscripts.connector.RemoteClient] [ajp-bio-8009-exec-7] Error status 408 Read timed out
java.net.SocketTimeoutException: Read timed out
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read(Unknown Source)
   at java.net.SocketInputStream.read(Unknown Source)
   at java.io.BufferedInputStream.fill(Unknown Source)
   at java.io.BufferedInputStream.read(Unknown Source)
   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.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.springframework.extensions.webscripts.connector.RemoteClient.service(RemoteClient.java:1054)
   at org.springframework.extensions.webscripts.connector.RemoteClient.call(RemoteClient.java:708)
   at org.springframework.extensions.webscripts.connector.HttpConnector.call(HttpConnector.java:143)
   at org.springframework.extensions.webscripts.connector.AuthenticatingConnector.call(AuthenticatingConnector.java:293)
   at org.springframework.extensions.webscripts.servlet.mvc.EndPointProxyController.handleRequestInternal(EndPointProxyController.java:326)
   at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
   at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
   at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
   at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
   at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
   at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
   at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
   at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
   at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
   at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at fr.boll.alfresco.CasAuthenticationFilter.doFilter(CasAuthenticationFilter.java:128)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:93)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at com.atolcd.alfresco.ProxyAuditFilter.doFilter(ProxyAuditFilter.java:434)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
   at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)

Avez-vous des idées, ou n'importe quelle piste qui vous viendrait à l'esprit ?

Merci d'avance,

Cordialement
4 Replies
ycoulon
Alfresco Employee

Re: Workflow et error 408 Read Timeout

Bonjour,

Le timeout vient de l'application Alfresco qui ne répond pas à temps à Share.
Y-a-t-il des erreurs dans les logs alfresco lorsque le problème est présent ?
Tu parles d'une migration depuis une 4.2.c vers une 4.2.f, as-tu des développements spécifique relatifs au workflows ?
amandine_b
Member II

Re: Workflow et error 408 Read Timeout

Tout d'abord merci pour votre réponse !

Non, pas d'autres traces dans les logs avant ou après le Timeout.

Pas de développements spécifiques sur les workflows. Voici la liste des workflows définis sur ma plateforme :

id: activiti$activitiAdhoc:1:4 , name: activiti$activitiAdhoc , title: Nouvelle tâche , version: 1
id: activiti$activitiInvitationModerated:1:23 , name: activiti$activitiInvitationModerated , title: Invitation - Modérée , version: 1
id: activiti$activitiInvitationModerated:2:1503 , name: activiti$activitiInvitationModerated , title: Invitation - Modérée , version: 2
id: activiti$activitiInvitationNominated:1:26 , name: activiti$activitiInvitationNominated , title: Invitation à un site - Nominative , version: 1
id: activiti$activitiInvitationNominated:2:1506 , name: activiti$activitiInvitationNominated , title: Invitation à un site - Nominative , version: 2
id: activiti$activitiParallelGroupReview:1:20 , name: activiti$activitiParallelGroupReview , title: Réviser et approuver en mode groupe , version: 1
id: activiti$activitiParallelGroupReview:2:1517 , name: activiti$activitiParallelGroupReview , title: Réviser et approuver en mode groupe , version: 2
id: activiti$activitiParallelReview:1:16 , name: activiti$activitiParallelReview , title: Envoyer un (des) document(s) pour révision , version: 1
id: activiti$activitiParallelReview:2:1513 , name: activiti$activitiParallelReview , title: Envoyer un (des) document(s) pour révision , version: 2
id: activiti$activitiReview:1:8 , name: activiti$activitiReview , title: Réviser et approuver , version: 1
id: activiti$activitiReviewPooled:1:12 , name: activiti$activitiReviewPooled , title: Réviser et approuver en mode partagé , version: 1
id: activiti$publishWebContent:1:29 , name: activiti$publishWebContent , title: Processus Activiti de publication de contenu Web , version: 1
id: activiti$publishWebContent:2:1509 , name: activiti$publishWebContent , title: Processus Activiti de publication de contenu Web , version: 2
ycoulon
Alfresco Employee

Re: Workflow et error 408 Read Timeout

Bonjour,

Tu peux essayer d'augmenter la valeur de timeout utilisé par le composant RemoteClient. Pour effectuer cela tu peux jeter un oeil à l'article suivant : http://niketa-alfresco3.blogspot.fr/2013/12/alfresco-share-webscript-connection.html

Quelles sont les caractéristiques de la machine hébergeant l'alfresco ?

Yann
amandine_b
Member II

Re: Workflow et error 408 Read Timeout

J'ai déjà essayé d'augmenter le timeout en suivant les explications du lien mais cela n'a rien donné.

La machine est sur Red Hat Enterprise release 6.5.
Le tomcat utilisé est en version 7.0.42, la version de java est 7.0_25.
La base de données est une PostgreSQL version 8.4.13.

Les options mémoires de la JVM sont les suivantes :

-Xms512m
-Xmx3072m
-XX:PermSize=128m
-XX:MaxPermSize=256m