Performance and scalability: Scalable java performance monitoring tool
This has been posted before in this forum, but I did not find any satisfactory answers.
- Posted by: Kartik Raghavan
- Posted on: November 28 2005 20:04 EST
Looking for a monitoring and diagnostic tool to use during load tests in our QA and pre-production environments.
There are several types of problems which appear only after sustained usage in production or load testing such as
- Increased memory footprint
- Intermittent slowdowns with increasing response times
We use JProbe and Optimizeit in our development environments and for unit testing and profiling.
However their overhead does not permit them to be used in the the load tests.
Any suggestions for tools which can track resource and memory consumption by process/request/method?
- Scalable java performance monitoring tool by ANKUSH BORSE on November 29 2005 13:41 EST
- Scalable java performance monitoring tool by Virag Saksena on November 30 2005 17:47 EST
- Scalable APM Tool for Distributed/Transactional Java Apps by William Louth on December 08 2005 19:41 EST
- Scalable java performance monitoring tool by Clay Roach on January 05 2006 16:24 EST
- Scalable java performance monitoring tool by Irakli Nadareishvili on January 11 2006 15:54 EST
- Scalable java performance monitoring tool by Ian Schumacher on January 13 2006 11:30 EST
- Try using JAMon by Balachander Nandagopal on March 07 2006 06:06 EST
- OPNET Panorama for Java/J2EE application performance or QA/test by Jamie Wetzel on May 16 2006 17:30 EDT
- awesome jvm monitor by James Mal on September 29 2010 15:20 EDT
- Scalable java performance monitoring tool by Stacey Laurence on March 27 2011 05:42 EDT
- Re: Scalable java performance monitoring tool by Preeti Shenoy on April 05 2011 08:25 EDT
I am using Wiley Introspect and e-jTechnologies JProfiler for my WebSphere Portal applications.
Both tracks resource and memory consumption by process/request/method. I would suggest to use Wiley Introspect in QUAL/Pre-PROD (Staging) environment as it is non-intrusive. While I would use ejTechnologies JProfiler in DEV environment as it uses JVMPI attaching to JVM process.
Hope this helps...
I've used Wiley Introscope before on WebSphere and Weblogic app servers. Simply fantastic tool. Highly recommended.
OptimizeIt, you CAN trim down things it monitors. For just GC collections, I've used just jvmstat bundled with java 5. Many JMX monitoring tools are also available.
Nice thing about Wiley (Especially in regards to WebSphere) are the canned reports for things like SQL statements, external calls, etc.
Try the eG Java Monitoring tool - see http://www.eginnovations.com/web/java-monitoring.htm
Low overhead, works with any J2EE application server or standalone applications. An online demonstration is available at http://www.eginnovations.com
You can try Auptyma's Java Application Monitor.
It is a direct memory sampling tool which does not use bytecode instrumentation/JVMPI/JVMTI. So it is very low overhead. There is a free trial available for Linux and Solaris.
You should really check out JXInsight which was recently tested alongside other APM solutions for one of the biggest EJB/CORBA based applications in Europe that powers the postal sorting distribution system. JXInsight was the only solution found to NOT crash the application servers or introduce an unacceptable performance overhead.
JXInsight has one of the most impressive performance visualization management consoles. Our extensible trace API has integrations for many technologies and products. HP OpenView has used the extensibility of the product to deliver a distributed tracing and profiling solution for their next generation products starting with HP OpenView ServiceDesk 5.0 which was only just announced this week. By integrating their own tracing framework with ours they deliver a powerful management console to all SD 5.0 customers.
Performance Insight Articles:
JXInsight Product Architect
"J*EE tuning, testing and tracing with JXInsight"
Try Mercury's Diagnostics tools. They have a range of diagnostics tools for development, testing (including LoadRunner integrations), and production monitoring. You can download a free version of their development profiler from http://www.mercury.com/us/promotions/diagnostics-profiler-trial.html
Note that this is free for development purposes. For production monitoring, they have another tool that is a bit more feature-rich than their development version. Feel free to contact me directly if you'd like more info.
Nor as full featured, maybe, but works with most JDKs and has really low overhead. Very simple to use, too.
There is this one -- http://simple-software.ca/rtmon.jsp
refer to www.jamonapi.com
The Java Application Monitor (JAMon) is a free, simple, high performance, thread safe, Java API that allows developers to easily monitor production applications. JAMon can be used to determine application performance bottlenecks, user/application interactions, track application scalability, and more. JAMon 1.0 gathers aggregate performance statistics such as hits, execution times (total, average, minimum, maximum, standard deviation), as well as concurrency information such as simultaneous application requests
Only looking at the app server? Why? Does it exist in a vaccuum? no, nothing does. OPNET's Panorama provides statistical correlation on performance changes across tiers, taking the heavy lifting of "manual analysis" out of the equation for you. how do you know if db issues are the cause or symptom of performance changes you see on your app server? is there a particular or JSP/servlet that is consuming more resources on one system and having a trickle effect across your end-to-end environment? Panorama is the only solution currently available tha provides a "holistic" look at the application and its moving parts. www.opnet.comhttp://www.opnet.com/products/panorama/ Jamie jwetzel at opnet dot com 760.510.1787
Based on the analysis of these metrics, the eG Java Monitor gives you a comprehensive view of the activities within a JVM:
- It lets you see which threads are running in the JVM and what state they are in (such as runnable, blocked, waiting, timed waiting, deadlocked, or high CPU)
- You also have access to a stack trace for each thread showing class, method, and line of code (to troubleshoot problems down to the line of code level)
- And you can monitor the performance of garbage collection processes, CPU and memory usage, and JVM restarts.
Diagnosing a high CPU problem in a Java application down to the
The monitoring can be done in an agent-based or an agentless manner. Adminstrators get to choose which approach works for them. A single agent can monitor all the JVMs running on a system. Licensing for the monitoring solution is by the number of servers monitored and not based on the number of applications monitored.
code level using the eG Java Monitor
Metrics regarding the performance of the JVM are collected in real-time and stored in a relational database for later analysis. The historical data and reports are ideal for post-mortem diagnosis and pin-pointing where the root-cause of a problem lies. At the same time, the real-time metrics are analyzed and alerts generated as and when problems occur.
I’ve used a tool called ClearStone, which used to be based on Oracle Coherence (a high-performance data grid) so it can scale up to support very large environments. I think now they are based on Cassandra and Neo4j. Anyway it is the only Java monitoring tool I know that is built for large systems from the ground up, worth checking out.
Java Interactive Profiler can be used. I have used this to track the profiling information of a webapplication.
I have used Introscope - Wiely , which is very good and comparatively light weigth tool for using in load testing environment. its also used in many production environments - it supports lots of metrics which u can use to identify performance /memory problems.