Domanda

Ho un processo Java in esecuzione su una macchina remota, ed i set di processo fino alcuni MBeans. Ho anche jstatd in esecuzione su quella macchina come lo stesso utente come il processo di Java. (I MBeans possono essere impostati a livello di codice o utilizzando -Dcom.sun.management.jmxremote... ecc, questo non sembra fare la differenza).

VisualVM è in grado di effettuare una connessione jstatd al processo, che rileva automaticamente, ma questo significa che non ottengono l'accesso a MBeans o, per esempio, il grafico cronologico CPU. In alternativa è possibile creare una connessione JMX esplicita, che mi dà la consueta gamma di strumenti utili, ma voglio per l'applicazione da assegnare una porta JMX casuale quando si inizia, questa configurazione non può essere statico.

C'è un modo per ottenere VisualVM per la connessione automatica al mio processo tramite JMX? Ciò richiederebbe ad auto-scoprire le porte JMX, ma avrei pensato jstatd poteva farlo. Qualcuno sa di eventuali plugin per VisualVM per automatizzare questo?

È stato utile?

Soluzione

Purtroppo non c'è modo di assegnare porta JMX casuale all'applicazione remota. È possibile avviare l'applicazione remota con

-Dcom.sun.management.jmxremote.port=<fixed port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

e VisualVM sarà in grado di leggere questa configurazione tramite Jvmstat ( fornire da jstatd) e la connessione JMX aperta alla vostra applicazione remota automaticamente. Quindi è necessario assegnare porto fisso (s) per l'applicazione remota (s). Una volta che avete, tutto funzionerà bene e VisualVM automaticamente la connessione alla vostra applicazione tramite JMX (in realtà si combinerà i dati sia da Jvmstat e JMX).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top