web-dev-qa-db-fra.com

JMeter 4 - impossible d'exécuter jmeter-server sous Windows 7

Je télécharge le dernier JMeter 4, 

Dans le cadre de Test à distance

Pour exécuter JMeter sur un nœud distant, démarrez le composant serveur JMeter sur toutes les machines sur lesquelles vous souhaitez fonctionner en exécutant le script JMETER_HOME/bin/jmeter-server (unix) ou JMETER_HOME/bin/jmeter-server.bat (windows).

J'essaie d'exécuter jmeter-server.bat dans Windows 7 .__ et j'ai l'erreur suivante:

Server failed to start: Java.rmi.server.ExportException: Listen failed on port:
0; nested exception is:
        Java.io.FileNotFoundException: rmi_keystore.jks (The system cannot find
the file specified)
An error occurred: Listen failed on port: 0; nested exception is:
        Java.io.FileNotFoundException: rmi_keystore.jks (The system cannot find
the file specified)
errorlevel=1

Il semble qu'un fichier rmi_keystore.jks est manquant. (Je ne le trouve pas dans les dossiers JMeter)

Dans JMeter 3.3, jmeter-server.bat fonctionne.

EDIT 1

après avoir exécuté create-rmi-keystore.bat, il a créé rmi_keystore.jks, mais j'obtiens une autre erreur:

Server failed to start: Java.rmi.server.ExportException: Listen failed on port:
0; nested exception is:
        Java.io.IOException: Java.security.UnrecoverableKeyException: Cannot rec
over key
An error occurred: Listen failed on port: 0; nested exception is:
        Java.io.IOException: Java.security.UnrecoverableKeyException: Cannot rec
over key
errorlevel=1

erreur du journal:

2018-02-11 12:09:13,916 ERROR o.a.j.e.DistributedRunner: Failed to create engine at 127.0.0.1
Java.rmi.ConnectIOException: Exception creating connection to: 127.0.0.1; nested exception is: 
    Java.io.IOException: Java.security.UnrecoverableKeyException: Cannot recover key
    at Sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) ~[?:1.8.0_25]
    at Sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) ~[?:1.8.0_25]
    at Sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) ~[?:1.8.0_25]
    at Sun.rmi.server.UnicastRef.newCall(Unknown Source) ~[?:1.8.0_25]
    at Sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) ~[?:1.8.0_25]
    at org.Apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.Java:70) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.Java:83) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.Java:237) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.Java:213) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.engine.DistributedRunner.init(DistributedRunner.Java:93) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.Java:80) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.Java:88) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.Java:70) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.gui.action.ActionRouter$$Lambda$63/2068100669.run(Unknown Source) [ApacheJMeter_core.jar:4.0 r1823414]
    at Java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue.access$400(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_25]
    at Java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_25]
    at Java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_25]
Caused by: Java.io.IOException: Java.security.UnrecoverableKeyException: Cannot recover key
    at org.Apache.jmeter.rmi.SSLRMIClientSocketFactory.createSocket(SSLRMIClientSocketFactory.Java:110) ~[ApacheJMeter_core.jar:4.0 r1823414]
    ... 28 more
Caused by: Java.security.UnrecoverableKeyException: Cannot recover key
    at Sun.security.provider.KeyProtector.recover(Unknown Source) ~[?:1.8.0_25]
    at Sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source) ~[?:1.8.0_25]
    at Sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source) ~[?:1.8.0_25]
    at Java.security.KeyStore.getKey(Unknown Source) ~[?:1.8.0_25]
    at Sun.security.ssl.SunX509KeyManagerImpl.<init>(Unknown Source) ~[?:1.8.0_25]
    at Sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(Unknown Source) ~[?:1.8.0_25]
    at javax.net.ssl.KeyManagerFactory.init(Unknown Source) ~[?:1.8.0_25]
    at org.Apache.jmeter.rmi.SSLRMIClientSocketFactory.createSocket(SSLRMIClientSocketFactory.Java:103) ~[ApacheJMeter_core.jar:4.0 r1823414]
    ... 28 more
