Application Performance in heterogeneous (.NET and Java) environments
Today's mission critical applications run in heterogeneous multi-server environments. Very often a mixture of technologies is used which enables applications to be rapidly created and deployed by utilizing frameworks to avoid writing lots of "infrastructure" code.
Currently the most popular application architectures are .NET and J2EE.- .NET common language runtime (CLR) allows code in multiple languages (C#, VB.NET, ASP.NET) to use a shared set of components, on Windows machines.
- Java virtual machine (JVM) allows Java bytecode to run on any platform with a compliant JVM (UNIX, Linux, Windows and others).
Different applications or components within an application may be integrated using approaches such as SOA or EAI. Microsoft has opened up a channel to non-.NET components by integrating XML and SOAP into their messaging scheme. The diagram below shows at a high level the execution path of a transaction. At a more detailed level this execution path might be made up of lots of method calls, servlets invocations, remote method invocations, database calls or web service calls.
Problem caused by complexity
Various performance problems can occur during this execution path. These problems can lead to a variety of symptoms, some during the transactions execution and some well after. Some examples of these application problems are: memory leaks, too many SQL calls, too many connections, too many remote calls, too much data retrieved, synchronization or serialization waits. The root cause of these problems is also varied. Some examples include: non-optimal use of frameworks, design errors, coding errors, resource contention or inappropriate configuration settings.PurePath - the solution to unravelling the complexity
Traditional tools treat Java and .NET as separate technologies. Several vendors specialize in performance analysis of one or other of these technologies although there are a few out there which can cope with both. In many cases these tools are simply collecting freely available performance metrics about system or server performance and not the performance of the application affecting the end-user. Of all the solutions out there which claim to cover both Java and .NET and are focussed on the application (not the system), only one is able to follow individual transactions across both technologies. That company is dynaTrace with their product, dynaTrace Diagnostics containing their proprietary PurePath technology. The PurePath follows the transaction across multiple .NET and Java servers and provide this information within a single product user interface for diagnosis. The PurePath contains not only the response time of the transaction and of the components involved but also contains context information along the path such as the method parameters, number of object calls, SQL database calls, log messages, exceptions and memory leaks. The PurePath allows for top-down diagnosis (e.g. drill down from user click) or for bottom-up diagnosis (e.g. drill up from an exception in the apptier). It can be use across the entire application life cycle from development, QA, load test and production ensuring all teams have the same detailed information to work with so that problems can be fixed in the earliest stages of development.Further reading
Management and Diagnostics in Distributed Java and .NET Applications| < Prev | Next > |
|---|



