Subject multithreading troubles
Author Roberto Della Pasqua
Hi to all and sorry to disturb you,

I'm testing the reliability of firebird 1.5 TCP and firebird 1.5 embedded
under stress test multithreaded.

Unfortunately I can't see FB1.5 stable under pressure.

I have made many configurations, as these following:
1) server: a thread pool attach 1 thread with a separate
DBConnection->DBTransaction->DBQuery for EVERY thread
2) server: a thread pool attach 1 thread with a 1 shared common
DBConnection->DBTransaction and a separate DBQuery for EVERY thread (using
sinchro mechanism avoid locking and/or conflicts)
3) server: no thread pool, every db request receive a
connection->transaction->query as (1)
4) server: no thread pool, every db request use a shared DB as (2)

the clients are using:
1) 10 thread test, 1 for every connection
2) 5 thread test, every thread make 2 concurrent connections
3) 4 thread test, every thread make 4 concurrent requests

I'm using Delphi compiler, and the test are made with many "middleware" as
the great Unified Interbase wrapper of, and a test with direct
gds API CALL too.

I have followed the many guides to use firebird/interbase into a
multithreading production system.

The problem is the following:
if the queryes are "slow" then the firebird can open also hundred (I guess)
connections, but if I start a stresstest making queries at high speed rate
then FBclient.dll return a lot of AV exceptions.

FB1.5 don't appear able to sustain high rate operations.

I don't have made the test with interbase 7.

Please let me know if the problem is well knowed and I miss something on my
configuration. These unpredictable effects make FB (embedded version
especially) not reliable for high-end software, further without a
multiprocessor scheduler.

I apologize if I'm on error.

Kind regards to all developers that defects apart, have build a fantastic
database engine.

Roberto Della Pasqua.