I have an application that runs slow from time to time. I am trying to create a flight recording to see where the issue is taking place. I would like find methods that are slow, and mainly rule out slow query response in the database tier.
If a DAO method issues a SQL statement, which takes a while to run in the database before the results are returned to the app, which Mission Control view would show this slow behavior? Would it show in the Hot Methods view, since "Hot Methods" are ones that are called frequently and take longer to execute? I am not sure about this, since a database slowness is due to latency where the database tier is having performance issues. Do Hot Methods take into account latencies, or do they only track Java code execution time?
If it does not show on the Hot Methods view, would it show in the "Events" view as maybe a Socket Read latency? Since the database is slow in running the query, the Socket Read may not happen till the result set is ready to be returned to the App.
If none of the above will work, what method should be used to quickly diagnose a slow running database.
Another related question ... after a method is determined "hot" and is optimized, will it continue to show as being "hot" in a later Flight Recording (assuming considerable time is still being spent in executing that method)?
Any information on this is much appreciated!
Are you using WebLogic?
If you are, you can turn on Flight Recorder events for WLS that track database latencies.
See here for more information:
I would have a look in the Events /Graph tab at all the latency related events (Socket read, java blocked, java wait etc,), you can enable only the interesting events in the Event types,
and see if anything looks suspicious.