Changer l'adresse host pour l'ecoute RMI en mode server

175 views
Skip to first unread message

Eudes Elie

unread,
Mar 13, 2009, 9:38:35 AM3/13/09
to JMeter en français
Hello,

Quand on souhaite avoir des tests distribués avec jmeter, on a besoin
d'un maitre et d'un ou plusieurs esclaves.
Les esclaves sont démarrés avec jmeter-server.bat (pour la partie
windows)

Le problème vient de l'appel fait par jmeter au RMI, dans l'actuelle
version on peut changer le port d'écoute (avec la variable
SERVER_PORT) mais pas le host.

Ce changement devrait arriver dans une version future car elle est
déja prise en compte sur la rev 745045 (avec l'ajout d'un nouveau
paramètre d'appel en mode server).

Pour ceux qui ont déjà tenter la manip y a t il une manip pour
contourner cette limitation avec la version 2.3.2 officielle ? L'idée
étant de ne pas avoir une version 'unstable'

Merci

Milamber

unread,
Mar 15, 2009, 5:26:26 AM3/15/09
to jmet...@googlegroups.com
Bonjour,

Si tu veux dire "changer l'adresse IP en écoute (LISTEN) sur un esclave"
pour ta question ? alors la réponse est que cela ne semble pas possible
avec RMI. Pour rappel, JMeter utilise le programme rmiregistry qui est
fourni avec Java/Jdk pour créer le serveur RMI de ton esclave.
Et quand on regarde les options de rmiregistry, on ne trouve que
l'option pour changer le port d'écoute.

Concernant la révision 745045, il ne s'agit pas de l'ajout de la
fonctionnalité d'adresse IP d'écoute du serveur RMI esclave. Elle
corrige un problème de prise en compte du paramètre
-Djava.rmi.server.hostname=Hostname_or_IP lors du lancement du script
jmeter-server (pour le RMI esclave, et que pour les machines unix).
Ce paramètre change, non pas l'adresse IP d'écoute (du 'bind') sur
l'esclave, mais change l'adresse (hostname ou IP) par laquelle ton
contrôleur (maître) va invoquer les appels Java (RMI) vers ton injecteur
(esclave).

Je connais pas le but de ta question, mais si c'est avoir plusieurs
injecteurs (esclaves) sur la même machine, alors tu peux envisager de
démarrer manuellement le rmiregistry (au lieu de laisser Jmeter le
faire), avec des ports différents.
Pour plus d'infos :
http://jakarta.apache.org/jmeter/usermanual/remote-test.html#detail_instructions

A+
Milamber


Le 13.03.2009 13:38, Eudes Elie a ecrit :

Eudes Elie

unread,
Mar 16, 2009, 4:20:27 AM3/16/09
to JMeter en français
J'ai pour le moment réussi à faire ce que je voulais mais pas de
manière propre (je vais donc creuser un peu pour pouvoir proposer la
solution plus tard).
L'idée était d'avoir un ordinateur maître pilotant plusieurs
ordinateurs distant esclaves.
Le maître possède une seule carte réseau sur la partie back office,
les esclaves possèdent deux cartes réseaux : une sur la patte back
office (pour communiquer avec la maître), une sur la patte front
office (pour l'injection vers les serveurs)

A présent j'ai d'autres problèmes de controlleur (qui s'exécutent bien
en local, mais pas en distant - enfin avec des erreurs de varaibles
- ... bref un autre point à creuser).


Eudes


On 15 mar, 10:26, Milamber <milambersp...@gmail.com> wrote:
> Bonjour,
>
> Si tu veux dire "changer l'adresse IP en écoute (LISTEN) sur un esclave"
> pour ta question ? alors la réponse est que cela ne semble pas possible
> avec RMI. Pour rappel, JMeter utilise le programme rmiregistry qui est
> fourni avec Java/Jdk pour créer le serveur RMI de ton esclave.
> Et quand on regarde les options de rmiregistry, on ne trouve que
> l'option pour changer le port d'écoute.
>
> Concernant la révision 745045, il ne s'agit pas de l'ajout de la
> fonctionnalité d'adresse IP d'écoute du serveur RMI esclave. Elle
> corrige un problème de prise en compte du paramètre
> -Djava.rmi.server.hostname=Hostname_or_IP lors du lancement du script
> jmeter-server (pour le RMI esclave, et que pour les machines unix).
> Ce paramètre change, non pas l'adresse IP d'écoute (du 'bind') sur
> l'esclave, mais change l'adresse (hostname ou IP) par laquelle ton
> contrôleur (maître) va invoquer les appels Java (RMI) vers ton injecteur
> (esclave).
>
> Je connais pas le but de ta question, mais si c'est avoir plusieurs
> injecteurs (esclaves) sur la même machine, alors tu peux envisager de
> démarrer manuellement le rmiregistry (au lieu de laisser Jmeter le
> faire), avec des ports différents.
> Pour plus d'infos :http://jakarta.apache.org/jmeter/usermanual/remote-test.html#detail_i...

Milamber

unread,
Mar 16, 2009, 4:12:32 PM3/16/09
to jmet...@googlegroups.com
Bonjour,

Pour cela : un injecteur avec deux cartes réseaux (une coté contrôleur et une coté serveur à tester), il y a une solution :

1/ utiliser des échantillons HTTP HTTPClient
2/ configurer dans le jmeter.properties (de chaque injecteur), la variable httpclient.localaddress en y mettant l'adresse IP de la carte sur le coté serveur à tester.

# Define the local host address to be used for multi-homed hosts
#httpclient.localaddress=1.2.3.4

A+
Milamber


Le 16.03.2009 08:20, Eudes Elie a ecrit :

Eudes Elie

unread,
Mar 17, 2009, 4:54:23 AM3/17/09
to JMeter en français
Bonjour,

it works fine :-)

Voici un récapitulatif pour les intéressés (dont moi ^_^).

Un pc maître (P.C.M.) avec une carte réseau sur la partie back office
(B.O.)
Un pc esclave (P.C.E.) avec une carte réseau sur la partie back office
(B.O.) et une carte réseau sur la partie front office (F.O.)

Note : si le pc maître possède aussi une carte réseau sur le FO (et
que cette carte est la premiere affichée dans les paramètres système)
les requêtes (normal) et les rapports (pas normal) passeront par la
partie FO => il suffit dans ce cas de désactiver la carte du PC maitre
sur la partie FO, qui de toute façon ne sert pas.

lancer jmeter-server sur P.C.E. en modifiant la ligne d'appel (issu
du .bat windows) :
- call jmeter -Dserver_port=%SERVER_PORT% -s -j jmeter-server.log
%JMETER_CMD_LINE_ARGS%
+ call jmeter -Dserver_port=%SERVER_PORT% -
Djava.rmi.server.hostname=xx.xx.xx.xx -s -j jmeter-server.log
%JMETER_CMD_LINE_ARGS%

