News: JXInsight 3.2 released – distributed tracing for J2EE
JInspired has released JXInsight 3.2.
- Posted by: Joseph Ottinger
- Posted on: April 28 2005 11:51 EDT
Debugging J2EE performance issues is often not a matter of simply optimizing a given piece of code. Often, the component interactions – for example, using JDBC to talk to a database, or issuing a JMS message – introduce resource contentions or performance problems that are very difficult to trace.
JXInsight provides a view into the performance of a J2EE application across component boundaries, by providing a trace of usage of J2EE components such as JTA, JMS, JDO, JDBC, and java.util.logging. The trace is presented via a GUI with event types, occurrences, clock times, and other information as appropriate, including information from distributed servers.
- Pricing? by Gerald Nunn on April 28 2005 13:38 EDT
- Application Profiling: Concurrency Analysis by William Louth on April 29 2005 08:51 EDT
- Some questions by Gerald Nunn on April 29 2005 15:00 EDT
- Re: Some questions by William Louth on April 29 2005 17:10 EDT
- Anwsers by William Louth on April 30 2005 12:14 EDT
What's the basic pricing for this as the website has no mention of it beyond the typical "contact us" blurb that is so irritating these days.
I believe it is farily resonably priced compared to some of the other alternatives in the market. I have seen it advertised in the sub-$10k area and on the website it says:
"...while providing 10 times more contextual information at a price 10 times less expensive (5,000 vs 50,000 USD)."
I'm sure William can comment on this better than I can though.
clay at j2ee911 dot com
I would like to inform you that our pricing information was removed from the website so that we could better understand what constitutes an acceptable market price for our product, add-ons and services as well as filtering out those individuals who have no intention of paying for the product.
Various magazines have listed our pricing alongside product announcements. We have for a long time offered easy access to the downloads but recently took steps to limit abuses. JXInsight is simply too effective at finding issues making itself obsolete rather quickly, at least until the next batch of new development code is added to a customers codebase. We have had companies repeatable download the latest evaluations without ever contacting us regarding a purchase.
Because contact has to be made regarding pricing we can assume that they find the product worthwhile and the only question left is whether the price is inline with expectations. You can never assess this with pricing listed.
I hope you can understand the business aspect to this. The pricing is pretty straight forward.
Workstation (Single CPU Machine - unlimited processes)
3,000 USD (2-4 CPU)
500 USD per additional CPU
We also provide custom extensions and classifications to customers. For example we recently provided a tracing extension to HP OpenView's next generation management platform that can trace calls from their unified console (Swing app) to a cluster of application server like processes collecting a wealth of information including transactions, RPC, model meta data, trace stack, SQL, security, auditing and logging.
Compared to pricing from WilyTech, Quest, Borland and Identity we are very reasonably priced for all phases of the project (design, development, testing, pre-production, and production). I believe you would be talking to sales guys about pricing 6-7 digit range.
"J2EE tuning, testing and tracing with JXInsight"
Thanks for the detailed reply William, I appreciate it.
"JXInsight is great product by great people"
Finally, we are chosen JXInsight; it has a many advanced features; fast analysis of transaction, SQL statements, JDBC resource status, thread & objects, JVM metrics.
And also, is highly competitive and flexible software pricing strategy.
NEXT, APM (Application Performance Management) market keyword is Fast, Intelligent, Smart Agent, and Automated Detection etc...
I love JXInsight and inspired man.
This posting is a follow-up to previous postings I recently made on TSS regarding Software Performance Engineering (SPE) and on "who should profile".
As stated in my postings a very valuable (and unique) feature of JXInsight is concurrency analysis at the transaction, database, sql or table level. This is presented in the timeline analysis mode within the console.
To really do justice to what we provide in this area I have taken a recent customer issue and created some screenshots of one visual graphic within the console that I hope will provide an insight into the importance of measuring transaction and SQL executions under production loads and how DB access plain tools are not sufficient in capturing real-world scalability issues.
Please read: http://www.jinspired.com/products/jdbinsight/concurrency.html
JXInsight Product Architect
"J2EE tuning, testing and tracing with JXInsight"
I usually recommend Wily's Introscope to clients who are looking for this sort of thing but it does cost an arm and a leg so I'm always on the lookout for cheaper alternatives for price sensitive clients. I downloaded a copy of this and had a couple of questions as follows:
a. Is there a transaction tracer type facility like in Introscope where you can have the tool flag all transactions that take longer then x seconds for later review? This is probably the feature I use the most in Wily and would miss it greatly if not present.
b. I find the timeline UI to be difficult to follow compared to introscope since the graph overlays all thread activity instead of stacking them on top of each other like Introscope does. Is it possible to get this view in JXInsight?
Otherwise nice tool and I'll keep it in mind for the future.
I am somewhat surprised to hear that you recommend Wily's Introscope after your first posting about our inaccessible pricing details. I think it is nearly impossible to get a sales quote with evaluation software from WilyTech without first having a sales representative visit you in person.
WilyTech does not even offer a downloadable demo version, all you are left with is some screenshots from the website which to a trained graphical person implies the tool is littered with "chart junk" (read Edward Tufte). What purpose can all those large graphical icons and extraneous elements serve in understanding performance data? There are void of any real value - at least in terms of data analysis.
WT = WilyTech
Answer to Question [b]
First off it is important to distinguish a WT transaction from resource transaction. As far as I can tell WT does not offer any resource transaction analysis. A WT transaction is simply a rooted component trace tree. JXInsight provides support for both component traces and resource transactions (tx paths).
For those readers unfamiliar with the WT tool here is a screenshot of its transaction tracer:
Here is JXInsight's Timeline Transaction Analysis screenshots:
I think most would aggree that we are really not comparing like with like.
WT's graphic does NOT show all of the following in a single view:
Inter VM component traces
Resource transactions intervals
SQL statements (color encoded based on type)
Database concurrency levels
SQL statement concurrency levels
Thread monitor waiting and blocking times
Object allocation counts
One of the screenshots above was drawn based on small production time window that consisted of more than 200,000 invocation events. The ratio of ink to data for JXInsight visualizations is unmatched in the J2EE performance management industry.
I would not recommend any performance solution that did not offer at least half of what we provide today. To even not include GC events in any production measurement is misleading and offensive to a qualified performance engineer. For production systems you do want to know what was happening in the JVM at the time a transaction slowed down. Did a GC event occur? Was the contention on a particular table high at a particular moment?.....
I am not saying that JXInsight includes all event data. We do make a cost benefit analysis for any additional processing and data collection.
Our timeline analysis is trying to solve the hard problems in high performance systems.
"Is it possible to get this view in JXInsight?"
We have already designed an innovative visualization around traces and paths but at this moment we are trying to remove the "Matrix" like graphical qualities of the solution. I am sure we can simplify our solution to meet your needs.
By the way you should recommend the right solution to your clients and it should NOT be based on a price differences.
"J2EE tuning, testing, tracing with JXInsight"
Answer to Question [a]
"Is there a transaction tracer type facility like in Introscope where you can have the tool flag all transactions that take longer then x seconds for later review?"
I think you will find that we have covered this in the product since its initial inception but in a much better way. JXInsight (JDBInsight) by default records transaction path patterns (sequences with global and local loop compression) aggregating a list of metrics for each unique instance. There is never any need to have a flag to record a transaction if it exceeds some value because JXInsight recognizes the same pattern of interaction and records value distributions for clock, cpu, gc, waiting, blocking and object allocations. Distributions are a much better way at looking at transaction outliners than having a single threshold value that ignores the different transaction patterns and their execution times. Surely you would want to know what are the statistical quartiles for a particular transaction pattern metric.
We do have system properties that place the profiler and resource transaction analyser in dormant mode until execution times for SQL statements exceed a specified value or a SQLException (SQLState=? || SQLErrorCode=?) occurs.
Getting back to pricing. Today their a number of IDE's on the market that once can choose from: Eclipse, NetBeans, JBuilder, and IntelliJ. The first two of these are good "cheap alternatives" (free). The second last one has seen better days and "costs an arm and leg", and the last has a reasonable price with superior productivity features and the elusive "flow". At JInspired we use IntelliJ not because of its price but because it is currently the best IDE. Borland today cannot justify JBuilders pricing and the same can be said for WilyTech, PerformaSure, and Precise. JXInsight is not cheap it is just not over priced like Wily Tech Introscope.
"J2EE tuning, testing, and tracing with JXInsight"
In response to your aside, I recommend Wily because I've used it a lot in the past and the experience as always been good. I agree though that I wish their pricing model was better and more transparent, hence my original post about always keeping an eye out for a better priced tool.
I think my issue with JXInsight is a forest for the trees syndrome. Maybe it is simply because I am far more used to the Introscope UI, but I find it much easier to read and follow then what JXInsight provides. Based on my admittingly brief evaluation, I find JXInsight tries to mash far too much information into it's timeline view making it difficult to read and follow. Trying to analyze data after an hour load test run requires filtering of some sort to make the vast quantity of data intelligible, while I agree that it would be nice to filter on more then transaction times like Introscope does, I still need some sort of filtering capability. I would also love to basically drill down on a single transaction and get the same sort of chart that Introscope provides in it's transaction tracer.
If you compare the screenshots you posted of what Introscope shows you versus JXInsight, it's instantly recognizable what Introscope is trying to convey whereas I find JXInsight timeline graph nowhere near as inituitive.
Anyways I'll keep at it for a few more days as a client I'm working at needs such a tool and Introscope's pricing is out of their means at this time. I certainly think JXInsight is doing a fine job collecting the statistics, I just wish the presentation was more to my liking. And like I said earlier, maybe it is just a case of getting more familiar with it so we'll see what next week brings. I do appreciate your forthright responses.
The transaction paths in the profile mode are sufficient for transaction tracing assuming we are talking about a typical J2EE application with persistence based on the JDBC API. Our tree map visualization in the transactions perspective is a much more compressed form of the transaction tracer.
I have said this so many times.....rarely does a EJB bean method invocation delay a transaction for more than 5 seconds. Do you know how many JVM bytecode operations can be performed in this time window? You would have to have amazing programmers to achieve such a feat and/or loaded hardware. The three most probably causes for such a delay in a component are: (a) external resource interaction (b) JVM GC event, (c) thread monitor contention. None of this is visible in the WT transaction tracer.
Lets be honest here, when you have used such a view the majority of the times you are looking at DB calls and in the case of WT a string literal and nothing more. The benefit in the view is understanding the inter component communication rather than identifying the actual performance bottleneck.
Our timeline analysis mode is used to identify transaction concurrency issues in a production system. Can you please state how today with Wily Introscope do you actually do this important performance analysis work? I would appreciate a simple YES or NO. You know the product more than me. I have only see the green and red circle in a JavaOne demo.
By the way in all JXInsight trace extensions you can specify that the timestamp be appended to the trace stack tree giving you the ability to drill down on a particular transaction instance. The appending of the timestamp ensure s you are looking at a non-aggregate trace tree. Also the timeline does allow for filtering at the process, thread group, thread, and database.
The servlet trace extension can be configured to delimit a servlet trace into distinct trace identifiers.
Variables must be delimited by a comma. The list of possible variables is:
Can you please offer a ball park figure for an installation of Wily Introscope? No one will hold you to it because you do not work for WilyTech.
"J2EE tuning, testing and tracing with JXInsight"
I work for Wily Technology. Frankly William, I think you're comparing apples and oranges.
One of the primary focuses of our company and products is to allow people who aren't Java developers to manage complex Java applications and environments. Hence the dashboards and graphics that your earlier posts criticized as valueless for doing deep data analysis of a transaction. They're just not for doing that.
They are, however, pretty darn handy for keeping an eye on a huge Java environment (think 50, 100, 200, and more servers..) They're also handy for building custom views that let you walk over key metrics from a week, a month, six months, a year ago... Our platform records all the data, 24/7, with 1-2% CPU overhead in production. It isn't a profiler, never has been, never will be.
To respond to a few of your statements and questions...
> The three most probably causes for such a delay in
> a component are: (a) external resource interaction (b) JVM
> GC event, (c) thread monitor contention. None of this is
> visible in the WT transaction tracer.
I haven't seen too many JVMs that take five seconds to do a garbage collect. Threading chokepoints truly caused by poorly designed synchronization are somewhat rare in my experience, but I agree they do happen. I think your cause (a) -- external resource dependencies -- is by far the most common. That being said, only garbage collection is not visible from our Transaction Tracer. It is, however, very visible and actionable from the core part of the tool.
> Lets be honest here, when you have used such a view the
> majority of the times you are looking at DB calls and in
> the case of WT a string literal and nothing more. The
> benefit in the view is understanding the inter component
> communication rather than identifying the actual
> performance bottleneck.
I'm not sure I understand. I assume that by "string literal" you mean the SQL statement and/or time taken to process the result set returned. If this clearly identifies where the bulk of the time was spent in a transaction, how is that not identifying a performance bottleneck. Seems like a good way to let someone who doesn't know a lot about Java or SQL to cut-and-paste the likely source of a problem to someone more technical.
> Our timeline analysis mode is used to identify transaction
> concurrency issues in a production system. Can you please
> state how today with Wily Introscope do you actually do
> this important performance analysis work? I would
> appreciate a simple YES or NO. You know the product more
> than me. I have only see the green and red circle in a
> JavaOne demo.
YES. Actually, you can actually alet on such problems so that your management/ops team can react to them within seconds of the problem showing up. We've had customers with blackberries and such calling into the main company NOC a half hour before any of the legacy "outside Java" tools would have noticed a problem. Apples and oranges.
Also, it seems curious that you would have so much to say about what Wily Introscope can't do if all you've seen is the "green and red circle in a JavaOne demo"...
Wily is not the only company that keeps its pricing information private. I think you'll find that most of the well respected enterprise software companies avoid posting their software pricing on their website. The reasons for this have to do with selling a solution, which involves much more than just software, and selling a product.
Dave Martin (daveDOTmartinATwilytechDOTcom)