All, > > What do you mean by "swapped out"? >
Idle speculation in the face of a problem that I didn't really understand :-( > > > 69% of all threads are sleeping on a monitor. > > Fully expected, since that's what they do when waiting for work to show up. > > > This might indicate they are waiting for some external > > resource (e.g. database) which is overloaded or not > > available > > You don't need to speculate; > I wasn't speculating - both lines were a quote from thread dump analyzer. > > Using removeAbandoned and logAbandoned might be of interest. > ... > More evidence of a broken app, not returning connections to the pool when > it's done with them. > Our code uses hibernate. We never touch connections directly. We ask hibernate to execute some SQL, and it handles all the get/return connection. Hence I was some what sceptical of this advice. However having followed this user group for a few months now, I get that you know what you are talking about. So I turned on the logging, and sure enough at one point during initialization, we obtained a connection and didn't return it. So thanks for pointing out that setting. Finally managed to track the problem down to nested transactions - apparently spring doesn't support them. Once removed the problem went away Thanks for all your help Chris