2018-02-11 12:09:24,368 INFO o.a.j.e.DistributedRunner: Failed to configure 127.0.0.1
2018-02-11 12:09:24,369 INFO o.a.j.e.DistributedRunner: Stopping remote engines
2018-02-11 12:09:24,370 INFO o.a.j.e.DistributedRunner: Remote engines have been stopped
2018-02-11 12:09:24,370 ERROR o.a.j.g.a.ActionRouter: Error processing org.Apache.jmeter.gui.action.RemoteStart@3249a1ce
Java.lang.RuntimeException: Following remote engines could not be configured:[127.0.0.1]
    at org.Apache.jmeter.engine.DistributedRunner.init(DistributedRunner.Java:112) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.Java:80) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.Java:88) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.Java:70) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.Apache.jmeter.gui.action.ActionRouter$$Lambda$63/2068100669.run(Unknown Source) [ApacheJMeter_core.jar:4.0 r1823414]
    at Java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue.access$400(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_25]
    at Java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_25]
    at Java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
    at Java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_25]

EDIT 2

J'ai essayé de changer server.rmi.ssl.keystore.password en mot de passe que j'ai écrit mais j'ai eu une erreur différente 

Server failed to start: Java.rmi.server.ExportException: Listen failed on port:
0; nested exception is:
        Java.io.IOException: Keystore was tampered with, or password was incorre
ct
An error occurred: Listen failed on port: 0; nested exception is:
        Java.io.IOException: Keystore was tampered with, or password was incorre
ct

EDIT 3

J'ai essayé de définir le port du serveur manuellement SET SERVER_PORT=1099 en fonction de référence mais j'essayais toujours d'écouter via le port 0

Sous Windows, cela peut être fait par: SET SERVER_PORT =

7
user7294900

Pour résoudre le problème, vous devez suivre:

Le problème était la réponse à la première question lors de l'exécution de create-rmi-keystore

Quel est votre prénom et votre nom?

J'aurais dû répondre rmi car c'est la valeur par défaut dans la propriété JMeter server.rmi.ssl.keystore.alias 

De plus (différence par rapport à JMeter 3.3), je devais modifier la propriété remote_hosts de JMeter afin qu'elle utilise mon nom d'hôte (modification de 127.0.0.1)

Ceci est lié à:

8
user7294900

Avait le même problème.

Pour le résoudre, vous avez plusieurs options:

  1. Définissez le mot de passe rmi-keystore sur changeit, comme décrit dans jmeter.properties:

    Mot de passe du magasin de confiance
    server.rmi.ssl.truststore.password = changeit

  2. Si vous utilisez un mot de passe personnalisé - ajoutez-le à user.properties sur la machine jmeter-server

  3. Désactiver SSL en passant -Jserver.rmi.ssl.disable=true

4
Denys Boiko

Ce qui a fonctionné pour moi (avec JMeter 5.0) était un fichier jmeter-server.properties dédié avec ces configurations: 

# Type of keystore : JKS
server.rmi.ssl.keystore.type=JKS
#
# Keystore file that contains private key
server.rmi.ssl.keystore.file=rmi_keystore.jks
#
# Password of Keystore
server.rmi.ssl.keystore.password=changeit
#
# Key alias
server.rmi.ssl.keystore.alias=rmi
#
# Type of truststore : JKS
server.rmi.ssl.truststore.type=JKS
#
# Keystore file that contains certificate
server.rmi.ssl.truststore.file=rmi_keystore.jks
#
# Password of Trust store
server.rmi.ssl.truststore.password=changeit

J'ai créé un fichier rmi_keystore.jks avec la commande create-rmi-keystore dans le dossier bin JMeter. Ensuite, j'ai démarré mon serveur avec jmeter-server -Gjmeter-server.properties. Consultez également le journal du serveur pour que le système d'extrémité connecte votre client au serveur en tant que user7294900 suggéré.

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[<this is your server>
2
cuh

J'ai fait face à tous les problèmes ci-dessus, jusqu'à ce que je trouve la solution, qui est la suivante:

  • L'erreur Java.security.UnrecoverableKeyException: Cannot recover key se produit lorsque les mots de passe keystore et keyEntry sont différents.

  • Pour résoudre ce problème, vous devez supprimer toutes les traces du certificat précédent et du fichier de demande.

  • Vous devez générer un nouveau keystore, keyEntry et CSR et spécifier le même mot de passe pour le magasin de clés et le keyEntry.

0
Saksham Bahati