简体   繁体   中英

JDBC Profiler for JBoss / Distributed Applications

I'm trying to eliminate a slow database being the cause of some performance issues for a distributed application I'm supporting. I've done local profiling of various facets of the application and performance monitoring of the server itself, leading me to suspect that the database is at least partially responsible for the poor performance.

Currently I'm using JBoss for the back-end (using a Hibernate / JDBC layer to connect to the database), but I only have source access to some of the code.

I've found Elvyx , but this project seems to have been abandoned in 2008. Is there a newer JDBC profiler available - what's the current 'de facto' standard for profiling a database in a distributed app?

Alternatively, can anyone suggest a better / alternative approach?

Try using YourKit, it supports a reasonable degree of JDBC profiling:

  1. You can view executed SQL after you capture a CPU snapshot.
  2. You can also enable JDBC probes and view multiple things live, such as timings, stack traces, threads, SQL statements and many more, see attached screen shot from my colleague's computer (looks like you'll need to open this image in another browser tab/window to see it full size): 在此输入图像描述

Don't really want this to sound as an ad for YourKit, but get yourself a trial license and give it a go.

I too would recommend AppDynamics . The 'Lite' version was more than adequate for my purposes.

Our Java EE application runs within JBoss and we knew we had performance bottlenecks in certain areas. By quickly and easily (and I do mean easily) installing and spinning up AppDynamics, then running some load through the application, we were able to see straight away exactly where our performance hits were located. On the clean and concise dashboard we were able to drill right down the stack to see which class needed some improvement.

Highly recommended. Definitely check it out. I heat the 'Pro' version is even better.

If you are trying to hunt down (or at least confirm) issues related to a slow database, IMO using the profiling tools provided by the database would be a good starting point.

We had done something along these lines previously by profiling JDBC calls (noting the timings) and comparing them against the time required to execute the same query "on" the database itself. This gave a pretty good idea of how much time was exactly spent by the JDBC in making the db call and getting back the result.

dynaTrace supports SQL call introspection and measures how long each sql call took. The field is called application performance management in general.

Is there a particular Use case which you feel is slow or Is it in general that you feel DB responsiveness is slow.

  • In case its a use case, I would suggest go for tools like AppDynamics or GlassBox.
  • In case its in general, Starting from DB is a better approach.

I am assuming you would have already done the analysis at distributed applications side regarding the connection metrics and at DB server OS side regarding the socket opens and IO permissible.

Arcturus Applicare does support JDBC profiling on JBoss (and other Java app servers). You can view all SQLs with min, max, avg stats aggregated across all servers on you env or on individual servers.

With full profiling enabled, you will be able to see the execution trace for each and every request/transaction processed by the server including SQLs with execution parameters. Making it pretty easy to detect expensive SQLs and where exactly they are been executed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM