Fabrizio Sitzia wrote:
Hello,
I'm developing a dynamic Cocoon webapp that performs a lot of (nested) queries
using the SQLTransformer.
The SQLTransformer performs SELECT operations only, and it is configured to
use a JDBC database connection pool that is managed by Cocoon itself.
Excerpt from cocoon.xconf:
<datasources>
<jdbc logger="core.datasources.db" name="db">
<pool-controller min="5" max="50"/>
...
</jdbc>
</datasources>
At some point, I decided to stress-test the webapp using the 'ab'-tool (Apache
benchmark) to simulate a large number of concurrent requests.
When the number of concurrent requests is heading towards the 'max' number of
pooled database connections, the following occurs:
- The 'ab' benchmark is aborted with a timeout error.
- Using a database monitoring tool, you will notice that the 'max' number of
pooled database connections have been left open.
- Cocoon 'hangs' indefinitely!
Any further requests to the webapp will timeout, and nothing gets written to
the logs (access.log, error.log...)
There are no warnings, nor any error messages in the logs that would indicate
why the hang occured in the first place. Up to the hang, everything appears to
run normally!
That's scary!
It sounds like SQLTransformer naively gets a new connection per query.
This in turn requires that if your page has 4 nested queries then
SQLTransformer is using 4 of your 50 connections. It only takes 13
simultaneous requests to use up all the connections at that rate, and if
all your requests have anywhere between 1 and 3 connections reserved and
are not finished yet, none of the pages will release the connection and
a deadlock occurs. If you have as many as 10 nested queries it is
obvious to see how something like this could occur.
I think the ESQL logicsheet suffered from this many moons ago, but
resolved it by requesting one connection per page. BTW, Microsoft's
feeble driver is limited to one connection per query--so your choice is
to use jTDS or some other company's version.
Nonetheless, it seems like there is a bug in SQLTransformer. Submit a
bug report, and hopefully it can get resolved.
--
Design is a funny word. Some people think design means how it looks.
But of course, if you dig deeper, it's really how it works.
-- Steve Jobs
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]