Glassfish EM Performance Monitor - First Smoke Test
After the installation and launch of the Performance Monitor (see doc and some resources) I was somehow disappointed - it looks like VisualVM with a nice splash screen. Performance Monitor (PM) recognized my running Glassfish v2.1 instance - double-clicking on the instance opened a monitor-view - identical to the visualvm with CPU, heap, permgenspace, threads, loaded classes etc. The interesting part begins after connecting to GF using the JMX connection (e.g. localhost:8686).
It opens a tree-like view with the server as root node. You can activate the monitoring here for the following subsystems: ConnectorConnectionPool, ConnectorService, EJBContainer, HTTPService, JDBCConnectionPool, JMSService, JVM, ORB, ThreadPool, TransactionService, WebContainer.
Setting the monitoring configuration to "Low" should be enough. After activating the configuration and waiting for few seconds, you should see the nodes appearing under the root.
Now you get the opportunity to visualize the behavior of connection pools, thread pools, JMS connection factories, WebServices etc. and search for possible bottlenecks. This information is invaluable for every load and performance test - it reminds me of the LoadRunner's monitoring capabilities. All the information is also available through the JConsole - but is lot harder to analyze and corelate.
What I miss, hovewer, is the detail view of EJB behavior like method invocation count, slowest, fastest methods etc. This information is already available in the Call Flow monitoring, so it should be somehow accessible. I wasn't able to find monitoring information for a single destination as well, only for the corresponding ConnectionFactory.
Sun Glassfish Enterprise Manager Performance Monitor (SGEMPM a nice name :-)) is a commercial extension, only available with support. From my perspective its a fair decision to make the SGEMPF commercial. If you have no money but time, you can go with JConsole and try to correlate the information manually. And if you want to save time, you can buy support and get the tool for free :-). SGEMPM is also able to monitor clusters - which makes it interesting for "mission critical" applications.
Thanks for the review and the RFE's, Adam. Of course, this being the first release, we couldn't do everything. Even I need to sleep sometimes :)
If your GlassFish process running locally was not a domain server, that would explain why at first glance, "it looks just like VisualVM with a fancy splash screen". The expanded views are currently accessible through any GlassFish Domain server, local or remote (JMX or JMX/SSL). The domain view allows monitoring of the domain server as well as any server instances, clustered or not, managed by that domain.
Call Flow requires a more expensive monitor in GF 2.x so it was not utilized in this version. For the next version, I will be looking at Call Flow to see what seems useful. If there are specific use cases you think we can address here, please let me know.
Regarding JMS monitoring, was JMS monitoring enabled and was the connection you wanted to monitor in use / under load? If not, GlassFish may not have created a monitoring bean for it yet. Also, MDB message load is shown on the MDB graph for the receiving MDB, whereever it is. If this doesn't address what you were looking for, please describe what you were expecting?
P.S. It may look like VisualVM, but you will find there a number of little refinements across the tool that VisualVM does not have.
Posted by Peter Williams on April 01, 2009 at 11:27 PM CEST #
you are right - I just used my "Netbeans Glassfish", not a domain server.
Regarding JMS: I would expect the monitoring of e.g. the number of messages in each destination, not only the ConnectionFactories.
Regarding EJB: I would expect simple invocation statistics at method level (with visible method names). Callflow would be nice, but is not a high prio in my opinion.
I have to look at MDB - I didn't test it in my example...
But: KUDOs to you - the Performance Monitor is not only very useful - it looks really good. Great tool: the quality is amazing for the first version...
thank you for your feedback!,
Posted by Adam Bien on April 02, 2009 at 12:46 AM CEST #
i'm trying to get a clue here on what kind of value brings the performance monitor compared to Visual VM Glassfish plugin.
I have succesfully managed to monitor information like heap, garbage collection, http service, and managed to monitor the web applications under my local glassfish, and under my remote glassfish also.
Now i have two questions, for which i could not find any answer over the web:
1. Can i monitor enterprise applications only with the Performance Monitor ? I have tried deploying the local sample of clusterjsp, and monitor it in visualvm using the glassfish plugin, but it does not show up, so that makes me believe that the plugin is limited to showing web applications only.
2. Will the jdbc connection pool, jms, connector connection pool monitoring be enabled only in the Performance Monitor? Although i can set them in the Monitoring configuration of the Apllication Server, they do not show anywhere in the basic VisualVM.
Any help would be highly appreciated.
Posted by Alex on September 08, 2009 at 01:58 PM CEST #