Dans cet article


Offres d'emploi

Tags

Planisware 5 : gestion des timeouts lors des traitements longs en client léger

Planisware 5 : gestion des timeouts lors des traitements longs en client léger

Description du problème

Piste de résolution n°1 : améliorer les performance du traitement

Piste de résolution n°2 : utiliser l'instruction OJS “withmonitoring()”

withmonitoring(true)
{
   //script du traitement
}

Piste de résolution n°3 : modifier la valeur des timouts Apache / Planisware

Cette dernière piste ne doit être utilisée qu'en dernier recours. Elle consiste à modifier la valeur des timouts Apache et/ou Planisware pour éviter que la requête envoyée au serveur n’échoue à cause d'un timeout.

Localisation des paramètres de timeout :

 

Voici leur description :

<td >
  <em><strong>Description</strong></em>
</td>
<td >
  Ce d&eacute;lai en minute est utilis&eacute; pour supprimer les applets qui n'ont pas &eacute;t&eacute; utilis&eacute; au dela d'une certaine p&eacute;riode. Ce param&egrave;tre est utile pour&nbsp; lib&eacute;rer les ressources du serveur des sessions qui ne sont plus utilis&eacute;es et qui n'ont pas fait l'objet d'une d&eacute;connexion de l'utilisateur
</td>
<td >
  Ce d&eacute;lai est le d&eacute;lai maximum utilis&eacute; lorsque l'applet Java envoie une requ&ecirc;te au serveur OPX2, si ce d&eacute;lai est expir&eacute; l'applet abandonne la requ&ecirc;te et envoie un message &agrave; l'utilisateur
</td>
<td >
  Ce d&eacute;lai est le d&eacute;lai maximum que le serveur doit attendre lorsqu'il envoie une requ&ecirc;te &agrave; l'applet JAVA. Si le d&eacute;lai est expir&eacute; le serveur abandonne la requ&ecirc;te en cours mais n'envoie pas de message &agrave; l'utilisateur. (si le d&eacute;lai est expir&eacute; cela signifie que la communication avec l'applet n'est plus possible)
</td>
<td >
  &nbsp;
</td>
<td >
  &nbsp;
</td>
<td >
  &nbsp;
</td>

 

Exemple d'erreur Apache présente dans le fichier de log error.XXXXX :

[Tue Mar 12 10:50:59 2013] [error][client XXX.XXX.XXX.XXX] 
(70007)The timeout specified has expired: Timeout(400000000) 
reading HTTP retcode from server 127.0.0.1:8400\n

<span que l'on retrouve dans les fichiers de configuration Apache (par exemple httpd.conf).

Timeout 400

Attention : si ce timeout se déclanche avant les autres timeouts Planisware l'applet Planisware va planter car il va perdre sa connexion au serveur. On n'aura aucune erreur côté serveur. Après un message d'erreur dans la console java l'applet va être relancé pour établir une nouvelle session avec le serveur.

[2013/03/04 16:34:05.473 (TN=1153)]** HTTP Request url : http://my_server:8000/BASE_DEV/OPX2/localhost:8401/ottp
[2013/03/04 16:38:05.586 (TN=1153)]ERR : DEB(Thread[Planisware GetInputStreamThread,4,http://my_server:8000/BASE_DEV/java/-threadGroup]):GetInputStreamThreadExceptionin GetInputStreamThread.run in while
[2013/03/04 16:38:05.586 (TN=1153)]Server returned HTTP response code:500 for URL: 
http://my_server:8000/BASE_DEV/OPX2/localhost:8401/ottp
java.io.IOException: Serverreturned HTTP response code: 500 for URL: 
http://my_server:8000/BASE_DEV/OPX2/localhost:8401/ottp
      at sun.net.www.protocol.http.HttpURLConnection.getInputStream(UnknownSource)
      at opx2.Opx2HTTPConnection.getDecodedInputStream(DialogServerRunnable.java:1241)
      at opx2.GetInputStreamThread.run(DialogServerRunnable.java:1477)
[2013/03/04 16:38:05.587 (TN=1153)]java.runtime.name : Java(TM) SE RuntimeEnvironment
[2013/03/04 16:38:05.587 (TN=1153)]java.vm.name : Java HotSpot(TM) ClientVM
[2013/03/04 16:38:05.587 (TN=1153)]java.quick.starter : <
no value>

 

Modification temporaire des timeout Planisware :

Exemple de modification temporaire du timeout de l'applet Java (code OJS) :

context.APPLET_TIMEOUT = 300;&nbsp;

L'équipe AXOPEN

Voir aussi les articles suivants

Bonnes pratiques de versionning des scripts OJS

Bonnes pratiques de versionning des scripts OJS

Le 11/12/2012 par Thibault Gonin

Introduction Les objets de paramétrage P5 de type « scripts » sont plus facilement versionnables que les autres objets. En effet il est recommandé de synchroniser leur contenu (champ DATA) avec des fichiers textes contenant le script OJS (pour OPX2 JavaScript). Cette synchronisation est réalisée via le formulaire de l’objet script P5.  Pour cela il suffit de sélectionner le fichier et de l’ouvrir. Ensuite synchroniser le contenu du script avec le fichier sélectionné en cliquant sur « Vérifier », le message suivant s’affiche alors :
Lire l'article

Description Lorsque l’on travaille sur des objets scripts OPX2 au bout d’un certain nombre de vérifications/exécutions des scripts il arrive fréquemment que le client lourd P5 affiche un message d’erreur. du type suivant : Cause Il s’agit globalement d’un problème de saturation mémoire car le client lourd présente des difficultés à libérer/recycler la mémoire RAM utilisée. Résolution La solution la plus simple et la plus radicale est de réaliser les opérations suivantes :
Lire l'article

Scripting OJS : comment générer la documentation OPX2 Script ?
Il est possible de générer en client lourd la documentation OPX2 Script (sous forme de rapport HTML). Pour cela il suffit de se connecter à l’application en client lourd, puis de cliquer sur le menu _? > Documentation OPX2 script _ <p id="caption-attachment-1268" class="wp-caption-text"> Outil de génération de la documentation OPX2 Script </p> </div>  Voici un extrait de la documentation OPX2 Script :  Cet utilitaire est particulièrement utile pour lister les fonctions OJS utilisables dans le langage OPX2 Script.
Lire l'article