Je suis nouveau sur Java et je suis confronté à un problème de connexion d’un hôte distant à la JVisualVM
.
J'ai effectué des recherches sur Internet et suivi toutes les étapes mentionnées, mais je ne parviens toujours pas à résoudre le problème. Les étapes que j'ai suivies sont:
J'ai démarré jstatd sur le serveur distant en créant d'abord un fichier jstatd.all.policy
dans le $Java_HOME/bin
. Le fichier contient: grant codebase "file:${Java.home}/../lib/tools.jar" { permission Java.security.AllPermission;};
J'ai commencé la Jstatd
en tant que jstatd -J-Djava.security.policy=jstatd.all.policy
J'ai démarré l'application Java sur l'hôte distant en tant que:
Java -Dcom.Sun.management.jmxremote -Dcom.Sun.management.jmxremote.port=9000 -Dcom.Sun.management.jmxremote.ssl=false -Dcom.Sun.management.jmxremote.authenticate=false application_name
J'ai ensuite démarré en tant qu'instance de la variable JVisualVM
sur mon ordinateur local et, lorsque j'ai ajouté l'hôte distant, la connexion s'est établie, mais je n'ai pas été en mesure de voir aucun des processus Java.
Quelqu'un peut-il m'aider s'il vous plaît avec cela.
Merci.
Vous devez démarrer jstatd avec l'option supplémentaire qui pointe vers l'adresse IP externe ou le nom d'hôte du serveur:
statd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=my_server_ip/hostname
Réponse basée sur: https://Java.net/projects/visualvm/lists/users/archive/2010-03/message/8
Pour vous connecter à un VM distant, vous devez démarrer ce VM distant avec des options spécifiques:
Java
-Dcom.Sun.management.jmxremote
-Dcom.Sun.management.jmxremote.port=9000
-Dcom.Sun.management.jmxremote.ssl=false
-Dcom.Sun.management.jmxremote.authenticate=false
class
Une fois le VM démarré, accédez à votre VisualVM et procédez comme suit:
Plus de détails sur la la plate-forme Java de surveillance et de gestion peut être trouvée ici .
Démarrez jstatd in Nohup sur le serveur qui doit être surveillé et connectez VisualVM
au port jstatd en procédant comme suit:
Étape 1: Créez start-jstatd.sh
et copiez le contenu ci-dessous:
Nohup jstatd -p 1099 -J-Djava.security.policy=<(echo 'grant codebase "file:${Java.home}/../lib/tools.jar" {permission Java.security.AllPermission;};') &
Step 2: Donnez l'autorisation d'exécution au fichier:
$ chmod a+rwx start-jstatd.sh
Étape 3: Démarrer jstatd:
$ sh start-jstatd.sh
Étape 4: Ajouter un hôte distant dans VisualVM
:
Étape 5: Ajoutez Connexion JMX au hôte distant, comme indiqué dans l'image ci-dessous et cliquez sur le bouton OK:
Voici les étapes à suivre:
mvn exec:Java -Djava.rmi.server.hostname=<remote_Host_name> -Dexec.args="-pr 1099 -ph 1100 -pv 1101"
(utilisé pour une connexion de type "jstatd") (spécifiez uniquement -Djava.rmi.server.hostname
si le nom d’hôte de votre hôte distant ne correspond pas à celui que vous voyez actuellement votre réseau local)-Dcom.Sun.management.jmxremote -Dcom.Sun.management.jmxremote.ssl=false -Dcom.Sun.management.jmxremote.authenticate=false -Dcom.Sun.management.jmxremote.port=1102 -Dcom.Sun.management.jmxremote.rmi.port=1102 -Djava.rmi.server.hostname=<remote_Host_name>
(utilisé pour une connexion de type "JMX") (même remarque que le point précédent pour -Djava.rmi.server.hostname
)1099
, 1100
, 1101
et 1102
1099
, vous pouvez le modifier dans les "Paramètres avancés").<remote_Host_name>:1102
" dans l'entrée "Connexion", puis cochez la case "Ne nécessite pas de connexion SSL".Disclaimer: Je suis l'auteur de l'open source ejstatd tool.