Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > CORBA
CORBA Forum d'entraide et de discussion sur le développement distribué avec CORBA & les ORB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2011, 16h49   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 1
Points : 0
Points : 0
Par défaut timeout appel depuis Java vers serveur avec omniORB

Bonjour,

je dispose d'un serveur Corba développée en C++ avec omniORB. De l'autre, le client est développée en Java.

Mon problème est que lorsque le serveur est déconnecté du réseau, le timeout d'un appel met très longtemps à intervenir (de l'ordre de 15mn). Je cherche donc à modifier la valeur pour revenir à quelque chose de plus faible (de l'ordre de 1mn).
Dans le code Java, j'ai les appels suivants :
Code :
1
2
3
props.setProperty("org.omg.CORBA.ORBtimeOut", "xxx" ); 			 
props.setProperty("org.omg.CORBA.ORBtcpTimeOut", "xxx" );
J'ai également modifié la config omniOrb est définissant serverCallTimeOutPeriod et clientCallTimeOutPeriod à la fois sur la machine du client et la machine du serveur.

Rien de mes modifications ne semblent avoir un impact.

Ai-je raté quelque chose ?
jeromemartin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 15h24   #2
Membre confirmé
 
Homme Julien Enoch
Architecte technique
Inscription : septembre 2006
Messages : 215
Détails du profil
Informations personnelles :
Nom : Homme Julien Enoch
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Architecte technique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2006
Messages : 215
Points : 291
Points : 291
Bonjour,

les ORBs se basent souvent sur l'état du socket TCP pour superviser la connexion du client au serveur. Or il arrive que des déconnections réseau ne soient pas détectées tout-de-suite par l'OS. Et donc le socket trompe l'ORB en lui indiquant que la connexion est toujours OK.
Ces cas de déconnections finissent par être détectés par l'OS après par un mécanisme TCP assez long (à base de messages de contrôles ré-émis plusieurs fois à un intervalle assez long) qui par défaut prend effectivement de l'ordre de 15 min.

Il est possible de modifier la configuration de l'OS (côté client) pour réduire ce temps.
Sous Linux, cela se fait en jouant sur les paramètres kernel suivants:
  • net.ipv4.tcp_syn_retries
  • net.ipv4.tcp_fin_timetout
  • net.ipv4.tcp_retries2
Tu peux voir leur valeur avec la commande:
Code :
sysctl net.ipv4.tcp_retries2
et les modifier avec la commande:
Code :
sysctl -w net.ipv4.tcp_retries2=xxx
Pour un temps de détection de l'ordre de la minute, diminuer la valeur de tcp_retries2 devrait suffire.

Pour plus d'info:
http://www.linux-france.org/prj/inet...l.obscure.html
CorbAddict est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h54.


 
 
 
 
Partenaires

Hébergement Web