|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 1 ![]() |
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 :
Rien de mes modifications ne semblent avoir un impact. Ai-je raté quelque chose ? |
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Julien EnochArchitecte technique Inscription : septembre 2006 Messages : 215 ![]() |
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:
et les modifier avec la commande: 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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com