Even though the primary focus of Excelsior has always been on programming languages and their implementation – compilers, managed runtimes (JVM), tooling, etc., our Professional Services Department also offers Java consulting and undertakes long-term application development projects. One such project involved a large distributed system for enterprise email filtering and archiving. The system was implemented in Java and works on top of JBoss, with a large number of automatically scheduled tasks.
At some point the system experienced severe performance deterioration during massive import of email messages. However, our ability to diagnose the problem was substantially undermined by the fact that literally thousands of concurrent threads were running when the problem manifested itself. Isolation of the respective code portions into separate applications was not possible either. A really advanced performance analysis tool was needed.
It turned out that YourKit Java Profiler is one such tool. Not only does it support JBoss and integrate well with the Eclipse IDE that we were using, but it also scales really well and provides advanced result analysis features, such as filtering CPU statistics by threads and root methods, hot spots with back traces, and the like, in a convenient manner.
Thanks to YourKit Profiler, we quickly identified a number of inefficiencies in our algorithm, and in its implementation and parallelization. The result of eliminating just the major inefficiencies was a 16x throughput improvement on the most stressful email import test.
The cost of achieving the same result without using such a capable Java profiler could have easily exceeded its license cost by an order of magnitude. As a result, the return on investment was very clearly positive. We strongly recommend YourKit Java Profiler to all performance-conscious developers working on large, highly concurrent systems.
Categories: Tools We Use