Subject Excessive server resource utilization
Author Riaan Nagel
Hi,

One of our Delphi SOAP applications makes uses a Firebird 1.0.3
database. From when the server is started, the Firebird server
process uses an increasing amount of memory and also shows increased
processor usage. This problem continues becoming more and more
serious until the Firebird server has to be restarted when nearly
all system resources have been consumed.

We're having trouble diagnosing the cause of this problem. One of
the most puzzling parts of our findings is that the symptoms do not
seem to be related to transactioning issues: Oldest Interesting
Transaction and Next Transaction are always beautifully in sync. I
would really appreciate some guidance in troubleshooting, since I do
not know what to look for next and haven't been able to reproduce
the behavior on test systems.

Here is some further information: This problem has been found on
both the Win2K and Linux Superserver platforms (for the database
server). We are using dbExpress data access components. The
database configuration has automatic housekeeping disabled (0),
Forced Writes turned off, 4K page size and 16384 pages. Connections
are pooled (on average, around 5 simultaneous connections found).
There is only one UDF registered (strlen from IB_UDF), but it is not
used currently.

Other observable behavior includes: at the start of the working
day, the clients often encounter the dbExpress error "duplicate
transaction id". This seems unlikely, though, since the database
connection component is dropped on the Webmodule (there is,
therefore, only one connection per thread) and the transaction is
started in the OnBeforeDispatch of the WebModule (before handling
the user's request) and committed (if an exception did not
necessitate a rollback in between) in the OnAfterDispatch.

Also, once every two days or so (and always in working hours) the FB
server terminates abnormally, with only "inet_error"s 104 and 110
taking up the rest of the FB log. These errors do not occur
directly before the server terminating, though, and are from the
Linux SS server.

How could I go about finding out what's wrong? Which diagnostic
steps could you suggest? Your help is much appreciated.

Best Regards,
Riaan Nagel