I've got two remote servers, both running recent CentOS, both running recent Tomcat6, recent JDK6, and VisualVM 1.3.2.
ssh -X forwarding works on one server - I can start up VisualVM from that machine, it port forwards and runs fine - I see all the JVM processes running on that remote machine as 'local' in VVM.
ssh -X forwarding on the second machine - then running VisualVM - brings up an X windows with VVM in it, but it just shows one 'local' process - the VisualVM itself - and the lower right corner has a bouncing progress bar that says "computing description", and it never ends.
I can't find anything about this anywhere - anyone ever hit this? How do I get past this?
Java VisualVM is a tool that provides a visual interface for viewing detailed information about Java applications while they are running on a Java Virtual Machine (JVM), and for troubleshooting and profiling these applications.
What is VisualVM. It is a tool automatically available after JDK is installed. The executable file could be found on your <JDK installation folder>/bin as displayed below. In order to measure the performance of your application, it is necessary for the application to be recognized by VisualVM first.
VisualVM takes application monitoring one level deeper than JConsole by allowing the user to analyze thread execution as well as the ability to profile CPU and memory usage of JVM requests, both of which are triggered manually by the user.
Connecting to a Remote Host To add a remote host, right-click the Remote node in the Applications window, choose Add Remote Host and type the host name or IP address in the Add Remote Host dialog box. (You can also specify a display name that will be used to refer to the host when listed under the Remote node.)
I experienced a similar issue - VisualVM hanging on "computing description", not displaying any local JVMs other than itself. I used "jps" to find all the JVMs running on the system. Used jstack to get the stacks of all those JVMs, including JVisualVM itself. What I found was happening, was that JVisualVM was trying to create an RMI connection to one of the target VMs, and that VM was hanging on the RMI connection attempt. In my case, the reason why it hanged was that I had the JVisualVM profiler attached to that JVM, but JVisualVM then died with a PermGen OOM. Parts of the profiler were still running in the target JVM, but were hanging due to lack of the profiler frontend; thus any attempt at class loading would hang, which would cause the incoming RMI from the new JVisualVM instance to hang also. Restarting the affected JVM resolved the issue.
Without any thread dumps, I can't say whether your issue was anything like mine or not; but if anyone gets this problem again, collecting thread dumps is a good idea. Whatever the root cause is, restarting all JVMs on your box (e.g. reboot) has a reasonable chance of solving it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With