Subject | multithreading troubles |
---|---|
Author | Roberto Della Pasqua |
Post date | 2003-07-30T09:39:13Z |
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 progdigy.com, 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.
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 progdigy.com, 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.