où xx.xx.xx.xx est l'adresse B.O. du P.C.E.

On peut aussi le mettre en paramètre :
call jmeter -Dserver_port=%SERVER_PORT% -Djava.rmi.server.hostname=
%SERVER_IP_BO% -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS%
avec un set SERVER_IP_BO = xx.xx.xx.xx en début de fichier pour que ce
soit plus lisible

J'ai testé le paramètre httpclient.localaddress=1.2.3.4 dans le user/
jmeter.properties.
Cela fonctionne pour les samplers/échantillons HTTP mais aussi pour
les samplers/échantillons SOAP (pratique quand on a une carte réseau
avec plusieurs @IP)

Merci Milamber,
Eudes

Milamber

unread,
Mar 18, 2009, 3:24:01 AM3/18/09
to jmet...@googlegroups.com
Bonjour,

Merci pour ton retour, est-ce tu vois un inconvénient à que je l'ajoute en note supplémentaire dans cette page :
http://blog.milamberspace.net/index.php/jmeter-test-de-charges-a-distance-distributed-testing

A+
Milamber


Le 17.03.2009 08:54, Eudes Elie a ecrit :

Eudes Elie

unread,
Mar 18, 2009, 3:58:36 AM3/18/09
to JMeter en français
ah non au contraire :-)

On 18 mar, 08:24, Milamber <milambersp...@gmail.com> wrote:
> Bonjour,
>
> Merci pour ton retour, est-ce tu vois un inconvénient à que je l'ajoute
> en note supplémentaire dans cette page :http://blog.milamberspace.net/index.php/jmeter-test-de-charges-a-dist...
Reply all
Reply to author
Forward
0 new messages