I may end up being banded for asking too many questions ;)
Tonight I was testing a web service interface that hit the database. I did some application level performance tuning and have a single invocation working pretty good. Simultaneously the system is processing about 50 inserts per seconds of performance data. So far so good.
Then I started testing with a second invocation instance of the web service interface. The second instance performed very badly. It took almost 15 minutes to process one request whereas the first instance was processing the same request in about 20 seconds over and over. Looking at syscs_diag.lock_table and syscs_diag.transactions does not reveal anything out of the ordinary.
It is almost as if the second instance was "starved". Through jvisualvm I did thread dumps and it seemed the second instance was processing but very slowly.
So a couple of questions:
Is there anything I can use to monitor requests to the database? Turning on tracing etc. produces too much noise because of the 50 inserts/second of the performance data.
Is there "fair" processing among queries. That is, I have to request paths that are essentially identical but one seems to be preferred over the other or at least is seems like it is.